{"title":"Using \"must\" and \"may\" summaries to detect data races in Java bytecode that does not rely on the synchronized construct","authors":"David A. W. Clarke, Tim Miller, Antonette Mendoza","doi":"10.1145/2811681.2811694","DOIUrl":null,"url":null,"abstract":"The Java Memory Model (JMM) offers significant guarantees of sequentially consistent behaviour where concurrent access to shared data is regulated by synchronisation. Using the Java synchronized construct incurs high overheads. Using other light-weight protocols for synchronization is much cheaper, though more prone to error. We propose a static analysis approach to detecting race conditions in such Java programs. Our approach analyses the use of shared variables within programs, and summarises these using must and may summaries. It compares these summaries across control-flow paths to determine whether a data race \"must\" exist or \"may\" exist, given some assumptions of program semantics. We evaluate our approach on a set of small programs using a prototype implementation, demonstrating that it is able to locate data races in a variety of different circumstances.","PeriodicalId":292017,"journal":{"name":"Proceedings of the ASWEC 2015 24th Australasian Software Engineering Conference","volume":"1 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2015-09-28","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"2","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"Proceedings of the ASWEC 2015 24th Australasian Software Engineering Conference","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/2811681.2811694","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 2
Abstract
The Java Memory Model (JMM) offers significant guarantees of sequentially consistent behaviour where concurrent access to shared data is regulated by synchronisation. Using the Java synchronized construct incurs high overheads. Using other light-weight protocols for synchronization is much cheaper, though more prone to error. We propose a static analysis approach to detecting race conditions in such Java programs. Our approach analyses the use of shared variables within programs, and summarises these using must and may summaries. It compares these summaries across control-flow paths to determine whether a data race "must" exist or "may" exist, given some assumptions of program semantics. We evaluate our approach on a set of small programs using a prototype implementation, demonstrating that it is able to locate data races in a variety of different circumstances.