{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,10,2]],"date-time":"2026-10-02T10:36:33Z","timestamp":1790937393400,"version":"4.1.0"},"reference-count":64,"publisher":"Association for Computing Machinery (ACM)","issue":"OOPSLA2","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>\n                    Rust is gaining popularity for its well-known memory safety guarantees and high performance, distinguishing it from C\/C++ and JVM-based languages. Its compiler,\n                    <jats:monospace>rustc<\/jats:monospace>\n                    , enforces these guarantees through specialized mechanisms such as trait solving, borrow checking, and specific optimizations. However, Rust\u2019s unique language mechanisms introduce complexity to its compiler, resulting in bugs that are uncommon in traditional compilers. With Rust\u2019s increasing adoption in safety-critical domains, understanding these language mechanisms and their impact on compiler bugs is essential for improving the reliability of both\n                    <jats:monospace>rustc<\/jats:monospace>\n                    and Rust programs. Such understanding could provide the foundation for developing more effective testing strategies tailored to\n                    <jats:monospace>rustc<\/jats:monospace>\n                    . Improving the quality of\n                    <jats:monospace>rustc<\/jats:monospace>\n                    testing is essential for enhancing compiler reliability, which in turn strengthens the safety and correctness of all Rust programs, as compiler bugs can silently propagate into every compiled program. Yet, we still lack a large-scale, detailed, and in-depth study of\n                    <jats:monospace>rustc<\/jats:monospace>\n                    bugs.\n                  <\/jats:p>\n                  <jats:p>\n                    To bridge this gap, this work presents a comprehensive and systematic study of\n                    <jats:monospace>rustc<\/jats:monospace>\n                    bugs, specifically those originating in semantic analysis and intermediate representation (IR) processing, which are stages that implement essential Rust language features such as ownership and lifetimes. Our analysis examines issues and fixes reported between 2022 and 2024, with a manual review of 301 valid issues. We categorize these bugs based on their causes, symptoms, affected compilation stages, and test case characteristics. Additionally, we evaluate existing\n                    <jats:monospace>rustc<\/jats:monospace>\n                    testing tools to assess their effectiveness and limitations. Our key findings include: (1)\n                    <jats:monospace>rustc<\/jats:monospace>\n                    bugs primarily arise from Rust\u2019s type system and lifetime model, with frequent errors in the High-Level Intermediate Representation (HIR) and Mid-Level Intermediate Representation (MIR) modules due to complex checkers and optimizations; (2) bug-revealing test cases often involve unstable features, advanced trait usages, lifetime annotations, standard APIs, and specific optimization levels; (3) while both valid and invalid programs can trigger bugs, existing testing tools struggle to detect non-crash errors, underscoring the need for further advancements in\n                    <jats:monospace>rustc<\/jats:monospace>\n                    testing.\n                  <\/jats:p>","DOI":"10.1145\/3763800","type":"journal-article","created":{"date-parts":[[2025,10,9]],"date-time":"2025-10-09T08:49:50Z","timestamp":1759999790000},"page":"3869-3896","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":6,"title":["An Empirical Study of Bugs in the rustc Compiler"],"prefix":"10.1145","volume":"9","author":[{"ORCID":"https:\/\/orcid.org\/0000-0002-3271-7255","authenticated-orcid":false,"given":"Zixi","family":"Liu","sequence":"first","affiliation":[{"name":"Nanjing University, Nanjing, China"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-7477-3642","authenticated-orcid":false,"given":"Yang","family":"Feng","sequence":"additional","affiliation":[{"name":"Nanjing University, Nanjing, China"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0009-0004-4837-6696","authenticated-orcid":false,"given":"Yunbo","family":"Ni","sequence":"additional","affiliation":[{"name":"Nanjing University, Nanjing, China"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-7556-3615","authenticated-orcid":false,"given":"Shaohua","family":"Li","sequence":"additional","affiliation":[{"name":"Chinese University of Hong Kong, Hongkong, China"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-9588-8393","authenticated-orcid":false,"given":"Xizhe","family":"Yin","sequence":"additional","affiliation":[{"name":"Nanjing University, Nanjing, China"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-8297-8998","authenticated-orcid":false,"given":"Qingkai","family":"Shi","sequence":"additional","affiliation":[{"name":"Nanjing University, Nanjing, China"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-7743-1296","authenticated-orcid":false,"given":"Baowen","family":"Xu","sequence":"additional","affiliation":[{"name":"Nanjing University, Nanjing, China"}],"role":[{"vocabulary":"crossref","role":"author"}]},{"ORCID":"https:\/\/orcid.org\/0000-0002-2970-1391","authenticated-orcid":false,"given":"Zhendong","family":"Su","sequence":"additional","affiliation":[{"name":"ETH Zurich, Zurich, Switzerland"}],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"320","published-online":{"date-parts":[[2025,10,9]]},"reference":[{"key":"e_1_3_2_2_1","doi-asserted-by":"publisher","DOI":"10.1145\/3428204"},{"key":"e_1_3_2_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/3360573"},{"key":"e_1_3_2_4_1","unstructured":"Langston Barrett. 2023. langston-barrett\/tree-splicer: Simple grammar-based test case generator. https:\/\/github.com\/langston-barrett\/tree-splicer. (Accessed on 12\/05\/2023)."},{"key":"e_1_3_2_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/3485500"},{"key":"e_1_3_2_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/3363562"},{"key":"e_1_3_2_7_1","unstructured":"Cloudflare. 2023. Cloudflare - The Web Performance & Security Company. https:\/\/www.cloudflare.com\/. (Accessed on 12\/06\/2023)."},{"key":"e_1_3_2_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/3597503.3639136"},{"key":"e_1_3_2_9_1","doi-asserted-by":"publisher","unstructured":"Kyle Dewey Jared Roesch and Ben Hardekopf. 2015. Fuzzing the Rust Typechecker Using CLP (T). In 2015 30th IEEE\/ACM International Conference on Automated Software Engineering (ASE). 482\u2013493. https:\/\/doi.org\/10.1109\/ASE.2015.65 10.1109\/ASE.2015.65","DOI":"10.1109\/ASE.2015.65"},{"key":"e_1_3_2_10_1","doi-asserted-by":"publisher","unstructured":"Anthony Di Franco Hui Guo and Cindy Rubio-Gonz\u00e1lez. 2017. A comprehensive study of real-world numerical bug characteristics. In 2017 32nd IEEE\/ACM International Conference on Automated Software Engineering (ASE). 509\u2013519. https:\/\/doi.org\/10.1109\/ASE.2017.8115662 10.1109\/ASE.2017.8115662","DOI":"10.1109\/ASE.2017.8115662"},{"key":"e_1_3_2_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/3689799"},{"key":"e_1_3_2_12_1","doi-asserted-by":"publisher","DOI":"10.1145\/3377811.3380413"},{"key":"e_1_3_2_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/3547647"},{"key":"e_1_3_2_14_1","first-page":"17","volume-title":"Proceedings of the 32nd USENIX Conference on Security Symposium","author":"H\u00f6ltervennhoff Sandra","year":"2023","unstructured":"Sandra H\u00f6ltervennhoff, Philip Klostermeyer, Noah W\u00f6hler, Yasemin Acar, and Sascha Fahl. 2023. \"I wouldn\u2019t want my unsafe code to run my pacemaker\": an interview study on the use, comprehension, and perceived risks of unsafe rust. In Proceedings of the 32nd USENIX Conference on Security Symposium (Anaheim, CA, USA) (SEC \u201923). USENIX Association, USA, Article 141, 17 pages."},{"key":"e_1_3_2_15_1","unstructured":"InfoWorld. 2023. White House urges developers to dump C and C++. InfoWorld. https:\/\/www.infoworld.com\/article\/3713203\/white-house-urges-developers-to-dump-c-and-c.html. (Accessed on 03\/17\/2024)."},{"key":"e_1_3_2_16_1","doi-asserted-by":"publisher","DOI":"10.1145\/2345156.2254075"},{"key":"e_1_3_2_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/3418295"},{"key":"e_1_3_2_18_1","unstructured":"Matthias Kr\u00fcger. 2020. matthiaskrgr\/icemaker: automatially find crashes in the rust compiler & tooling. https:\/\/github.com\/matthiaskrgr\/icemaker. (Accessed on 12\/05\/2023)."},{"key":"e_1_3_2_19_1","doi-asserted-by":"publisher","DOI":"10.1109\/CGO.2004.1281665"},{"key":"e_1_3_2_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/3586037"},{"key":"e_1_3_2_21_1","doi-asserted-by":"publisher","unstructured":"Zixi Liu. 2025. An Empirical Study of Bugs in the rustc Compiler. https:\/\/doi.org\/10.5281\/zenodo.16600026 10.5281\/zenodo.16600026","DOI":"10.5281\/zenodo.16600026"},{"key":"e_1_3_2_22_1","unstructured":"LLVM. 2023. libFuzzer - a library for coverage-guided fuzz testing. \u2014 LLVM 18.0.0git documentation. https:\/\/llvm.org\/docs\/LibFuzzer.html. (Accessed on 12\/09\/2023)."},{"key":"e_1_3_2_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/3519939.3523704"},{"key":"e_1_3_2_24_1","unstructured":"Miri. 2023. rust-lang\/miri: An interpreter for Rust\u2019s mid-level intermediate representation. https:\/\/github.com\/rust-lang\/miri. (Accessed on 12\/14\/2023)."},{"key":"e_1_3_2_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/3385412.3386036"},{"key":"e_1_3_2_26_1","unstructured":"RedoxOS. 2023. Redox - Your Next(Gen) OS - Redox - Your Next(Gen) OS. https:\/\/www.redox-os.org\/. (Accessed on 12\/06\/2023)."},{"key":"e_1_3_2_27_1","unstructured":"David Renshaw. 2019. dwrensha\/fuzz-rustc: setup for fuzzing the Rust compiler. https:\/\/github.com\/dwrensha\/fuzz-rustc. (Accessed on 12\/05\/2023)."},{"key":"e_1_3_2_28_1","doi-asserted-by":"publisher","DOI":"10.1109\/ASE51524.2021.9678776"},{"key":"e_1_3_2_29_1","doi-asserted-by":"publisher","DOI":"10.1109\/ASE51524.2021.9678776"},{"key":"e_1_3_2_30_1","unstructured":"Rust. 2023a. Compiletest - Rust Compiler Development Guide. https:\/\/rustc-dev-guide.rust-lang.org\/tests\/compiletest.html. (Accessed on 12\/05\/2023)."},{"key":"e_1_3_2_31_1","unstructured":"Rust. 2023b. rust-lang\/rust: Empowering everyone to build reliable and efficient software. https:\/\/github.com\/rust-lang\/rust. (Accessed on 11\/29\/2023)."},{"key":"e_1_3_2_32_1","unstructured":"Rust. 2023c. Rust Programming Language. https:\/\/www.rust-lang.org\/. (Accessed on 12\/06\/2023)."},{"key":"e_1_3_2_33_1","unstructured":"Rust. 2023d. What is rustc? - The rustc book. https:\/\/doc.rust-lang.org\/rustc\/what-is-rustc.html. (Accessed on 12\/06\/2023)."},{"key":"e_1_3_2_34_1","unstructured":"Rust. 2025a. Next-gen trait solving - Rust Compiler Development Guide. https:\/\/rustc-dev-guide.rust-lang.org\/solve\/trait-solving.html. [Online; accessed 2025-03-03]."},{"key":"e_1_3_2_35_1","unstructured":"Rust. 2025b. On Undefined Behavior - High Assurance Rust: Developing Secure and Robust Software. https:\/\/highassurance.rs\/chp3\/undef.html. [Online; accessed 2025-06-21]."},{"key":"e_1_3_2_36_1","unstructured":"Rust. 2025c. Well-formedness checking. https:\/\/rust-lang.github.io\/chalk\/book\/clauses\/wf.html. [Online; accessed 2025-03-03]."},{"key":"e_1_3_2_37_1","unstructured":"Rust-clippy. 2023. rust-lang\/rust-clippy: A bunch of lints to catch common mistakes and improve your Rust code. Book: https:\/\/doc.rust-lang.org\/clippy\/. https:\/\/github.com\/rust-lang\/rust-clippy. (Accessed on 12\/14\/2023)."},{"key":"e_1_3_2_38_1","unstructured":"Rust-GCC. 2024. Rust-GCC\/gccrs: GCC Front-End for Rust. https:\/\/github.com\/Rust-GCC\/gccrs.(Accessed on 09\/07\/2024)."},{"key":"e_1_3_2_39_1","unstructured":"rust team. 2025a. Code generation - Rust Compiler Development Guide. https:\/\/rustc-dev-guide.rust-lang.org\/backend\/codegen.html. [Online; accessed 2025-06-20]."},{"key":"e_1_3_2_40_1","unstructured":"rust team. 2025b. Labels rust-lang\/rust. https:\/\/github.com\/rust-lang\/rust\/labels. [Online; accessed 2025-01-19]."},{"key":"e_1_3_2_41_1","unstructured":"rustc-dev guide. 2025. Opaque Types - Rust Compiler Development Guide. https:\/\/rustc-dev-guide.rust-lang.org\/opaque-types-type-alias-impl-trait.html. [Online; accessed 2025-03-06]."},{"key":"e_1_3_2_42_1","doi-asserted-by":"publisher","DOI":"10.4135\/9781529682571"},{"key":"e_1_3_2_43_1","doi-asserted-by":"publisher","DOI":"10.1109\/32.799955"},{"key":"e_1_3_2_44_1","unstructured":"Servo. 2023. Servo the embeddable independent memory-safe modular parallel web rendering engine. https:\/\/servo.org\/. (Accessed on 12\/06\/2023)."},{"key":"e_1_3_2_45_1","doi-asserted-by":"publisher","DOI":"10.1145\/3597926.3604919"},{"key":"e_1_3_2_46_1","unstructured":"STRATIS. 2023. Stratis Storage. https:\/\/stratis-storage.github.io\/. (Accessed on 12\/06\/2023)."},{"key":"e_1_3_2_47_1","doi-asserted-by":"publisher","DOI":"10.1145\/2931037.2931074"},{"key":"e_1_3_2_48_1","doi-asserted-by":"publisher","DOI":"10.1145\/3453483.3454084"},{"key":"e_1_3_2_49_1","doi-asserted-by":"publisher","DOI":"10.1007\/sll704-019-8231-0"},{"key":"e_1_3_2_50_1","unstructured":"TiKV. 2023. TiKV is a highly scalable low latency and easy to use key-value database. https:\/\/tikv.org\/. (Accessed on 12\/06\/2023)."},{"key":"e_1_3_2_51_1","unstructured":"David Tolnay. 2025. syn - crates.io: Rust Package Registry. https:\/\/crates.io\/crates\/syn. [Online; accessed 2025-03-03]."},{"key":"e_1_3_2_52_1","doi-asserted-by":"publisher","DOI":"10.1109\/MSEC.2023.3249719"},{"key":"e_1_3_2_53_1","doi-asserted-by":"publisher","DOI":"10.1145\/3689780"},{"key":"e_1_3_2_54_1","unstructured":"Wikimedia. 2004. Undefined behavior - Wikipedia. https:\/\/en.wikipedia.org\/wiki\/Undefined_behavior. [Online; accessed 2025-03-23]."},{"key":"e_1_3_2_55_1","doi-asserted-by":"publisher","DOI":"10.1145\/3485522"},{"key":"e_1_3_2_56_1","doi-asserted-by":"publisher","unstructured":"Xinmeng Xia Yang Feng and Qingkai Shi. 2023. Understanding Bugs in Rust Compilers. In 2023 IEEE 23rd International Conference on Software Quality Reliability and Security (QRS). 138\u2013149. https:\/\/doi.org\/10.1109\/QRS60937.2023.00023 10.1109\/QRS60937.2023.00023","DOI":"10.1109\/QRS60937.2023.00023"},{"key":"e_1_3_2_57_1","doi-asserted-by":"publisher","DOI":"10.1109\/SANER50967.2021.00010"},{"key":"e_1_3_2_58_1","doi-asserted-by":"publisher","DOI":"10.1145\/3597926.3598138"},{"key":"e_1_3_2_59_1","doi-asserted-by":"publisher","DOI":"10.1145\/3466642"},{"key":"e_1_3_2_60_1","doi-asserted-by":"publisher","DOI":"10.1145\/3691620.3695059"},{"key":"e_1_3_2_61_1","doi-asserted-by":"publisher","DOI":"10.1145\/1993498.1993532"},{"key":"e_1_3_2_62_1","doi-asserted-by":"publisher","DOI":"10.1145\/3611643.3613878"},{"key":"e_1_3_2_63_1","doi-asserted-by":"publisher","DOI":"10.1145\/3624738"},{"key":"e_1_3_2_64_1","doi-asserted-by":"publisher","DOI":"10.1016\/jjss.2020.110884"},{"key":"e_1_3_2_65_1","doi-asserted-by":"publisher","DOI":"10.1145\/3510003.3510164"}],"container-title":["Proceedings of the ACM on Programming Languages"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3763800","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2026,7,16]],"date-time":"2026-07-16T10:09:08Z","timestamp":1784196548000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3763800"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2025,10,9]]},"references-count":64,"journal-issue":{"issue":"OOPSLA2","published-print":{"date-parts":[[2025,10,9]]}},"alternative-id":["10.1145\/3763800"],"URL":"https:\/\/doi.org\/10.1145\/3763800","relation":{},"ISSN":["2475-1421"],"issn-type":[{"value":"2475-1421","type":"electronic"}],"subject":[],"published":{"date-parts":[[2025,10,9]]},"assertion":[{"value":"2025-03-26","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"}}]}}