Thread Validator is an automatic deadlock detector for Windows.
It works with versions of Windows from NT® 4.0 and above, running on the Intel i386 (and compatible) family of processors.
For the purposes of this documentation, we'll call Thread Validator just 'Thread Validator'.
What does Thread Validator do?
Thread Validator can:
•detect deadlocks
•detect potential deadlocks
•find bad lock strategies
When deadlocks, potential deadlocks and bad lock strategies are detected, you can examine the order in which each lock was acquired, complete with a stack trace for each lock.
•perform deadlock postmortem analysis
If your program deadlocks you can attach to it with Thread Validator and ask for a complete stack trace for each thread in the application.
Typically if you try to do this with a debugger, each deadlocked thread just shows one or two stack entries inside NTDLL.DLL and no stack entries for your program, so you don't know which part of your program deadlocked.
Thread Validator uses proprietary stack-walking routines to walk the entire stack, so that a complete stack trace can be displayed for deadlocked threads.
The results are displayed as a variety of comprehensive but easily explorable tabulated and hierarchical formats.
Source code editing is provided with colour coded lines so that you can see at a glance which functions consume more time than others.
The performance overhead is very low and there is no need to recompile or relink the target program.
Thread Validator can also be used as part of a regression testing strategy by Quality Assurance teams.
The user interface is split into tabbed report sections (plus Tutorials), each presenting or analysing locks in the target program at different levels of granularity.
Here's a summary of those sections, each of which is covered in full in The User Interface section.
A high level overview of all threading activity, showing data on threads, locks, contentions, recursions, waits, errors and thread coverage.
|
|
Master tab for three different tabs, each providing a different view of all the locks, waits and threads in the application. |
|
Displays information about the lock wait chains
|
|
This display provides a graphical view of thread activity over time.
|
|
Master tab for four different tabs providing query, thread coverage, object creation data, and object handles. |
|
Logs diagnostic information collected by the stub, including functions that could not be hooked.
|