Model checking system software with CMC

  • Authors:
  • Madanlal Musuvathi;Andy Chou;David L. Dill;Dawson Engler

  • Affiliations:
  • Stanford University;Stanford University;Stanford University;Stanford University

  • Venue:
  • EW 10 Proceedings of the 10th workshop on ACM SIGOPS European workshop
  • Year:
  • 2002

Quantified Score

Hi-index 0.00

Visualization

Abstract

Complex systems have errors that involve mishandled corner cases in intricate sequences of events. Conventional testing techniques usually miss these errors. In recent years, formal verification techniques such as [5] have gained popularity in checking a property in all possible behaviors of a system. However, such techniques involve generating an abstract model of the system. Such an abstraction process is unreliable, difficult and miss a lot of implementation errors.CMC is a framework for model checking a broad class of software written in the C programming language. CMC runs the software implementation directly without deriving an abstract model of the code. We used CMC to model check an existing implementation of AODV (Ad Hoc On Demand Distance Vector) routing protocol and found a total of 29 bugs in two implementations [7],[6] of the protocol. One of them is a bug in the actual specification of the AODV protocol [3]. We also used CMC on the IP Fragmentation module in the Linux TCP/IPv4 stack and verified its correctness for up to 4 fragments per packet.