Title: Terminator finds and checks termination arguments ... Termi
1 Terminator Automatically proving program termi
nation Byron Cook MSR-Cambridge http//r
esearch.microsoft.com/Terminator
2Group members
MSR-Cambridge Byron Cook Josh Berdine
Freiburg Univ. Andreas Podelski
Queen Mary / London Peter OHearn Dino Dis
tefano
Max Planck Institute Andrey Rybalchenko
3Achievements
Breakthrough algorithmic discovery
Remarkable research publication record at top co
nferences e.g. PLDI 2x, POPL 2x, CAV 2x, etc.
Invited lectures at top conferences and
universities e.g. CAV, QCon, Stanford, CMU, etc.
Articles in the popular press e.g.
Scientific American, Financial Times, etc.
Bugs and proofs found
4Motivation
- In order to stay live, reactive systems must be
constructed from terminating event-handling
routines
5Motivation
6Motivation
- Research question
- Why not mathematically prove that these
routines terminate?
- Classic answer
- Thats the halting problem
- and even if some tricks exist, theyll never
work for real code
7Terminator
- Terminator Termination/liveness prover for C
programs
- 1st of its kind
- Proof procedure represents a new fundamental
discovery
- Liveness properties
- Properties with positive use of eventually
- e.g. Every Acquire() must eventually be
followed by a Release()
- Liveness reducible to termination fundamental
problem is termination
- Terminator finds and checks termination
arguments
- Termination arguments produced as
certificates/explainations
- 2nd run less expensive
8Simple example
9Simple example
10Simple example
11Simple example
12Simple example
13Simple example
14Simple example
15Simple example
16Proving liveness of real systems
- Examples drawn from 20 Windows device drivers
- Each driver between 2k and 30k LOC
- e.g. Firewire, serial, parallel port, etc.
- Termination and other liveness properties proved
for each dispatch routine
- e.g. resource acquire/release
- Dispatch routines are concurrent
- Terminator infers and checks environment
assumptions when proving thread
termination/liveness
- Failed proof attempts result in potential bugs
- 10 termination/liveness bugs found thus far
17Proving liveness of real systems
18Proving liveness of real systems
19Proving liveness of real systems
20Proving liveness of real systems
21Proving liveness of real systems
22Conclusion
Terminator is a breakthrough discovery
We can now automatically prove termination and
other liveness properties of real industrial
systems Program verification frontiers Liv
eness, concurrency, heap Terminator supports all
three Future Technology transfer into Static
Driver Verifier? Termination and fine-grained co
ncurrency? New direction Liveness-guaranteeing r
untimes that produce hangdumps