Publication: Goldilocks: a race and transaction-aware java runtime
Program
KU-Authors
KU Authors
Co-Authors
Qadeer, Shaz
Advisor
Publication Date
2007
Language
English
Type
Conference proceeding
Journal Title
Journal ISSN
Volume Title
Abstract
Data races of, tell result in unexpected and erroneous behavior. In addition 10 causing data corruption and leading programs to crash, the presence of data races complicates the semantics of an execution which might no longer be sequentially consistent. Motivated by these observations, we have designed and implemented a Java runtime system that monitors program executions and throws a DataRaceException when a data race is about to occur. Analogous to other runtime exceptions, the DataRaceException. provides two key benefits. First, accesses causing race conditions are interrupted and handled before they cause errors that may be difficult to diagnose later. Second, if no DataRaceException is thrown in an execution, it is guaranteed to be sequentially consistent. This strong guarantee helps to rule Out many concurrency-related possibilities its the cause of erroneous behavior. When a DataRaceException is caught, the operation, thread, or program causing it call be terminated gracefully. Alternatively, the DataRaceException can serve its a conflict-detection mechanism in Optimistic uses of concurrency. We start with the definition of data-race-free executions in the Java memory model. We generalize this definition to executions that use transactions in addition to locks and volatile variables for synchronization. We present a precise and efficient algorithm for dynamically verifying that an execution is free of data races. This algorithm generalizes the Goldilocks algorithm for data-race detection by handling transactions and providing the ability to distinguish between read and write accesses. We have implemented our algorithm and the DataRaceException in the Kaffe Java Virtual Machine. We have evaluated our system on a variety of publicly available Java benchmarks and it few microbenchmarks that combine lock-based and transaction-based synchronization. Our experiments indicate that our implementation has reasonable overhead. Therefore, we believe that in addition to being a debugging tool, the DataRaceException may be a viable mechanism to enforce the safety of executions of multithreaded Java programs.
Description
Source:
Pldi'07: Proceedings of the 2007 Acm Sigplan Conference on Programming Language Design and Implementation
Publisher:
Assoc Computing Machinery
Keywords:
Subject
Computer science, Software engineering, Computer science, Theory methods