Search papers, labs, and topics across Lattice.
This paper enhances static data race detection by extending the digest framework to incorporate concurrency constructs and synchronization mechanisms previously overlooked. By introducing support for thread barriers and pthread_once, the authors improve the precision of race detection and provide a more comprehensive abstraction of locksets held by ancestor threads. The evaluation against state-of-the-art tools reveals significant gaps in their support for these features, underscoring the necessity of the proposed enhancements for effective static analysis in concurrent programming.
State-of-the-art static analysis tools miss critical concurrency constructs, leading to undetected data races that could compromise software reliability.
Maintaining an abstraction of the execution history of threads can improve the precision of data race detection in static analysis. Here, we extend the digest framework to handle concurrency constructs and synchronization mechanisms that have been ignored in static race detection. We introduce mechanisms for the commonly used thread barriers, as well as pthread_once, which allows to ensure that an action is executed only once. We also instantiate the framework with an abstraction of locksets held by ancestor threads. We propose a suite of litmus tests to evaluate analyses for these features and compare our implementation to state-of-the-art tools, finding that they lack support.