Beyond Locks and Thread IDs: Static Data Race Detection Off The Beaten Path (Extended Version)
Daniel Bund, Julian Erhard, Michael Petter, Michael Schwarz
Abstract
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 pthreadonce, 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.
Create a lesson
Related papers
Separating Parsing Expression Grammars using Cell-Probe Lower Bounds
Jungyeom Kim, Jihyeok Park
Fine-grained Causal Reversibility for Asynchronous Channel-based Programming
Shunya Oguchi, Shoji Yuen, Nobuko Yoshida et al.
URIUM: A Programming Language for a Practical Open Course on Compiler Design
Francisco J. Moreno Velo, Almudena García Jurado-Centurión
Cambria: Resource Abstraction for Parametrized Algebraic Effects and Handlers
Jack Liell-Cock, Sam Staton
Tacet: A Language and Type System for Automatic Statistical Validity Accounting
Chiké Abuah
You may implement this later: Cofunctors as partial implementations
Vincent Wang-Maścianica