Predicting null-pointer dereferences in concurrent programs

Azadeh Farzan, P. Madhusudan, Niloofar Razavi, Francesco Sorrentino

Research output: Chapter in Book/Report/Conference proceedingConference contribution

Abstract

We propose null-pointer dereferences as a target for finding bugs in concurrent programs using testing. A null-pointer dereference prediction engine observes an execution of a concurrent program under test and predicts alternate interleavings that are likely to cause null-pointer dereferences. Though accurate scalable prediction is intractable, we provide a carefully chosen novel set of techniques to achieve reasonably accurate and scalable prediction. We use an abstraction to the shared-communication level, take advantage of a static lock-set based pruning, and finally, employ precise and relaxed constraint solving techniques that use an SMT solver to predict schedules. We realize our techniques in a tool, ExceptioNULL, and evaluate it over 13 benchmark programs and find scores of null-pointer dereferences by using only a single test run as the prediction seed for each benchmark.

Original languageEnglish (US)
Title of host publicationProceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering, FSE 2012
DOIs
StatePublished - Dec 24 2012
Event20th ACM SIGSOFT International Symposium on the Foundations of Software Engineering, FSE 2012 - Cary, NC, United States
Duration: Nov 11 2012Nov 16 2012

Publication series

NameProceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering, FSE 2012

Other

Other20th ACM SIGSOFT International Symposium on the Foundations of Software Engineering, FSE 2012
CountryUnited States
CityCary, NC
Period11/11/1211/16/12

Keywords

  • SMT
  • concurrency
  • data-races
  • null-pointers
  • testing

ASJC Scopus subject areas

  • Software

Fingerprint Dive into the research topics of 'Predicting null-pointer dereferences in concurrent programs'. Together they form a unique fingerprint.

Cite this