{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,1,29]],"date-time":"2026-01-29T22:16:17Z","timestamp":1769724977094,"version":"3.49.0"},"reference-count":68,"publisher":"Association for Computing Machinery (ACM)","issue":"2","license":[{"start":{"date-parts":[[2023,3,31]],"date-time":"2023-03-31T00:00:00Z","timestamp":1680220800000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"funder":[{"DOI":"10.13039\/501100001381","name":"National Research Foundation Singapore","doi-asserted-by":"crossref","award":["IG18-SG102"],"award-info":[{"award-number":["IG18-SG102"]}],"id":[{"id":"10.13039\/501100001381","id-type":"DOI","asserted-by":"crossref"}]}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["ACM Trans. Softw. Eng. Methodol."],"published-print":{"date-parts":[[2023,3,31]]},"abstract":"<jats:p>Implementing bug-free concurrent programs is a challenging task in modern software development. State-of-the-art static analyses find hundreds of concurrency bugs in production code, scaling to large codebases. Yet, fixing these bugs in constantly changing codebases represents a daunting effort for programmers, particularly because a fix in the concurrent code can introduce other bugs in a subtle way.<\/jats:p><jats:p>In this work, we show how to harness compositional static analysis for concurrency bug detection, to enable a new Automated Program Repair (APR) technique for data races in large concurrent Java codebases. The key innovation of our work is an algorithm that translates procedure summaries inferred by the analysis tool for the purpose of bug reporting into small local patches that fix concurrency bugs (without introducing new ones). This synergy makes it possible to extend the virtues of compositional static concurrency analysis to APR, making our approach<jats:italic>effective<\/jats:italic>(it can detect and fix many more bugs than existing tools for data race repair),<jats:italic>scalable<\/jats:italic>(it takes seconds to analyze and suggest fixes for sizeable codebases), and<jats:italic>usable<\/jats:italic>(generally, it does not require annotations from the users and can perform<jats:italic>continuous<\/jats:italic>automated repair). Our study, conducted on popular open-source projects, has confirmed that our tool automatically produces concurrency fixes similar to those proposed by the developers in the past.<\/jats:p>","DOI":"10.1145\/3546942","type":"journal-article","created":{"date-parts":[[2022,7,7]],"date-time":"2022-07-07T11:32:14Z","timestamp":1657193534000},"page":"1-33","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":9,"title":["<scp>Hippodrome<\/scp>: Data Race Repair Using Static Analysis Summaries"],"prefix":"10.1145","volume":"32","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-9089-9392","authenticated-orcid":false,"given":"Andreea","family":"Costea","sequence":"first","affiliation":[{"name":"National University of Singapore, Singapore"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-8415-5410","authenticated-orcid":false,"given":"Abhishek","family":"Tiwari","sequence":"additional","affiliation":[{"name":"National University of Singapore, Singapore"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-7475-0881","authenticated-orcid":false,"given":"Sigmund","family":"Chianasta","sequence":"additional","affiliation":[{"name":"National University of Singapore, Singapore"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-4403-7265","authenticated-orcid":false,"given":"Kishore","family":"R","sequence":"additional","affiliation":[{"name":"National University of Singapore, Singapore"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-7127-1137","authenticated-orcid":false,"given":"Abhik","family":"Roychoudhury","sequence":"additional","affiliation":[{"name":"National University of Singapore, Singapore"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-4250-5392","authenticated-orcid":false,"given":"Ilya","family":"Sergey","sequence":"additional","affiliation":[{"name":"National University of Singapore, Singapore"}]}],"member":"320","published-online":{"date-parts":[[2023,3,31]]},"reference":[{"key":"e_1_3_3_2_2","unstructured":"2011. The Pecan Benchmarks. Retrieved July 15 2022 from https:\/\/www.cse.ust.hk\/prism\/pecan\/#Experiment."},{"key":"e_1_3_3_3_2","unstructured":"2016. JaConTeBe Object Biography. Retrieved July 15 2022 from http:\/\/sir.csc.ncsu.edu\/portal\/bios\/concurrency.php."},{"key":"e_1_3_3_4_2","unstructured":"2018. The PFix Benchmarks. Retrieved July 15 2022 from https:\/\/github.com\/PFixConcurrency\/FixExamples."},{"key":"e_1_3_3_5_2","unstructured":"2021. Hippodrome (Docker Image). Retrieved July 15 2022 from https:\/\/hub.docker.com\/u\/hippodrome."},{"key":"e_1_3_3_6_2","unstructured":"2021. Hippodrome (Main Repository). Retrieved July 15 2022 from https:\/\/github.com\/verse-lab\/hippodrome."},{"key":"e_1_3_3_7_2","volume-title":"HVC","author":"Agarwal Rahul","year":"2006","unstructured":"Rahul Agarwal, Liqiang Wang, and Scott D. Stoller. 2006. Detecting potential deadlocks with static analysis and run-time monitoring. In HVC. Springer, Berlin, Heidelberg."},{"key":"e_1_3_3_8_2","doi-asserted-by":"publisher","DOI":"10.1109\/MS.2008.130"},{"key":"e_1_3_3_9_2","first-page":"613","volume-title":"ESEC \/ SIGSOFT FSE","author":"Bavishi Rohan","year":"2019","unstructured":"Rohan Bavishi, Hiroaki Yoshida, and Mukul R. Prasad. 2019. Phoenix: Automated data-driven synthesis of repairs for static analysis violations. In ESEC \/ SIGSOFT FSE. ACM, 613\u2013624."},{"key":"e_1_3_3_10_2","doi-asserted-by":"publisher","DOI":"10.1145\/1646353.1646374"},{"key":"e_1_3_3_11_2","doi-asserted-by":"publisher","DOI":"10.1145\/3276514"},{"key":"e_1_3_3_12_2","doi-asserted-by":"publisher","DOI":"10.1109\/ASE51524.2021.9678572"},{"key":"e_1_3_3_13_2","doi-asserted-by":"publisher","DOI":"10.1145\/3106237.3106239"},{"key":"e_1_3_3_14_2","doi-asserted-by":"crossref","first-page":"289","DOI":"10.1145\/1480881.1480917","volume-title":"POPL","author":"Calcagno Cristiano","year":"2009","unstructured":"Cristiano Calcagno, Dino Distefano, Peter W. O\u2019Hearn, and Hongseok Yang. 2009. Compositional shape analysis by means of bi-abduction. In POPL. ACM, 289\u2013300."},{"key":"e_1_3_3_15_2","unstructured":"Andy Chou. 2014. From the Trenches: Static Analysis in Industry. Invited keynote talk at POPL\u201914 . Retrieved July 15 2022 from https:\/\/popl.mpi-sws.org\/2014\/andy.pdf."},{"key":"e_1_3_3_16_2","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-03359-9_2"},{"key":"e_1_3_3_17_2","series-title":"LNCS","first-page":"141","volume-title":"ESOP","author":"Costea Andreea","year":"2020","unstructured":"Andreea Costea, Amy Zhu, Nadia Polikarpova, and Ilya Sergey. 2020. Concise read-only specifications for better synthesis of programs with pointers. In ESOP(LNCS, Vol. 12075). Springer, 141\u2013168."},{"key":"e_1_3_3_18_2","doi-asserted-by":"publisher","DOI":"10.1145\/3338112"},{"key":"e_1_3_3_19_2","doi-asserted-by":"crossref","first-page":"237","DOI":"10.1145\/945445.945468","volume-title":"SOSP","author":"Engler Dawson R.","year":"2003","unstructured":"Dawson R. Engler and Ken Ashcraft. 2003. RacerX: Effective, static detection of race conditions and deadlocks. In SOSP. ACM, 237\u2013252."},{"key":"e_1_3_3_20_2","first-page":"121","volume-title":"PLDI","author":"Flanagan Cormac","year":"2009","unstructured":"Cormac Flanagan and Stephen N. Freund. 2009. FastTrack: Efficient and precise dynamic race detection. In PLDI. ACM, 121\u2013133."},{"key":"e_1_3_3_21_2","first-page":"110","volume-title":"PLDI","author":"Flanagan Cormac","year":"2005","unstructured":"Cormac Flanagan and Patrice Godefroid. 2005. Dynamic partial-order reduction for model checking software. In PLDI. ACM, 110\u2013121."},{"key":"e_1_3_3_22_2","doi-asserted-by":"publisher","DOI":"10.1145\/1040305.1040315"},{"key":"e_1_3_3_23_2","doi-asserted-by":"publisher","DOI":"10.3390\/app10228005"},{"key":"e_1_3_3_24_2","volume-title":"Java Concurrency in Practice","author":"Goetz Brian","year":"2006","unstructured":"Brian Goetz, Joshua Bloch, Joseph Bowbeer, Doug Lea, David Holmes, and Tim Peierls. 2006. Java Concurrency in Practice. Addison-Wesley Longman, Amsterdam."},{"key":"e_1_3_3_25_2","doi-asserted-by":"publisher","DOI":"10.1145\/3290370"},{"key":"e_1_3_3_26_2","doi-asserted-by":"publisher","DOI":"10.1145\/3318162"},{"key":"e_1_3_3_27_2","doi-asserted-by":"publisher","DOI":"10.5555\/1734069"},{"key":"e_1_3_3_28_2","first-page":"337","volume-title":"PLDI","author":"Huang Jeff","year":"2014","unstructured":"Jeff Huang, Patrick O\u2019Neil Meredith, and Grigore Rosu. 2014. Maximal sound predictive race detection with control flow abstraction. In PLDI. ACM, 337\u2013348."},{"key":"e_1_3_3_29_2","doi-asserted-by":"publisher","DOI":"10.1145\/2001420.2001438"},{"key":"e_1_3_3_30_2","first-page":"737","volume-title":"OOPSLA","author":"Huang Jeff","year":"2012","unstructured":"Jeff Huang and Charles Zhang. 2012. Execution privatization for scheduler-oblivious concurrent programs. In OOPSLA. ACM, 737\u2013752."},{"key":"e_1_3_3_31_2","first-page":"41","volume-title":"SCAM","author":"Hutchins DeLesley","year":"2014","unstructured":"DeLesley Hutchins, Aaron Ballman, and Dean Sutherland. 2014. C\/C++ thread safety analysis. In SCAM. IEEE, 41\u201346."},{"key":"e_1_3_3_32_2","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-20398-5_4"},{"key":"e_1_3_3_33_2","first-page":"389","volume-title":"PLDI","author":"Jin Guoliang","year":"2011","unstructured":"Guoliang Jin, Linhai Song, Wei Zhang, Shan Lu, and Ben Liblit. 2011. Automated atomicity-violation fixing. In PLDI. ACM, 389\u2013400."},{"key":"e_1_3_3_34_2","first-page":"221","volume-title":"OSDI","author":"Jin Guoliang","year":"2012","unstructured":"Guoliang Jin, Wei Zhang, and Dongdong Deng. 2012. Automated concurrency-bug fixing. In OSDI. USENIX Association, 221\u2013236."},{"key":"e_1_3_3_35_2","first-page":"244","volume-title":"POPL","author":"Jones Neil D.","year":"1979","unstructured":"Neil D. Jones and Steven S. Muchnick. 1979. Flow analysis and optimization of LISP-like structures. In POPL. ACM, 244\u2013256."},{"key":"e_1_3_3_36_2","first-page":"165","volume-title":"ISSTA","author":"Khoshnood Sepideh","year":"2015","unstructured":"Sepideh Khoshnood, Markus Kusano, and Chao Wang. 2015. ConcBugAssist: Constraint solving for diagnosis and repair of concurrency bugs. In ISSTA. ACM, 165\u2013176."},{"key":"e_1_3_3_37_2","doi-asserted-by":"publisher","DOI":"10.1145\/1273647.1273658"},{"key":"e_1_3_3_38_2","first-page":"101","volume-title":"A Concurrency Testing Tool and Its Plug-Ins for Dynamic Analysis and Runtime Healing","author":"K\u0159ena Bohuslav","year":"2009","unstructured":"Bohuslav K\u0159ena, Zden\u011bk Letko, Yarden Nir-Buchbinder, Rachel Tzoref-Brill, Shmuel Ur, and Tom\u00e1\u0161 Vojnar. 2009. A Concurrency Testing Tool and Its Plug-Ins for Dynamic Analysis and Runtime Healing. Springer-Verlag, 101\u2013114."},{"key":"e_1_3_3_39_2","first-page":"589","volume-title":"ASE","author":"Lin Huarui","year":"2018","unstructured":"Huarui Lin, Zan Wang, Shuang Liu, Jun Sun, Dongdi Zhang, and Guangning Wei. 2018. PFix: Fixing concurrency bugs based on memory access patterns. In ASE. ACM, 589\u2013600."},{"key":"e_1_3_3_40_2","doi-asserted-by":"publisher","DOI":"10.1109\/ASE.2015.87"},{"key":"e_1_3_3_41_2","first-page":"725","volume-title":"PLDI","author":"Liu Bozhen","year":"2021","unstructured":"Bozhen Liu, Peiming Liu, Yanze Li, Chia-Che Tsai, Dilma Da Silva, and Jeff Huang. 2021. When threads meet events: Efficient and precise static race detection with origins. In PLDI. ACM, 725\u2013739."},{"key":"e_1_3_3_42_2","first-page":"715","volume-title":"FSE","author":"Liu Haopeng","year":"2016","unstructured":"Haopeng Liu, Yuxi Chen, and Shan Lu. 2016. Understanding and generating high quality patches for concurrency bugs. In FSE. ACM, 715\u2013726."},{"key":"e_1_3_3_43_2","first-page":"318","volume-title":"FSE","author":"Liu Peng","year":"2014","unstructured":"Peng Liu, Omer Tripp, and Charles Zhang. 2014. Grail: Context-aware fixing of concurrency bugs. In FSE. ACM, 318\u2013329."},{"key":"e_1_3_3_44_2","first-page":"299","volume-title":"ICSE","author":"Liu Peng","year":"2012","unstructured":"Peng Liu and Charles Zhang. 2012. Axis: Automatically fixing atomicity violations through solving control constraints. In ICSE. IEEE, 299\u2013309."},{"key":"e_1_3_3_45_2","first-page":"133","volume-title":"OOPSLA","author":"Logozzo Francesco","year":"2012","unstructured":"Francesco Logozzo and Thomas Ball. 2012. Modular and verified automatic program repair. In OOPSLA. ACM, 133\u2013146."},{"key":"e_1_3_3_46_2","first-page":"298","volume-title":"POPL","author":"Long Fan","year":"2016","unstructured":"Fan Long and Martin Rinard. 2016. Automatic patch generation by learning correct code. In POPL. ACM, 298\u2013312."},{"key":"e_1_3_3_47_2","first-page":"329","volume-title":"ASPLOS","author":"Lu Shan","year":"2008","unstructured":"Shan Lu, Soyeon Park, Eunsoo Seo, and Yuanyuan Zhou. 2008. Learning from mistakes: A comprehensive study on real world concurrency bug characteristics. In ASPLOS. ACM, 329\u2013339."},{"key":"e_1_3_3_48_2","first-page":"277","volume-title":"ISCA","author":"Lucia Brandon","year":"2008","unstructured":"Brandon Lucia, Joseph Devietti, Karin Strauss, and Luis Ceze. 2008. Atom-Aid: Detecting and surviving atomicity violations. In ISCA. IEEE, 277\u2013288."},{"key":"e_1_3_3_49_2","first-page":"389","volume-title":"ESEC \/ SIGSOFT FSE","author":"Mechtaev Sergey","year":"2018","unstructured":"Sergey Mechtaev, Alberto Griggio, Alessandro Cimatti, and Abhik Roychoudhury. 2018. Symbolic execution with existential second-order constraints. In ESEC \/ SIGSOFT FSE. ACM, 389\u2013399."},{"key":"e_1_3_3_50_2","first-page":"691","volume-title":"ICSE","author":"Mechtaev Sergey","year":"2016","unstructured":"Sergey Mechtaev, Jooyong Yi, and Abhik Roychoudhury. 2016. Angelix: Scalable multiline program patch synthesis via symbolic analysis. In ICSE. 691\u2013701."},{"key":"e_1_3_3_51_2","first-page":"41","volume-title":"VMCAI","author":"M\u00fcller Peter","year":"2016","unstructured":"Peter M\u00fcller, Malte Schwerhoff, and Alexander J. Summers. 2016. Viper: A verification infrastructure for permission-based reasoning. In VMCAI, Barbara Jobstmann and K. Rustan M. Leino (Eds.). Springer, Berlin,41\u201362."},{"key":"e_1_3_3_52_2","doi-asserted-by":"crossref","first-page":"308","DOI":"10.1145\/1133981.1134018","volume-title":"PLDI","author":"Naik Mayur","year":"2006","unstructured":"Mayur Naik, Alex Aiken, and John Whaley. 2006. Effective static race detection for Java. In PLDI. ACM, 308\u2013319."},{"key":"e_1_3_3_53_2","first-page":"386","volume-title":"ICSE","author":"Naik Mayur","year":"2009","unstructured":"Mayur Naik, Chang-Seo Park, Koushik Sen, and David Gay. 2009. Effective static deadlock detection. In ICSE. IEEE, 386\u2013396."},{"key":"e_1_3_3_54_2","first-page":"772","volume-title":"ICSE","author":"Nguyen Hoang Duong Thien","year":"2013","unstructured":"Hoang Duong Thien Nguyen, Dawei Qi, Abhik Roychoudhury, and Satish Chandra. 2013. SemFix: Program repair via semantic analysis. In ICSE. IEEE Computer Society, 772\u2013781."},{"key":"e_1_3_3_55_2","series-title":"LNCS","first-page":"376","volume-title":"VMCAI","author":"Nguyen Thanh-Toan","year":"2021","unstructured":"Thanh-Toan Nguyen, Quang-Trung Ta, Ilya Sergey, and Wei-Ngan Chin. 2021. Automated repair of heap-manipulating programs using deductive synthesis. In VMCAI(LNCS, Vol. 12597). Springer, 376\u2013400."},{"key":"e_1_3_3_56_2","first-page":"51","volume-title":"ICST","author":"Park Sangmin","year":"2012","unstructured":"Sangmin Park, Richard W. Vuduc, and Mary Jean Harrold. 2012. A unified approach for localizing non-deadlock concurrency bugs. In ICST. IEEE, 51\u201360."},{"key":"e_1_3_3_57_2","doi-asserted-by":"publisher","DOI":"10.1145\/3290385"},{"key":"e_1_3_3_58_2","doi-asserted-by":"publisher","DOI":"10.1145\/3188720"},{"key":"e_1_3_3_59_2","first-page":"175","volume-title":"PLDI","author":"Samak Malavika","year":"2015","unstructured":"Malavika Samak, Murali Krishna Ramanathan, and Suresh Jagannathan. 2015. Synthesizing racy tests. In PLDI. ACM, 175\u2013185."},{"key":"e_1_3_3_60_2","doi-asserted-by":"publisher","DOI":"10.1145\/1065944.1065956"},{"key":"e_1_3_3_61_2","doi-asserted-by":"publisher","DOI":"10.1145\/1791194.1791203"},{"key":"e_1_3_3_62_2","doi-asserted-by":"publisher","DOI":"10.1145\/2737924.2737964"},{"key":"e_1_3_3_63_2","doi-asserted-by":"crossref","first-page":"39","DOI":"10.1007\/978-3-662-53413-7_3","volume-title":"Static Analysis","author":"Spoto Fausto","year":"2016","unstructured":"Fausto Spoto. 2016. The Julia static analyzer for Java. In Static Analysis. Springer, Berlin, 39\u201357."},{"key":"e_1_3_3_64_2","doi-asserted-by":"publisher","DOI":"10.1109\/ICST.2019.00034"},{"key":"e_1_3_3_65_2","first-page":"151","volume-title":"ICSE","author":"Tonder Rijnard van","year":"2018","unstructured":"Rijnard van Tonder and Claire Le Goues. 2018. Static automated program repair for heap properties. In ICSE. ACM, 151\u2013162."},{"key":"e_1_3_3_66_2","doi-asserted-by":"crossref","first-page":"97","DOI":"10.1145\/1007512.1007526","volume-title":"ISSTA","author":"Visser Willem","year":"2004","unstructured":"Willem Visser, Corina S. Pasareanu, and Sarfraz Khurshid. 2004. Test input generation with Java PathFinder. In ISSTA. ACM, 97\u2013107."},{"key":"e_1_3_3_67_2","doi-asserted-by":"publisher","DOI":"10.5381\/jot.2004.3.6.a5"},{"key":"e_1_3_3_68_2","first-page":"364","volume-title":"ICSE","author":"Weimer Westley","year":"2009","unstructured":"Westley Weimer, ThanhVu Nguyen, Claire Le Goues, and Stephanie Forrest. 2009. Automatically finding patches using genetic programming. In ICSE. IEEE, 364\u2013374."},{"key":"e_1_3_3_69_2","doi-asserted-by":"publisher","DOI":"10.1007\/11531142_26"}],"container-title":["ACM Transactions on Software Engineering and Methodology"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3546942","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3546942","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T19:00:42Z","timestamp":1750186842000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3546942"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2023,3,31]]},"references-count":68,"journal-issue":{"issue":"2","published-print":{"date-parts":[[2023,3,31]]}},"alternative-id":["10.1145\/3546942"],"URL":"https:\/\/doi.org\/10.1145\/3546942","relation":{},"ISSN":["1049-331X","1557-7392"],"issn-type":[{"value":"1049-331X","type":"print"},{"value":"1557-7392","type":"electronic"}],"subject":[],"published":{"date-parts":[[2023,3,31]]},"assertion":[{"value":"2021-08-03","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2022-06-04","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2023-03-31","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}