Please enable JavaScript to view this site.

Thread Validator Help

Navigation: The User Interface > Settings > Global Settings > Data Collection

Startup Data

Scroll Prev Top Next More


The Startup Data tab controls how to manage Critical Sections in DLLs loaded prior to Thread Validator's stub being loaded.





DLLs that are already loaded


When Thread Validator attaches to an already running process or is injected at the start of an application's execution, other DLLs have already been loaded into the target application's address space.


Any of those DLLs that use critical sections will have initialized and may even have entered those critical sections.


Thread Validator monitors the initialization and destruction of critical sections and depends on knowing about their existence prior to usage in order to detect many of its thread errors.


If Thread Validator doesn't see the initialization but then does see the critical section being used, a possible error condition will be raised.


To prevent this you can acquire information about all critical sections when Thread Validator starts the target application (or attaches to it). For consistency, information about all threads in the application can be obtained at the same time.


note Typically, when launching the target application in the normal way, you don't need to acquire all critical sections at startup. However, if attaching to an already running application (using inject or wait for application), you should acquire all critical sections at startup.



Determining threads and critical sections existing at startup


Two options allow Thread Validator to determine all the threads or critical sections that exist when Thread Validator attaches to the target application:


Acquire all threads at startup instructionStep check to determine all the threads that exist


Acquire all critical sections at startup instructionStep check to determine all the critical sections that exist



Critical sections inside DllMain

If your DLLs initialize or destroy critical sections inside DllMain, there are two options for tracking these critical sections.


One method deals with Microsoft DLLs and the other with non-Microsoft DLLs.


Acquire critical sections inside DllMain... instructionStep check to determine all the critical sections initialised when a DLL is loaded using LoadLibrary
       (Microsoft DLLs) instructionStep when a Microsoft DLL is loaded
       (non Microsoft DLLs) instructionStep when a non-Microsoft DLL is loaded



Reset All - Resets all global settings, not just those on the current page.



Reset - Resets the settings on the current page.