Compilers: principles, techniques, and tools
Compilers: principles, techniques, and tools
Combining Static Concurrency Analysis with Symbolic Execution
IEEE Transactions on Software Engineering
Automatic detection of nondeterminacy in parallel programs
PADD '88 Proceedings of the 1988 ACM SIGPLAN and SIGOPS workshop on Parallel and distributed debugging
Static analysis of low-level synchronization
PADD '88 Proceedings of the 1988 ACM SIGPLAN and SIGOPS workshop on Parallel and distributed debugging
A mechanism for efficient debugging of parallel programs
PADD '88 Proceedings of the 1988 ACM SIGPLAN and SIGOPS workshop on Parallel and distributed debugging
A general-purpose algorithm for analyzing concurrent programs
Communications of the ACM
On-the-fly detection of access anomalies
PLDI '89 Proceedings of the ACM SIGPLAN 1989 Conference on Programming language design and implementation
Event synchronization analysis for debugging parallel programs
Proceedings of the 1989 ACM/IEEE conference on Supercomputing
An empirical comparison of monitoring algorithms for access anomaly detection
PPOPP '90 Proceedings of the second ACM SIGPLAN symposium on Principles & practice of parallel programming
Improving the accuracy of data race detection
PPOPP '91 Proceedings of the third ACM SIGPLAN symposium on Principles and practice of parallel programming
Race Frontier: reproducing data races in parallel-program debugging
PPOPP '91 Proceedings of the third ACM SIGPLAN symposium on Principles and practice of parallel programming
Parallel program debugging with on-the-fly anomaly detection
Proceedings of the 1990 ACM/IEEE conference on Supercomputing
On-the-fly detection of data races for programs with nested fork-join parallelism
Proceedings of the 1991 ACM/IEEE conference on Supercomputing
Pace condition detection for debugging shared-memory parallel programs
Pace condition detection for debugging shared-memory parallel programs
Compile-time support for efficient data race detection in shared-memory parallel programs
PADD '93 Proceedings of the 1993 ACM/ONR workshop on Parallel and distributed debugging
ACM Transactions on Programming Languages and Systems (TOPLAS)
Time, clocks, and the ordering of events in a distributed system
Communications of the ACM
The structure of the “THE”-multiprogramming system
Communications of the ACM
Detecting Nondeterminacy in Parallel Programs
IEEE Software
Hi-index | 0.00 |
A data race is a situation during the execution of a parallel program where a variable is accessed concurrently by two independent threads and at least one of the accesses is a write operation. Races are a common cause of errors in parallel programs, so detecting them is an essential debugging task.A brute-force strategy used in many postmortem race detection methods involves instrumenting the program to record each inter-thread synchronization and each shared variable access in a log file. Races are then located by analyzing this event log after execution. The problem with this method is the volume of information involved: the time and space required to generate and store events can be prohibitive, even for fairly small programs.This paper describes a technique for using static program analysis to greatly reduce the number and size of events that are generated at run time. We focus on the program instrumentation phase of any post-mortem race detection method rather than actual race detection. The analysis technique involves extending a language grammar with four attributes and adding rules to each grammar production describing the interaction between these attributes. The parse tree is traversed during the compilation phase, and attribute values are computed at each node. These attribute values are then used to instrument the program far more sparsely than the brute-force strategy. A static-log file maintains the list of variables accessed between synchronization points. The result is that far fewer events, in conjuction with the static-log file, suffice to locate races.