{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,7,16]],"date-time":"2026-07-16T20:17:11Z","timestamp":1784233031090,"version":"3.55.0"},"reference-count":76,"publisher":"Association for Computing Machinery (ACM)","issue":"OOPSLA2","license":[{"start":{"date-parts":[[2025,10,9]],"date-time":"2025-10-09T00:00:00Z","timestamp":1759968000000},"content-version":"vor","delay-in-days":0,"URL":"http:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Proc. ACM Program. Lang."],"published-print":{"date-parts":[[2025,10,9]]},"abstract":"<jats:p>Concurrency bugs are hard to discover and reproduce, even in well-synchronized programs that are free of data races. Thankfully, prior work on controlled concurrency testing (CCT) has developed sophisticated algorithms\u2014such as partial-order based and selectively uniform sampling\u2014to effectively search over the space of thread interleavings. Unfortunately, in practice, these techniques cannot easily be applied to real-world Java programs due to the difficulties of controlling concurrency in the presence of the managed runtime and complex synchronization primitives. So, mature Java projects that make heavy use of concurrency still rely on naive repeated stress testing in a loop. In this paper, we take a first-principles approach for elucidating the requirements and design space to enable CCT on arbitrary real-world JVM applications. We identify practical challenges with classical design choices described in prior work\u2014such as concurrency mocking, VM hacking, and OS-level scheduling\u2014that affect bug-finding effectiveness and\/or the scope of target applications that can be easily supported.<\/jats:p>\n                  <jats:p>\n                    Based on these insights, we present\n                    <jats:italic toggle=\"yes\">Fray,<\/jats:italic>\n                    a new platform for performing push-button concurrency testing (beyond data races) of JVM programs. The key design principle behind Fray is to orchestrate thread interleavings without replacing existing concurrency primitives, using a concurrency control mechanism called\n                    <jats:italic toggle=\"yes\">shadow locking<\/jats:italic>\n                    for faithfully expressing the set of all possible program behaviors. With full concurrency control, Fray can test applications using a number of search algorithms from a simple random walk to sophisticated techniques like PCT, POS, and SURW. In an empirical evaluation on 53 benchmark programs with known bugs (SCTBench and JaConTeBe), Fray with random walk finds 70% more bugs than JPF and 77% more bugs than\n                    <jats:sc>rr<\/jats:sc>\n                    \u2019s chaos mode. We also demonstrate Fray\u2019s push-button applicability on 2,664 tests from Apache Kafka, Lucene, and Google Guava. In these mature projects, Fray successfully discovered 18 real-world concurrency bugs that can cause 371 of the existing tests to fail under specific interleavings.\n                  <\/jats:p>\n                  <jats:p>We believe that Fray serves as a bridge between classical academic research and industrial practice\u2014 empowering developers with advanced concurrency testing algorithms that demonstrably uncover more bugs, while simultaneously providing researchers a platform for large-scale evaluation of search techniques.<\/jats:p>","DOI":"10.1145\/3764119","type":"journal-article","created":{"date-parts":[[2025,10,9]],"date-time":"2025-10-09T08:51:31Z","timestamp":1759999891000},"page":"4035-4063","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":1,"title":["Fray: An Efficient General-Purpose Concurrency Testing Platform for the JVM"],"prefix":"10.1145","volume":"9","author":[{"ORCID":"https:\/\/orcid.org\/0000-0003-3189-7079","authenticated-orcid":false,"given":"Ao","family":"Li","sequence":"first","affiliation":[{"name":"Carnegie Mellon University, Pittsburgh, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-2817-5123","authenticated-orcid":false,"given":"Byeongjee","family":"Kang","sequence":"additional","affiliation":[{"name":"Carnegie Mellon University, Pittsburgh, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-7093-910X","authenticated-orcid":false,"given":"Vasudev","family":"Vikram","sequence":"additional","affiliation":[{"name":"Carnegie Mellon University, Pittsburgh, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-9178-9363","authenticated-orcid":false,"given":"Isabella","family":"Laybourn","sequence":"additional","affiliation":[{"name":"Carnegie Mellon University, Pittsbrugh, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0009-0003-1489-2425","authenticated-orcid":false,"given":"Samvid","family":"Dharanikota","sequence":"additional","affiliation":[{"name":"Carnegie Mellon University, Pittsburgh, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-6697-0219","authenticated-orcid":false,"given":"Shrey","family":"Tiwari","sequence":"additional","affiliation":[{"name":"Carnegie Mellon University, Pittsburgh, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-4939-033X","authenticated-orcid":false,"given":"Rohan","family":"Padhye","sequence":"additional","affiliation":[{"name":"Carnegie Mellon University, Pittsbrugh, USA"}],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"320","published-online":{"date-parts":[[2025,10,9]]},"reference":[{"key":"e_1_3_1_2_2","unstructured":"AWS Labs. 2024. Shuttle: a library for testing concurrent Rust code. https:\/\/github.com\/awslabs\/shuttle"},{"key":"e_1_3_1_3_2","unstructured":"Baeldung. 2024. Testing Multi-Threaded Code in Java. https:\/\/www.baeldung.com\/java-testing-multithreaded. May 2024 version archived at https:\/\/web.archive.org\/web\/20240515050437\/https:\/\/www.baeldung.com\/java-testing-multithreaded."},{"key":"e_1_3_1_4_2","doi-asserted-by":"crossref","unstructured":"Jonathan Bell Owolabi Legunsen Michael Hilton Lamyaa Eloussi Tifany Yung and Darko Marinov. 2018. DeFlaker: Automatically detecting flaky tests. In Proceedings of the 40th international conference on software engineering. 433\u2013444.https:\/\/doi.org\/10.1145\/3180155.3180164","DOI":"10.1145\/3180155.3180164"},{"key":"e_1_3_1_5_2","doi-asserted-by":"publisher","DOI":"10.1145\/1735970.1736040"},{"key":"e_1_3_1_6_2","unstructured":"Hongxu Chen Shengjian Guo Yinxing Xue Yulei Sui Cen Zhang Yuekang Li Haijun Wang and Yang Liu. 2020. MUZZ: Thread-aware grey-box fuzzing for effective bug hunting in multithreaded programs. In 29th USENIX Security Symposium (USENIX Security 20). 2325\u201323422325\u20132342."},{"key":"e_1_3_1_7_2","doi-asserted-by":"crossref","unstructured":"Jong-Deok Choi and Harini Srinivasan. 1998. Deterministic replay of Java multithreaded applications. In Proceedings of the SIGMETRICS symposium on Parallel and distributed tools. 48\u201359. https:\/\/doi.org\/10.1145\/281035.281041","DOI":"10.1145\/281035.281041"},{"key":"e_1_3_1_8_2","doi-asserted-by":"crossref","unstructured":"Lucas Cordeiro and Bernd Fischer. 2011. Verifying multi-threaded software using SMT-based context-bounded model checking. In Proceedings of the 33rd International Conference on Software Engineering. 331\u2013340. https:\/\/doi.org\/10.1145\/1985793.1985839","DOI":"10.1145\/1985793.1985839"},{"key":"e_1_3_1_9_2","doi-asserted-by":"crossref","unstructured":"Pantazis Deligiannis Aditya Senthilnathan Fahad Nayyar Chris Lovett and Akash Lal. 2023. Industrial-Strength Controlled Concurrency Testing for Programs with Coyote. In International Conference on Tools and Algorithms for the Construction and Analysis of Systems. Springer 433\u2013452. https:\/\/doi.org\/10.1007\/978-3-031-30820-8_26","DOI":"10.1007\/978-3-031-30820-8_26"},{"key":"e_1_3_1_10_2","unstructured":"Fray Developers. 2025. cmu-pasta\/fray-benchmark: Fray Artifact Release. https:\/\/doi.org\/10.5281\/zenodo.15724289"},{"key":"e_1_3_1_11_2","unstructured":"Kafka Developers. 2025. Kafka Jira Issue Tracker with Keyword Concurrency and Flaky. https:\/\/issues.apache.org\/jira\/browse\/KAFKA-18845?jql=project%20%3D%20KAFKA%20AND%20text%20~%20%22flaky% 22%20and%20text%20~%20%22concurrency%22%200RDER%20BY%20created%20DESC."},{"key":"e_1_3_1_12_2","doi-asserted-by":"crossref","unstructured":"Michael Emmi Shaz Qadeer and Zvonimir Rakamari\u0107. 2011. Delay-bounded scheduling. In Proceedings of the 38th annual ACM SIGPLAN-SIGACT symposium on principles of programming languages. 411\u2013422. https:\/\/doi.org\/10.1145\/1925844.1926432","DOI":"10.1145\/1926385.1926432"},{"key":"e_1_3_1_13_2","doi-asserted-by":"publisher","DOI":"10.1145\/945445.945468"},{"key":"e_1_3_1_14_2","doi-asserted-by":"publisher","DOI":"10.1145\/1542476.1542490"},{"key":"e_1_3_1_15_2","unstructured":"Apache Foundation. 2023. Tomcat: JasperLoader. https:\/\/github.com\/apache\/tomcat\/blob\/11.0.0\/java\/org\/apache\/jasper\/servlet\/JasperLoader.java#L80"},{"key":"e_1_3_1_16_2","unstructured":"Apache Foundation. 2024. Apache Lucene. https:\/\/lucene.apache.org\/"},{"key":"e_1_3_1_17_2","unstructured":"Apache Foundation. 2024. KAFKA STREAMS. https:\/\/kafka.apache.org\/documentation\/streams\/"},{"key":"e_1_3_1_18_2","unstructured":"GitHub. 2022. The top programming languages. https:\/\/octoverse.github.com\/2022\/top-programming-languages"},{"key":"e_1_3_1_19_2","doi-asserted-by":"publisher","DOI":"10.1145\/3600006.3613148"},{"key":"e_1_3_1_20_2","unstructured":"Google. 2024. Guava: Google Core Libraries for Java. https:\/\/github.com\/google\/guava"},{"key":"e_1_3_1_21_2","unstructured":"Google. 2024. This is Weaver a framework for writing multi-threaded Unit Tests in Java. https:\/\/github.com\/google\/thread-weaver"},{"key":"e_1_3_1_22_2","unstructured":"James Gosling Bill Joy Guy Steele Gilad Bracha Alex Buckley Daniel Smith and Gavin Bierman. 2023. The Java\u00ae Language Specification\u2014Java SE 21 Edition. Oracle America Inc. Chapter 17.4 (Memory Model) 761\u2013776."},{"key":"e_1_3_1_23_2","unstructured":"James Gosling Bill Joy Guy Steele Gilad Bracha Alex Buckley Daniel Smith and Gavin Bierman. 2023. The Java\u00ae Language Specification\u2014Java SE 21 Edition. Oracle America Inc. Chapter 17 (Threads and Locks) 755\u07dd782."},{"key":"e_1_3_1_24_2","doi-asserted-by":"publisher","DOI":"10.1145\/78969.78972"},{"key":"e_1_3_1_25_2","doi-asserted-by":"crossref","unstructured":"Jeff Huang Peng Liu and Charles Zhang. 2010. LEAP: Lightweight deterministic multi-processor replay of concurrent Java programs. In Proceedings of the eighteenth ACM SIGSOFT international symposium on Foundations of software engineering. 207\u2013216. https:\/\/doi.org\/10.1145\/1882291.1882323","DOI":"10.1145\/1882291.1882323"},{"key":"e_1_3_1_26_2","doi-asserted-by":"publisher","DOI":"10.1145\/2025113.2025145"},{"key":"e_1_3_1_27_2","doi-asserted-by":"publisher","DOI":"10.1145\/3694715.3695944"},{"key":"e_1_3_1_28_2","doi-asserted-by":"publisher","DOI":"10.1109\/SP.2019.00017"},{"key":"e_1_3_1_29_2","unstructured":"Jetbrains. 2025. MonitorTransformers.kt. https:\/\/github.com\/JetBrains\/lincheck\/blob\/eb9d56e96a732cbe69e7f303924da4849e320efd\/jvm-agent\/src\/main\/org\/jetbrains\/kotlinx\/lincheck\/transformation\/transformers\/MonitorTransformers.kt#L36"},{"key":"e_1_3_1_30_2","doi-asserted-by":"crossref","unstructured":"Yanyan Jiang Tianxiao Gu Chang Xu Xiaoxing Ma and Jian Lu. 2014. CARE: Cache guided deterministic replay for concurrent Java programs. In Proceedings of the 36th International Conference on Software Engineering. 457-467. https:\/\/doi.org\/10.1145\/2568225.2568236","DOI":"10.1145\/2568225.2568236"},{"key":"e_1_3_1_31_2","doi-asserted-by":"crossref","unstructured":"Zu-Ming Jiang Jia-Ju Bai Kangjie Lu and Shi-Min Hu. 2022. Context-sensitive and directional concurrency fuzzing for data-race detection. In Network and Distributed Systems Security (NDSS) Symposium 2022.","DOI":"10.14722\/ndss.2022.24296"},{"key":"e_1_3_1_32_2","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-02658-4_54"},{"key":"e_1_3_1_33_2","doi-asserted-by":"crossref","unstructured":"Pallavi Joshi Chang-Seo Park Koushik Sen and Mayur Naik. 2009. A randomized dynamic program analysis technique for detecting real deadlocks. ACM Sigplan Notices. https:\/\/doi.org\/10.1145\/1543135.1542489","DOI":"10.1145\/1542476.1542489"},{"key":"e_1_3_1_34_2","doi-asserted-by":"crossref","unstructured":"Nikita Koval Alexander Fedorov Maria Sokolova Dmitry Tsitelov and Dan Alistarh. 2023. Lincheck: A practical framework for testing concurrent data structures on JVM. In International Conference on Computer Aided Verification. https:\/\/doi.org\/10.1007\/978-3-031-37706-8_8","DOI":"10.1007\/978-3-031-37706-8_8"},{"key":"e_1_3_1_35_2","unstructured":"Elastic Search Labs. 2025. Concurrency bugs in Lucene: How to fix optimistic concurrency failures. https:\/\/www.elastic.co\/search-labs\/blog\/concurrency-bugs-lucene-debugging"},{"key":"e_1_3_1_36_2","doi-asserted-by":"crossref","unstructured":"Wing Lam Reed Oei August Shi Darko Marinov and Tao Xie. 2019. iDFlakies: A framework for detecting and partially classifying flaky tests. In 2019 12th ieee conference on software testing validation and verification (icst). IEEE 312\u2013322. https:\/\/doi.org\/10.1109\/ICST.2019.00038","DOI":"10.1109\/ICST.2019.00038"},{"key":"e_1_3_1_37_2","unstructured":"Ao Li. 2025. Fray Debugger Plugin for Jetbrains IDEs. https:\/\/plugins.jetbrains.com\/plugin\/26623-fray-debugger"},{"key":"e_1_3_1_38_2","doi-asserted-by":"crossref","unstructured":"Ao Li Byeongjee Kang Vasudev Vikram Isabella Laybourn Samvid Dharanikota Shrey Tiwari and Rohan Padhye. 2025. Fray: An Efficient General-Purpose Concurrency Testing Platform for the JVM (Extended Version). arXiv:2501.12618 [cs.PL]. https:\/\/arxiv.org\/abs\/2501.12618","DOI":"10.1145\/3764119"},{"key":"e_1_3_1_39_2","doi-asserted-by":"crossref","unstructured":"Guangpu Li Shan Lu Madanlal Musuvathi Suman Nath and Rohan Padhye. 2019. Efficient scalable thread-safetyviolation detection: finding thousands of concurrency bugs during testing. In Proceedings of the 27th ACM Symposium on Operating Systems Principles. 162\u2013180. https:\/\/doi.org\/10.1145\/3341301.3359638","DOI":"10.1145\/3341301.3359638"},{"key":"e_1_3_1_40_2","doi-asserted-by":"crossref","unstructured":"Ziyi Lin Darko Marinov Hao Zhong Yuting Chen and Jianjun Zhao. 2015. JaConTeBe: A benchmark suite of real-world Java concurrency bugs. In 2015 30th IEEE\/ACM International Conference on Automated Software Engineering (ASE). IEEE 178\u2013189. https:\/\/doi.org\/10.1109\/ASE.2015.87","DOI":"10.1109\/ASE.2015.87"},{"key":"e_1_3_1_41_2","doi-asserted-by":"publisher","DOI":"10.1145\/3133873"},{"key":"e_1_3_1_42_2","doi-asserted-by":"crossref","unstructured":"Tongping Liu Charlie Curtsinger and Emery D Berger. 2011. Dthreads: efficient deterministic multithreading. In Proceedings of the Twenty-Third ACM Symposium on Operating Systems Principles. 327-336. https:\/\/doi.org\/10.1145\/2043556.2043587","DOI":"10.1145\/2043556.2043587"},{"key":"e_1_3_1_43_2","doi-asserted-by":"crossref","unstructured":"Shan Lu Soyeon Park Eunsoo Seo and Yuanyuan Zhou. 2008. Learning from mistakes: a comprehensive study on real world concurrency bug characteristics. In Proceedings of the 13th international conference on Architectural support for programming languages and operating systems. https:\/\/doi.org\/10.1145\/1346281.1346323","DOI":"10.1145\/1346281.1346323"},{"issue":"6","key":"e_1_3_1_44_2","doi-asserted-by":"crossref","first-page":"1060","DOI":"10.1109\/TPDS.2011.254","article-title":"Detecting concurrency bugs from the perspectives of synchronization intentions","volume":"23","author":"Lu Shan","year":"2011","unstructured":"Shan Lu, Soyeon Park, and Yuanyuan Zhou. 2011. Detecting concurrency bugs from the perspectives of synchronization intentions. IEEE Transactions on Parallel and Distributed Systems 23, 6 (2011), 1060\u20131072. https:\/\/doi.org\/10.1109\/TPDS.2011.254","journal-title":"IEEE Transactions on Parallel and Distributed Systems"},{"key":"e_1_3_1_45_2","doi-asserted-by":"publisher","DOI":"10.1145\/1273442.1250785"},{"key":"e_1_3_1_46_2","article-title":"Finding and Reproducing Heisenbugs in Concurrent Programs.","volume":"8","author":"Musuvathi Madanlal","year":"2008","unstructured":"Madanlal Musuvathi, Shaz Qadeer, Thomas Ball, Gerard Basler, Piramanayagam Arumuga Nainar, and Iulian Neamtiu. 2008. Finding and Reproducing Heisenbugs in Concurrent Programs.. OSDI, Vol.8.","journal-title":"OSDI"},{"key":"e_1_3_1_47_2","unstructured":"Robert O\u2019Callahan. 2016. Introducing rr Chaos Mode. https:\/\/robert.ocallahan.org\/2016\/02\/introducing-rr-chaos-mode.html"},{"key":"e_1_3_1_48_2","doi-asserted-by":"crossref","unstructured":"Robert O\u2019Callahan and Jong-Deok Choi. 2003. Hybrid dynamic data race detection. In Proceedings of the ninth ACM SIGPLAN symposium on Principles and practice of parallel programming. 167\u2013178. https:\/\/doi.org\/10.1145\/781498.781528","DOI":"10.1145\/781498.781528"},{"key":"e_1_3_1_49_2","unstructured":"Robert O\u2019Callahan Chris Jones Nathan Froyd Kyle Huey Albert Noll and Nimrod Partush. 2017. Engineering record and replay for deployability. In 2017 USENIX Annual Technical Conference (USENIXATC 17). 377\u2013389."},{"key":"e_1_3_1_50_2","doi-asserted-by":"crossref","unstructured":"Marek Olszewski Jason Ansel and Saman Amarasinghe. 2009. Kendo: efficient deterministic multithreading in software. In Proceedings of the 14th international conference on Architectural support for programming languages and operating systems. 97\u2013108.","DOI":"10.1145\/1508244.1508256"},{"key":"e_1_3_1_51_2","unstructured":"OpenJDK. 2024. Java Concurrency Stress tests. https:\/\/openjdk.org\/projects\/code-tools\/jcstress\/. Source repository at https:\/\/github.com\/openjdk\/jcstress."},{"key":"e_1_3_1_52_2","unstructured":"Oracle. 2009. Class Loader API Modifications for Deadlock Fix. https:\/\/openjdk.org\/groups\/core-libs\/ClassLoaderProposal.html"},{"key":"e_1_3_1_53_2","unstructured":"Oracle. 2023. Class java.lang.Thread. https:\/\/docs.oracle.com\/en\/java\/javase\/21\/docs\/api\/java.base\/java\/lang\/Thread.html#join(long)"},{"key":"e_1_3_1_54_2","unstructured":"Oracle. 2023. LockSupport.parkNanos(). https:\/\/docs.oracle.com\/en\/java\/javase\/21\/docs\/api\/java.base\/java\/util\/concurrent\/locks\/LockSupport.html#parkNanos(long)"},{"key":"e_1_3_1_55_2","unstructured":"Oracle. 2023. Package java.util.concurrent. https:\/\/docs.oracle.com\/en\/java\/javase\/21\/docs\/api\/java.base\/java\/util\/concurrent\/package-summary.html"},{"key":"e_1_3_1_56_2","unstructured":"Oracle. 2023. Package java.util.concurrent.atomic. https:\/\/docs.oracle.com\/en\/java\/javase\/21\/docs\/api\/java.base\/java\/util\/concurrent\/atomic\/package-summary.html"},{"key":"e_1_3_1_57_2","doi-asserted-by":"crossref","unstructured":"Chang-Seo Park and Koushik Sen. 2008. Randomized active atomicity violation detection in concurrent programs. In Proceedings of the 16th ACM SIGSOFT International Symposium on Foundations of software engineering. 135\u2013145. https:\/\/doi.org\/10.1145\/1453101.1453121","DOI":"10.1145\/1453101.1453121"},{"key":"e_1_3_1_58_2","doi-asserted-by":"publisher","DOI":"10.1145\/3476105"},{"key":"e_1_3_1_59_2","doi-asserted-by":"publisher","DOI":"10.1145\/3689769"},{"key":"e_1_3_1_60_2","doi-asserted-by":"crossref","unstructured":"Koushik Sen. 2007. Effective random testing of concurrent programs. In Proceedings of the 22nd IEEE\/ACM international conference on Automated software engineering. 323\u2013332. https:\/\/doi.org\/10.1145\/1321631.1321679","DOI":"10.1145\/1321631.1321679"},{"key":"e_1_3_1_61_2","doi-asserted-by":"crossref","unstructured":"Koushik Sen. 2008. Race directed random testing of concurrent programs. In Proceedings of the 29th ACM SIGPLAN Conference on Programming Language Design and Implementation. 11\u201321. https:\/\/doi.org\/10.1145\/1379022.1375584","DOI":"10.1145\/1375581.1375584"},{"key":"e_1_3_1_62_2","unstructured":"Koushik Sen. 2015. CalFuzzer deterministic scheduler. https:\/\/github.com\/ksen007\/calfuzzer\/blob\/4cablbcl62fafl7e950027937071a3cl9c318a9b\/src\/javato\/activetesting\/deterministicscheduler\/ApproxDeterministicScheduler.java#L195"},{"key":"e_1_3_1_63_2","doi-asserted-by":"crossref","unstructured":"Konstantin Serebryany and Timur Iskhodzhanov. 2009. ThreadSanitizer: data race detection in practice. In Proceedings of the workshop on binary instrumentation and applications. 62-71. https:\/\/doi.org\/10.1145\/1791194.1791203","DOI":"10.1145\/1791194.1791203"},{"key":"e_1_3_1_64_2","doi-asserted-by":"crossref","unstructured":"Denini Silva Leopoldo Teixeira and Marcelo d\u2019Amorim. 2020. Shake it!detecting flaky tests caused by concurrency with shaker. In 2020 IEEE International Conference on Software Maintenance and Evolution. https:\/\/doi.org\/10.1109\/ICSME46990.2020.00037","DOI":"10.1109\/ICSME46990.2020.00037"},{"key":"e_1_3_1_65_2","unstructured":"Stack Overflow. 2023. Developer survey\u2013Most popular technologies: Programming scripting and markup languages. https:\/\/survey.stackoverflow.co\/2023\/#technology-most-popular-technologies"},{"key":"e_1_3_1_66_2","unstructured":"Paul Thomson. 2016. Practical systematic concurrency testing for concurrent and distributed software.. Ph. D. Dissertation. Imperial College London."},{"key":"e_1_3_1_67_2","doi-asserted-by":"publisher","DOI":"10.1145\/2858651"},{"key":"e_1_3_1_68_2","unstructured":"TIOBE Software. 2024. TIOBE Index. https:\/\/www.tiobe.com\/tiobe-index\/. July 2024 Index archived at https:\/\/web.archive.org\/web\/20240709010804\/https:\/\/www.tiobe.com\/tiobe-index\/."},{"key":"e_1_3_1_69_2","unstructured":"Tokio. 2024. Loom: Concurrency permutation testing tool for Rust. https:\/\/github.com\/tokio-rs\/loom"},{"key":"e_1_3_1_70_2","doi-asserted-by":"publisher","DOI":"10.1023\/A:1022920129859"},{"key":"e_1_3_1_71_2","doi-asserted-by":"crossref","unstructured":"Cheng Wen Mengda He Bohao Wu Zhiwu Xu and Shengchao Qin. 2022. Controlled concurrency testing via periodical scheduling. In Proceedings of the 44th International Conference on Software Engineering (Pittsburgh Pennsylvania) (ICSE \u07e322). 13 pages https:\/\/doi.org\/10.1145\/3510003.3510178","DOI":"10.1145\/3510003.3510178"},{"key":"e_1_3_1_72_2","doi-asserted-by":"crossref","unstructured":"Dylan Wolff Zheng Shi Gregory J Duck Umang Mathur and Abhik Roychoudhury. 2024. Greybox Fuzzing for Concurrency Testing. In Proceedings of the 29th ACM International Conference on Architectural Support for Programming Languages and Operating Systems Volume 2. 482\u2013498. https:\/\/doi.org\/10.1145\/3620665.3640389","DOI":"10.1145\/3620665.3640389"},{"key":"e_1_3_1_73_2","unstructured":"Zhemin Yang Min Yang Lvcai Xu Haibo Chen and Binyu Zang. 2011. ORDER: Object centric deterministic replay for Java. In 2011 USENIX Annual Technical Conference."},{"key":"e_1_3_1_74_2","doi-asserted-by":"crossref","unstructured":"Jie Yu Satish Narayanasamy Cristiano Pereira and Gilles Pokam. 2012. Maple: A coverage-driven testing tool for multithreaded programs. In Proceedings of the ACM international conference on Object oriented programming systems languages and applications. 485\u2013502. https:\/\/doi.org\/10.1145\/2398857.2384651","DOI":"10.1145\/2384616.2384651"},{"key":"e_1_3_1_75_2","unstructured":"Ming Yuan Bodong Zhao Penghui Li Jiashuo Liang Xinhui Han Xiapu Luo and Chao Zhang. 2023. DDRace: Finding Concurrency UAF Vulnerabilities in Linux Drivers with Directed Fuzzing.. In USENIX Security Symposium. 2849\u20132866."},{"key":"e_1_3_1_76_2","doi-asserted-by":"crossref","unstructured":"Xinhao Yuan Junfeng Yang and Ronghui Gu. 2018. Partial order aware concurrency sampling. In 30th International Conference Computer Aided Verification (CAV\u201918). https:\/\/doi.org\/10.1007\/978-3-319-96142-2_20","DOI":"10.1007\/978-3-319-96142-2_20"},{"key":"e_1_3_1_77_2","doi-asserted-by":"publisher","DOI":"10.1145\/3669940.3707214"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3764119","content-type":"application\/pdf","content-version":"vor","intended-application":"syndication"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3764119","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,7,16]],"date-time":"2026-07-16T10:14:12Z","timestamp":1784196852000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3764119"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2025,10,9]]},"references-count":76,"journal-issue":{"issue":"OOPSLA2","published-print":{"date-parts":[[2025,10,9]]}},"alternative-id":["10.1145\/3764119"],"URL":"https:\/\/doi.org\/10.1145\/3764119","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2025,10,9]]},"assertion":[{"value":"2025-07-21","order":0,"name":"received","label":"Received","group":{"name":"publication_history","label":"Publication History"}},{"value":"2025-08-12","order":2,"name":"accepted","label":"Accepted","group":{"name":"publication_history","label":"Publication History"}},{"value":"2025-10-09","order":3,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}