Patching Locking Bugs Statically with Crayons

Alfredo Cruz, Mahsa Varshosaz, Claire Le Goues, Andrzej Wasowski

Research output: Journal Article or Conference Article in JournalJournal articleResearchpeer-review

Abstract

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's tremendous societal importance imposes strict stability and correctness requirements. These properties make Linux a challenging and relevant target for static automated program repair (APR).

Over the last 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 locking API misuse 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%.
Original languageEnglish
JournalACM Transactions on Software Engineering and Methodology
ISSN1049-331X
DOIs
Publication statusPublished - 22 Aug 2022

Keywords

  • Bugs
  • Automatic Program Repair

Fingerprint

Dive into the research topics of 'Patching Locking Bugs Statically with Crayons'. Together they form a unique fingerprint.

Cite this