Due to the industry-wide shift to multi-core processing, future applications will only run faster if they are written as parallel software (i.e. where the work for a single program is accomplished by simultaneously performing different parts of that work on different processors). Unfortunately history has taught us that writing parallel software is a very error-prone task for programmers. To address this challenge, this research project is creating a powerful new mechanism for identifying and hopefully fixing bugs in parallel software on large-scale production systems. Hopefully the resulting framework will not only support the parallel execution of existing monitoring tools, but it will also spawn the creation of new classes of powerful tools that can recognize subtle bugs in parallel software. Such tools can help programmers continue to reap the performance benefits of future microprocessors, thereby continuing to enable all of the benefits that increasingly-faster computation has had on the economy, science and technology, and our everyday lives in an Internet-connected world.
More specifically, the focus of this project is on sophisticated online program monitoring tools that model various aspects of program correctness at an instruction-by-instruction granularity. To strike a practical balance between performance, precision, and convenience for the tool developer, this research has developed a novel framework that introduces explicit "windows of uncertainty" combined with a new approach for avoiding a state space explosion in the analysis (inspired by Tarjan's interval analysis approach to dataflow analysis).