4:00 pm, 3310
 Programming Languages Seminar: Nicholas Kidd, University of   
Wisconsin,  "Model
   Checking Concurrent C Programs"
    85%  of  the  system  crashes  in  Windows  XP  are caused by  
bugs in device
   drivers. Because of the difficultly involved with kernel  
programming, better
   static analysis tools are needed for program verification. Better  
tools will
   catch bugs earlier in the development cycle which in turn can  
save thousands
   of  dollars  in development costs. To this end, we have developed  
a tool for
   model checking concurrent C programs. Our tool is able to  
handle:  (1)  data
   ranging  over  very  large domains, (2) (recursive) procedure  
calls, and (3)
   concurrent parallel components that communicate via   
synchronizing  actions.
   We  model such programs using communicating pushdown systems, and  
reduce the
   reachability problem for this model to deciding the emptiness of  
the  inter-
   section  of two context-free languages L1 and L2. We tackle this  
undecidable
   problem using a CounterExample Guided Abstraction Refinement  
(CEGAR) scheme.
   Our  tool  is  implemented in the model checker MAGIC and found a  
previously
   unknown bug in a model of a Windows NT Bluetooth driver. This is  
joint  work
   with Sagar Chaki, Edmund Clarke, Thomas Reps, and Tayssir Touili.
 
 |