Analyzing the Impact of Change in Multi-threaded Programs
We introduce a technique for debugging multi-threaded C
programs and analyzing the impact of source code changes,
and its implementation in the prototype tool \Direct.
Our approach uses a combination of source code instrumentation and
runtime management.
The source code along with a test harness is instrumented to monitor
Operating System (OS) and user defined function calls.
\Direct tracks all concurrency control primitives and, optionally,
data from the program.
\Direct maintains an abstract global state that combines
information from every thread, including the sequence of function
calls and concurrency primitives executed.
The runtime manager can insert delays, provoking thread interleavings
that may exhibit bugs that may be difficult to reach otherwise.
The runtime manager collects an approximation of the reachable
state space and uses this approximation to assess the impact of change
in a new version of the program.
In Proceedings of the 13th International Conference on Fundamental Approaches to Software Engineering (FASE'2010), vol. 6013 of Lecture Notes in Computer Science, pp293-307. Springer-Verlag, 2010.