Skip to search boxSkip to navigationSkip to main content

Patching Locking Bugs Statically with Crayons

Research Output:
Journal Article or Conference Article in Journal
Journal article
Peer-review

Open access

Publication Information

Output type

Research Output:
Journal Article or Conference Article in Journal
Journal article
Peer-review

Original language

English

Journal (Volume, Issue Number)

ACM Transactions on Software Engineering and Methodology

Publication milestones

  • Accepted/In press - 01/06/2022
  • Published - 22/08/2022

Publication status

Published - 22/08/2022

ISSN

1049-331X

Publication IDs

  • Scopus: 85162003734

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%.

Publication metrics

PlumX, opens in new tab

Citations
2
Captures
16