{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,9,12]],"date-time":"2026-09-12T02:20:58Z","timestamp":1789179658259,"version":"build-2803163510"},"reference-count":53,"publisher":"Association for Computing Machinery (ACM)","issue":"3","license":[{"start":{"date-parts":[[2023,4,26]],"date-time":"2023-04-26T00:00:00Z","timestamp":1682467200000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}],"funder":[{"name":"Independent Research Fund Denmark DFF","award":["8022-00326B DFF"],"award-info":[{"award-number":["8022-00326B DFF"]}]},{"DOI":"10.13039\/100000001","name":"National Science Foundation NSF","doi-asserted-by":"crossref","award":["CCF-1750116 NSF"],"award-info":[{"award-number":["CCF-1750116 NSF"]}],"id":[{"id":"10.13039\/100000001","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,7,31]]},"abstract":"<jats:p>The Linux Kernel is a world-class operating system controlling most of our computing infrastructure: mobile devices, Internet routers and services, and most of the supercomputers. Linux is also an example of low-level software with no comprehensive regression test suite (for good reasons). The kernel\u2019s tremendous societal importance imposes strict stability and correctness requirements. These properties make Linux a challenging and relevant target for static automated program repair (APR).<\/jats:p>\n          <jats:p>\n            Over the past decade, a significant progress has been made in dynamic APR. However, dynamic APR techniques do not translate naturally to systems without tests. We present a static APR technique addressing sequential\n            <jats:italic>locking API misuse<\/jats:italic>\n            bugs in the Linux Kernel. We attack the key challenge of static APR, namely, the lack of detailed program specification, by combining static analysis with machine learning to complement the information presented by the static analyzer. In experiments on historical real-world bugs in the kernel, we were able to automatically re-produce or propose equivalent patches in 85% of the human-made patches, and automatically rank them among the top three candidates for 64% of the cases and among the top five for 74%.\n          <\/jats:p>","DOI":"10.1145\/3548684","type":"journal-article","created":{"date-parts":[[2022,8,22]],"date-time":"2022-08-22T11:44:42Z","timestamp":1661168682000},"page":"1-28","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":4,"title":["Patching Locking Bugs Statically with Crayons"],"prefix":"10.1145","volume":"32","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-1987-8361","authenticated-orcid":false,"given":"Juan","family":"Cruz-Carlon","sequence":"first","affiliation":[{"name":"IT University of Copenhagen, Copenhagen, Denmark"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-4776-883X","authenticated-orcid":false,"given":"Mahsa","family":"Varshosaz","sequence":"additional","affiliation":[{"name":"IT University of Copenhagen, Copenhagen, Denmark"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-3931-060X","authenticated-orcid":false,"given":"Claire","family":"Le Goues","sequence":"additional","affiliation":[{"name":"Carnegie Mellon University School of Computer Science, Pittsburgh, PA, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-0532-2685","authenticated-orcid":false,"given":"Andrzej","family":"Wasowski","sequence":"additional","affiliation":[{"name":"IT University of Copenhagen, Copenhagen, Denmark"}],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"320","published-online":{"date-parts":[[2023,4,26]]},"reference":[{"key":"e_1_3_2_2_2","doi-asserted-by":"publisher","DOI":"10.1145\/3318162"},{"key":"e_1_3_2_3_2","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2011.104"},{"key":"e_1_3_2_4_2","doi-asserted-by":"publisher","DOI":"10.1145\/2568225.2568254"},{"key":"e_1_3_2_5_2","first-page":"45","volume-title":"Proceedings of the 7th International Workshop on Empirical Software Engineering in Practice (IWESEP\u201916)","author":"Kou R.","year":"2016","unstructured":"R. Kou, Y. Higo, and S. Kusumoto. 2016. A capable crossover technique on automatic program repair. In Proceedings of the 7th International Workshop on Empirical Software Engineering in Practice (IWESEP\u201916). 45\u201350."},{"key":"e_1_3_2_6_2","first-page":"273","volume-title":"Proceedings of the IEEE 7th International Conference on Software Testing, Verification, and Validation","author":"Assiri F. Y.","year":"2014","unstructured":"F. Y. Assiri and J. M. Bieman. 2014. An assessment of the quality of automated program operator repair. In Proceedings of the IEEE 7th International Conference on Software Testing, Verification, and Validation. 273\u2013282."},{"key":"e_1_3_2_7_2","doi-asserted-by":"publisher","DOI":"10.1145\/2330163.2330333"},{"key":"e_1_3_2_8_2","doi-asserted-by":"publisher","DOI":"10.1145\/3180155.3180233"},{"key":"e_1_3_2_9_2","volume-title":"Proceedings of the Conference on Principles of Programming Languages (POPL\u201916)","author":"Long Fan","year":"2016","unstructured":"Fan Long and Martin Rinard. 2016. Automatic patch generation by learning correct code. In Proceedings of the Conference on Principles of Programming Languages (POPL\u201916). 298\u201331."},{"key":"e_1_3_2_10_2","doi-asserted-by":"publisher","DOI":"10.1145\/2884781.2884807"},{"key":"e_1_3_2_11_2","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2016.2560811"},{"key":"e_1_3_2_12_2","first-page":"532","volume-title":"Proceedings of the Joint Meeting of the European Software Engineering Conference and the Symposium on the Foundations of Software Engineering (ESEC\/FSE\u201915)","author":"Smith Edward K.","year":"2015","unstructured":"Edward K. Smith, Earl T. Barr, Claire Le Goues, and Yuriy Brun. 2015. Is the cure worse than the disease? Overfitting in automated program repair. In Proceedings of the Joint Meeting of the European Software Engineering Conference and the Symposium on the Foundations of Software Engineering (ESEC\/FSE\u201915). 532\u2013543."},{"key":"e_1_3_2_13_2","doi-asserted-by":"publisher","DOI":"10.1145\/1889997.1890000"},{"key":"e_1_3_2_14_2","doi-asserted-by":"publisher","DOI":"10.1145\/3180155.3180250"},{"key":"e_1_3_2_15_2","doi-asserted-by":"publisher","DOI":"10.1145\/3360585"},{"key":"e_1_3_2_16_2","doi-asserted-by":"publisher","DOI":"10.1145\/2635868.2635898"},{"key":"e_1_3_2_17_2","volume-title":"Proceedings of the International Conference on Verification, Model Checking, and Abstract Interpretation (VMCAI\u201917)","author":"Abal Iago","year":"2017","unstructured":"Iago Abal, Claus Brabrand, and Andrzej W\u0105sowski. 2017. Effective bug finding in C programs with shape and effect abstractions. In Proceedings of the International Conference on Verification, Model Checking, and Abstract Interpretation (VMCAI\u201917), Ahmed Bouajjani and David Monniaux (Eds.)."},{"key":"e_1_3_2_18_2","doi-asserted-by":"publisher","DOI":"10.1109\/ICSE.2015.101"},{"key":"e_1_3_2_19_2","first-page":"29","volume-title":"The Meaning and Use of the Area Under a Receiver Operating Characteristic Curve.","author":"Hanley James A.","year":"1982","unstructured":"James A. Hanley and Barbara J. McNeil. 1982. The Meaning and Use of the Area Under a Receiver Operating Characteristic Curve. Vol. 143. 29\u201336."},{"key":"e_1_3_2_20_2","doi-asserted-by":"publisher","DOI":"10.1145\/2635868.2635881"},{"key":"e_1_3_2_21_2","doi-asserted-by":"publisher","DOI":"10.1145\/3106237.3106309"},{"key":"e_1_3_2_22_2","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2019.2944914"},{"key":"e_1_3_2_23_2","doi-asserted-by":"publisher","DOI":"10.1145\/3067695.3082517"},{"key":"e_1_3_2_24_2","doi-asserted-by":"publisher","DOI":"10.1109\/ICSE-SEIP.2019.00039"},{"key":"e_1_3_2_25_2","first-page":"255","volume-title":"Proceedings of the USENIX Annual Technical Conference (USENIX ATC\u201919)","author":"Bai Jia-Ju","year":"2019","unstructured":"Jia-Ju Bai, Julia Lawall, Qiu-Liang Chen, and Shi-Min Hu. 2019. Effective static analysis of concurrency \\(\\lbrace\\) use-after-free \\(\\rbrace\\) bugs in linux device drivers. In Proceedings of the USENIX Annual Technical Conference (USENIX ATC\u201919). 255\u2013268."},{"key":"e_1_3_2_26_2","doi-asserted-by":"publisher","DOI":"10.1145\/2970276.2970347"},{"key":"e_1_3_2_27_2","doi-asserted-by":"publisher","DOI":"10.1109\/ICSE.2013.6606613"},{"key":"e_1_3_2_28_2","doi-asserted-by":"publisher","DOI":"10.1109\/SCAM.2012.28"},{"key":"e_1_3_2_29_2","doi-asserted-by":"publisher","DOI":"10.1016\/j.jss.2020.110671"},{"key":"e_1_3_2_30_2","first-page":"314","volume-title":"Proceedings of the 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering","author":"Koyuncu Anil","year":"2019","unstructured":"Anil Koyuncu, Kui Liu, Tegawend\u00e9 F. Bissyand\u00e9, Dongsun Kim, Martin Monperrus, Jacques Klein, and Yves Le Traon. 2019. iFixR: Bug report driven program repair. In Proceedings of the 27th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering. 314\u2013325."},{"key":"e_1_3_2_31_2","unstructured":"Reudismam Rolim Gustavo Soares Rohit Gheyi and Loris D\u2019Antoni. 2018. Learning quick fixes from code repositories. Retrieved from http:\/\/arxiv.org\/abs\/1803.03806."},{"key":"e_1_3_2_32_2","doi-asserted-by":"publisher","DOI":"10.1109\/SANER.2019.8667970"},{"key":"e_1_3_2_33_2","doi-asserted-by":"crossref","first-page":"3","DOI":"10.1007\/978-3-319-17524-9_1","volume-title":"Proceedings of the Conference on NASA Formal Methods (NFM\u201915)","author":"Calcagno Cristiano","year":"2015","unstructured":"Cristiano Calcagno, Dino Distefano, J\u00e9r\u00e9my Dubreil, Dominik Gabi, Pieter Hooimeijer, Martino Luca, Peter W. O\u2019Hearn, Irene Papakonstantinou, Jim Purbrick, and Dulma Rodriguez. 2015. Moving fast with software verification. In Proceedings of the Conference on NASA Formal Methods (NFM\u201915). 3\u201311."},{"key":"e_1_3_2_34_2","doi-asserted-by":"publisher","DOI":"10.1145\/3338906.3338952"},{"key":"e_1_3_2_35_2","doi-asserted-by":"publisher","DOI":"10.1145\/1052883.1052895"},{"key":"e_1_3_2_36_2","doi-asserted-by":"publisher","DOI":"10.1609\/aaai.v31i1.10742"},{"key":"e_1_3_2_37_2","doi-asserted-by":"publisher","DOI":"10.1007\/11513988_23"},{"key":"e_1_3_2_38_2","first-page":"268","volume-title":"Static Analysis","author":"Samanta Roopsha","year":"2014","unstructured":"Roopsha Samanta, Oswaldo Olivo, and E. Allen Emerson. 2014. Cost-aware automatic program repair. In Static Analysis, Markus M\u00fcller-Olm and Helmut Seidl (Eds.). Springer International Publishing, Cham, 268\u2013284."},{"key":"e_1_3_2_39_2","first-page":"173","volume-title":"Proceedings of the Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS\u201911)","author":"Gopinath Divya","year":"2011","unstructured":"Divya Gopinath, Muhammad Zubair Malik, and Sarfraz Khurshid. 2011. Specification-based program repair using SAT. In Proceedings of the Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS\u201911). 173\u2013188."},{"key":"e_1_3_2_40_2","doi-asserted-by":"crossref","first-page":"217","DOI":"10.1007\/978-3-319-21668-3_13","volume-title":"Proceedings of the Conference on Computer Aided Verification (CAV\u201915)","author":"Kneuss Etienne","year":"2015","unstructured":"Etienne Kneuss, Manos Koukoutos, and Viktor Kuncak. 2015. Deductive program repair. In Proceedings of the Conference on Computer Aided Verification (CAV\u201915). 217\u2013233."},{"key":"e_1_3_2_41_2","doi-asserted-by":"crossref","first-page":"358","DOI":"10.1007\/11817963_33","article-title":"Repair of Boolean programs with an application to C","author":"Griesmayer Andreas","year":"2006","unstructured":"Andreas Griesmayer, Roderick Bloem, and Byron Cook. 2006. Repair of Boolean programs with an application to C. In Proceedings of the Conference on Computer Aided Verification (CAV\u201906). 358\u2013371.","journal-title":"Proceedings of the Conference on Computer Aided Verification (CAV\u201906)"},{"key":"e_1_3_2_42_2","first-page":"133","volume-title":"Proceedings of the Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA\u201912)","author":"Logozzo Francesco","year":"2012","unstructured":"Francesco Logozzo and Thomas Ball. 2012. Modular and verified automatic program repair. In Proceedings of the Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA\u201912). 133\u2013146."},{"key":"e_1_3_2_43_2","first-page":"389","volume-title":"Proceedings of the Conference on Programming Language Design and Implementation (PLDI\u201911)","author":"Jin Guoliang","year":"2011","unstructured":"Guoliang Jin, Linhai Song, Wei Zhang, Shan Lu, and Ben Liblit. 2011. Automated atomicity-violation fixing. In Proceedings of the Conference on Programming Language Design and Implementation (PLDI\u201911). ACM, 389\u2013400."},{"key":"e_1_3_2_44_2","doi-asserted-by":"publisher","DOI":"10.5555\/2337223.2337259"},{"key":"e_1_3_2_45_2","doi-asserted-by":"publisher","DOI":"10.1145\/3238147.3238198"},{"key":"e_1_3_2_46_2","doi-asserted-by":"publisher","DOI":"10.1145\/2950290.2950309"},{"key":"e_1_3_2_47_2","doi-asserted-by":"publisher","DOI":"10.1145\/3106237.3106239"},{"key":"e_1_3_2_48_2","doi-asserted-by":"publisher","DOI":"10.1145\/2884781.2884819"},{"key":"e_1_3_2_49_2","doi-asserted-by":"publisher","DOI":"10.1145\/2771783.2771798"},{"key":"e_1_3_2_50_2","doi-asserted-by":"publisher","DOI":"10.1145\/2610384.2610398"},{"key":"e_1_3_2_51_2","doi-asserted-by":"publisher","DOI":"10.1145\/1755913.1755945"},{"key":"e_1_3_2_52_2","doi-asserted-by":"crossref","first-page":"104","DOI":"10.1007\/978-3-540-89247-2_7","volume-title":"Runtime Verification","author":"Nir-Buchbinder Yarden","year":"2008","unstructured":"Yarden Nir-Buchbinder, Rachel Tzoref, and Shmuel Ur. 2008. Deadlocks: From exhibiting to healing. In Runtime Verification, Martin Leucker (Ed.). Springer, Berlin, 104\u2013118."},{"key":"e_1_3_2_53_2","doi-asserted-by":"publisher","DOI":"10.5555\/3155562.3155654"},{"key":"e_1_3_2_54_2","first-page":"281","volume-title":"Proceedings of the 8th USENIX Conference on Operating Systems Design and Implementation (OSDI\u201908)","author":"Wang Yin","year":"2008","unstructured":"Yin Wang, Terence Kelly, Manjunath Kudlur, St\u00e9phane Lafortune, and Scott Mahlke. 2008. Gadara: Dynamic deadlock avoidance for multithreaded programs. In Proceedings of the 8th USENIX Conference on Operating Systems Design and Implementation (OSDI\u201908). USENIX Association, 281\u2013294."}],"container-title":["ACM Transactions on Software Engineering and Methodology"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3548684","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3548684","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T17:50:52Z","timestamp":1750182652000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3548684"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2023,4,26]]},"references-count":53,"journal-issue":{"issue":"3","published-print":{"date-parts":[[2023,7,31]]}},"alternative-id":["10.1145\/3548684"],"URL":"https:\/\/doi.org\/10.1145\/3548684","relation":{},"ISSN":["1049-331X","1557-7392"],"issn-type":[{"value":"1049-331X","type":"print"},{"value":"1557-7392","type":"electronic"}],"subject":[],"published":{"date-parts":[[2023,4,26]]},"assertion":[{"value":"2021-09-29","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2022-06-24","order":1,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2023-04-26","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}