Abstract
Data races are notorious bugs in shared-memory concurrent programs since they are hard to reproduce and can lead programs into unintended nondeterministic executions. In case of sequential programs with concurrent signal handlers, unfortunately, existing tools are either inappropriate to be directly used or unpractically high in the overhead of time and/or space to detect at least one data race in every signal handler. This paper presents an efficient and precise on-the-fly technique for detecting at least one data race for every shared memory in every concurrent signal handler. This scheme generates concurrency information, called label, with constant size for the sequential program or every instance of the concurrent signal handlers. A pair of constant-sized labels can be used to determine the logical concurrency between instructions accessing the same shared memory, also in a constant amount of time. An evaluation of our technique reveals the existence of data races in some commonly used programs.
Original language | English |
---|---|
Pages (from-to) | 1317-1337 |
Number of pages | 21 |
Journal | Information |
Volume | 15 |
Issue number | 3 |
State | Published - Mar 2012 |
Keywords
- Data races
- Logical concurrency
- On-the-fly detection
- Sequential programs
- Signal handlers