Corrupted critical section |
Application Verifier break message
Corrupted critical section
Probable cause
This break is usually generated if a critical section has been initialized more than one time.
This stop is generated if the DebugInfo field of the critical section is pointing to freed memory. Usually another valid DebugInfo structure is found in the active critical section list. Without corruption the two pointers should be identical.
Information displayed by Application Verifier
Parameter1 - Critical section address. Run !cs �s address to get more information.
Parameter2 - Invalid debug information address of this critical section
Parameter3 - Address of the debug info found in the active list
Parameter4 - Initialization stack trace. Run dps address to dump the stack trace.
Description - Corrupted critical section
Additional information
Verifier stop code 0205.
Check the contents of the current call stack when the heap lock was reinitialized (misused).
Frequency of this error is low.
To debug this stop use the following debugger commands:
!cs �s �d parameter3 - dump information about this critical section based on the current contents of the debug info structure found in the active list (this structure is rarely corrupted so usually this information is trustworthy).
!cs �s parameter1 - dump information about this critical section based on the current contents of the critical section structure (the structure is corrupted already so sometimes this information is NOT trustworthy).
dds parameter4 - to identify the code path for initializing this critical section
Dump the critical section at address parameter1 and look for the corruption pattern. With good symbols for ntdll.dl you can use the following commands:
dt ntdll!_RTL_CRITICAL_SECTION LOCK_ADDRESS
dt ntdll!_RTL_CRITICAL_SECTION_DEBUG DEBUG_ADDRESS