Patching Locking Bugs Statically with Crayons

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


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
Publication statusPublished - 22 Aug 2022


  • Bugs
  • Automatic Program Repair


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

Cite this