Skip to search boxSkip to navigationSkip to main content

Effective Bug Finding in C Programs with Shape and Effect Abstractions

Research Output:
Conference Article in Proceeding or Book/Report chapter
Article in proceedings
Peer-review

Open access

Publication Information

Output type

Research Output:
Conference Article in Proceeding or Book/Report chapter
Article in proceedings
Peer-review

Host publication Subtitle

18th International Conference, VMCAI 2017, Paris, France, January 15–17, 2017, Proceedings

Original language

English

Pages from-to (Number of pages)

Pages 34-54

Publication milestones

  • Published - 2017

Publication status

Published - 2017

Publisher

Springer, United States, Germany

Book series

  • Book series name: Lecture Notes in Computer Science
    Volume: 10145
    ISSN: 0302-9743
978-3-319-52233-3

ISBN (Electronic)

978-3-319-52234-0

Publication IDs

  • Scopus: 85010702759

Host publication title

Verification, Model Checking, and Abstract Interpretation

Abstract

Software projects tend to suffer from conceptually simple resource manipulation bugs, such as accessing a de-allocated memory region, or acquiring a non-reentrant lock twice. Static code scanners are used extensively to remove these bugs from projects like the Linux kernel. Yet, when the manipulation of the resource spans multiple functions, efficiently finding these bugs is a challenge. We present a shape-and-effect inference system for C, that enables efficient and scalable inter-procedural reasoning about resource manipulation. The inference system is used to build a program abstraction: a control-flow graph decorated with alias relationships and observable effects. Bugs are found by model checking this control-flow graph, matching undesirable sequences of operations. We evaluate a prototype implementation of our approach (EBA) and run it on a collection of historical double-lock bugs from the Linux kernel. Our results show that our tool is more effective at finding bugs than similar code-scanning tools. EBA analyzes the drivers/ directory of Linux (nine thousand files) in less than thirty minutes, and uncovers a handful previously unknown double-lock bugs in various drivers.

Publication metrics

PlumX, opens in new tab

Citations
3
Captures
11

Access to documents

Related Event

Title

18th International Conference on Verification, Model Checking, and Abstract Interpretation

Event type

Conference

Degree of recognition

International event

Date

15/01/2017 - 17/01/2017

Location

The Jussieu campus of Université Pierre et Marie CurieParisFrance