Publication:
Goldilocks: a race and transaction-aware java runtime

dc.contributor.coauthorQadeer, Shaz
dc.contributor.departmentN/A
dc.contributor.departmentDepartment of Computer Engineering
dc.contributor.kuauthorElmas, Tayfun
dc.contributor.kuauthorTaşıran, Serdar
dc.contributor.kuprofilePhD Student
dc.contributor.kuprofileFaculty Member
dc.contributor.otherDepartment of Computer Engineering
dc.contributor.schoolcollegeinstituteGraduate School of Sciences and Engineering
dc.contributor.schoolcollegeinstituteCollege of Engineering
dc.contributor.yokidN/A
dc.contributor.yokidN/A
dc.date.accessioned2024-11-09T23:03:43Z
dc.date.issued2007
dc.description.abstractData 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.
dc.description.indexedbyWoS
dc.description.indexedbyScopus
dc.description.openaccessNO
dc.description.publisherscopeInternational
dc.identifier.doi10.1145/1250734.1250762
dc.identifier.isbn978-1-59593-633-2
dc.identifier.scopus2-s2.0-35448953399
dc.identifier.urihttp://dx.doi.org/10.1145/1250734.1250762
dc.identifier.urihttps://hdl.handle.net/20.500.14288/8513
dc.identifier.wos266485500023
dc.keywordsData-race detection
dc.keywordsJava runtime
dc.keywordsRuntime monitoring
dc.keywordsSoftware transactions
dc.languageEnglish
dc.publisherAssoc Computing Machinery
dc.sourcePldi'07: Proceedings of the 2007 Acm Sigplan Conference on Programming Language Design and Implementation
dc.subjectComputer science
dc.subjectSoftware engineering
dc.subjectComputer science
dc.subjectTheory methods
dc.titleGoldilocks: a race and transaction-aware java runtime
dc.typeConference proceeding
dspace.entity.typePublication
local.contributor.authoridN/A
local.contributor.authoridN/A
local.contributor.kuauthorElmas, Tayfun
local.contributor.kuauthorTaşıran, Serdar
relation.isOrgUnitOfPublication89352e43-bf09-4ef4-82f6-6f9d0174ebae
relation.isOrgUnitOfPublication.latestForDiscovery89352e43-bf09-4ef4-82f6-6f9d0174ebae

Files