Research Statement – Heming Cui

Real-world programs are undergoing paradigm shifts, and these shifts introduce reliability and security problems. One paradigm shift is that programs are moving from single-threaded to multi-threaded. However, multi-threaded programs are notoriously hard to get right, and a key reason is that these programs have too many possible thread interleavings, which aggravates understanding, testing, debugging, and can lead to wrong outputs and security breaches. Another paradigm shift is that programs are becoming larger and more complicated, while still having to obey critical rules (e.g., allocated memory must be freed, and file updating and disk syncing must be done consistently), as violating these rules can cause resource leaks and data losses. Unfortunately, existing techniques can not feasibly check these rules on real-world programs due to program path explosion. My research is focused on creating effective systems to attack these reliability and security problems. My approach is that, starting from a fresh and fundamental insight to a critical problem, I search for an effective solution combined from multiple fields such as systems and program analysis. A fresh and fundamental insight helps me understand the key challenge and steer my direction, and a combined solution enables me to leverage the strengths of different fields, such as the practicality of systems skills and rigor of program analysis techniques. This approach has helped me achieve important research advances: §1 describes three systems that can greatly improve reliability of multi-threaded programs by reducing the number of thread interleavings, §2 introduces compelling applications of these systems on advancing two research fields called static analysis and model checking, and §3 presents results on detecting new security violations in widely used programs.