Broadly Enabling KLEE to Effortlessly Find Unrecoverable Errors in Rust

dc.contributor.authorZhang, Yingen
dc.contributor.authorLi, Pengen
dc.contributor.authorDing, Yuen
dc.contributor.authorWang, Lingxiangen
dc.contributor.authorWilliams, Danen
dc.contributor.authorMeng, Naen
dc.date.accessioned2024-06-04T18:47:43Zen
dc.date.available2024-06-04T18:47:43Zen
dc.date.issued2024en
dc.date.updated2024-06-01T08:00:33Zen
dc.description.abstractRust is a general-purpose programming language designed for performance and safety. Unrecoverable errors (e.g., Divide by Zero) in Rust programs are critical, as they signal bad program states and terminate programs abruptly. Previous work has contributed to utilizing KLEE, a dynamic symbolic test engine, to verify the program would not panic. However, it is difficult for engineers who lack domain expertise to write test code correctly. Besides, the effectiveness of KLEE in finding panics in production Rust code has not been evaluated. We created an approach, called PanicCheck, to hide the complexity of verifying Rust programs with KLEE. Using PanicCheck, engineers only need to annotate the function-to-verify with #[panic_check]. The annotation guides PanicCheck to generate test code, compile the function together with tests, and execute KLEE for verification. After applying PanicCheck to 21 open-source and 2 closed-source projects, we found 61 test inputs that triggered panics; 59 of the 61 panics have been addressed by developers so far. Our research shows promising verification results by KLEE, while revealing technical challenges in using KLEE. Our experience will shed light on future practice and research in program verification.en
dc.description.versionPublished versionen
dc.format.mimetypeapplication/pdfen
dc.identifier.doihttps://doi.org/10.1145/3639477.3639714en
dc.identifier.urihttps://hdl.handle.net/10919/119257en
dc.language.isoenen
dc.publisherACMen
dc.rightsCreative Commons Attribution 4.0 Internationalen
dc.rights.holderThe author(s)en
dc.rights.urihttp://creativecommons.org/licenses/by/4.0/en
dc.titleBroadly Enabling KLEE to Effortlessly Find Unrecoverable Errors in Rusten
dc.typeArticle - Refereeden
dc.type.dcmitypeTexten

Files

Original bundle
Now showing 1 - 1 of 1
Loading...
Thumbnail Image
Name:
3639477.3639714.pdf
Size:
734.15 KB
Format:
Adobe Portable Document Format
Description:
Published version
License bundle
Now showing 1 - 1 of 1
Name:
license.txt
Size:
1.5 KB
Format:
Item-specific license agreed upon to submission
Description: