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.

 

 startup-data-settings

 

 

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.