Reliable Multithreading through Schedule Memoization


December 1, 2011


Junfeng Yang


Columbia University


Multithreaded programs are difficult to write, analyze, test, and debug; a key reason is that different runs of a multithreaded program may show different behaviors, depending on how the threads interleave.
For instance, testing becomes less assuring because the thread schedules tested may not be the ones run in the field. Similarly, debugging becomes quite challenging because developers often have to reproduce the buggy thread schedules for diagnosis. In this talk, I’ll present Peregrine, a compiler and runtime system we have built to simultaneously address these problems by memoizing schedules and reusing them on future inputs if possible. Toward the end of my talk, I’ll briefly talk about how we are leveraging Peregrine to create a precise static analysis framework for multithreaded programs.


Junfeng Yang

Junfeng Yang’s research centers on making reliable and secure systems.
He earned his PhD at Stanford, where he created eXplode, a general, lightweight system for effectively finding storage system errors.
This work has led to an OSDI best paper award, numerous bug fixes to real systems such as the Linux kernel, and a featured article in Linux Weekly news. In 2008, Junfeng worked at Microsoft Research Silicon Valley, extending eXplode to check production distributed systems. The resultant system is being transferred to Microsoft Windows Azure. He’s now leading the Reliable Computer Systems lab at Columbia University, where his recent work on reliable multithreading won him an NSF CAREER award, and was featured in ACM Tech News.