TY - GEN
T1 - Error invariants for concurrent traces
AU - Holzer, Andreas
AU - Schwartz-Narbonne, Daniel
AU - Befrouei, Mitra Tabaei
AU - Weissenbacher, Georg
AU - Wies, Thomas
N1 - Publisher Copyright:
© Springer International Publishing AG 2016.
PY - 2016
Y1 - 2016
N2 - Error invariants are assertions that over-approximate the reachable program states at a given position in an error trace while only capturing states that will still lead to failure if execution of the trace is continued from that position. Such assertions reflect the effect of statements that are involved in the root cause of an error and its propagation, enabling slicing of statements that do not contribute to the error. Previous work on error invariants focused on sequential programs. We generalize error invariants to concurrent traces by augmenting them with additional information about hazards such as write-after-write events, which are often involved in race conditions and atomicity violations. By providing the option to include varying levels of details in error invariants—such as hazards and branching information—our approach allows the programmer to systematically analyze individual aspects of an error trace. We have implemented a hazard-sensitive slicing tool for concurrent traces based on error invariants and evaluated it on benchmarks covering a broad range of real-world concurrency bugs. Hazard-sensitive slicing significantly reduced the length of the considered traces and still maintained the root causes of the concurrency bugs.
AB - Error invariants are assertions that over-approximate the reachable program states at a given position in an error trace while only capturing states that will still lead to failure if execution of the trace is continued from that position. Such assertions reflect the effect of statements that are involved in the root cause of an error and its propagation, enabling slicing of statements that do not contribute to the error. Previous work on error invariants focused on sequential programs. We generalize error invariants to concurrent traces by augmenting them with additional information about hazards such as write-after-write events, which are often involved in race conditions and atomicity violations. By providing the option to include varying levels of details in error invariants—such as hazards and branching information—our approach allows the programmer to systematically analyze individual aspects of an error trace. We have implemented a hazard-sensitive slicing tool for concurrent traces based on error invariants and evaluated it on benchmarks covering a broad range of real-world concurrency bugs. Hazard-sensitive slicing significantly reduced the length of the considered traces and still maintained the root causes of the concurrency bugs.
UR - http://www.scopus.com/inward/record.url?scp=84996487067&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=84996487067&partnerID=8YFLogxK
U2 - 10.1007/978-3-319-48989-6_23
DO - 10.1007/978-3-319-48989-6_23
M3 - Conference contribution
AN - SCOPUS:84996487067
SN - 9783319489889
T3 - Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)
SP - 370
EP - 387
BT - FM 2016
A2 - Heitmeyer, Constance
A2 - Philippou, Anna
A2 - Gnesi, Stefania
A2 - Fitzgerald, John
PB - Springer Verlag
T2 - 21st International Symposium on Formal Methods, FM 2016
Y2 - 9 November 2016 through 11 November 2016
ER -