Sound and Precise Analysis of Parallel Programs Through Schedule Specialization
Parallel programs are known to be difficult to analyze. A key reason is that they typically have an enormous number of execution inter-leavings, or schedules. Static analysis over all schedules requires over-approximations, resulting in poor precision; dynamic analysis rarely covers more than a tiny fraction of all schedules. The authors propose an approach called schedule specialization to analyze a parallel program over only a small set of schedules for precision, and then enforce these schedules at run-time for soundness of the static analysis results. They build a schedule specialization framework for C/C++ multi-threaded programs that use P-threads.