kirancodes.me
To Proof Maintenance & Beyond!

Static race detection for device drivers: the Goblint approach

Vesal Vojdani, Kalmer Apinis, Vootele Rõtov, Helmut Seidl, Varmo Vene, Ralf Vogler

Abstract

Device drivers rely on fine-grained locking to ensure safe access to shared data structures. For human testers, concurrency makes such code notoriously hard to debug; for automated reasoning, dynamically allocated memory and low-level pointer manipulation poses significant challenges. We present a flexible approach to data race analysis, implemented in the open source Goblint static analysis framework, that combines different pointer and value analyses in order to handle a wide range of locking idioms, including locks allocated dynamically as well as locks stored in arrays. To the best of our knowledge, this is the most ambitious effort, having lasted well over ten years, to create a fully automated static race detection tool that can deal with most of the intricate locking schemes found in Linux device drivers. Our evaluation shows that these analyses are sufficiently precise, but practical use of these techniques requires inferring environmental and domain-specific assumptions.

BibTeX
@inproceedings{Vojdani-al:ASE16,
  author    = {Vesal Vojdani and
               Kalmer Apinis and
               Vootele R{\~{o}}tov and
               Helmut Seidl and
               Varmo Vene and
               Ralf Vogler},
  title     = {Static race detection for device drivers: the Goblint approach},
  booktitle = {ASE},
  pages     = {391--402},
  publisher = {{ACM}},
  year      = {2016},
}

Related papers