Thread Migration/Checkpointing for Type-Unsafe C Programs

Thread migration/checkpointing is becoming indispensable for load balancing and fault tolerance in high performance computing applications, and its success depends on the migration/checkpointing-safety, which concerns the construction of an accurate computation state. This safety is hard to guard in some languages, such as the C, whose type-unsafe features may cause the dynamic types associated with memory segments to be totally different from the static types declared in programs. To overcome this, we propose a novel intra-procedural, flow-insensitive, and context-insensitive pointer inference algorithm to systematically detect and recover unsafe factors. The proposed scheme conducts a thorough static analysis at compile time and inserts a minimized set of primitives to reduce the overhead of possible dynamic checks at run-time. Consequently, most unsafe features will be removed. Programmers can then code in any style, and nearly every program will be qualified for migration/checkpointing.

[1]  Monica S. Lam,et al.  Efficient context-sensitive pointer analysis for C programs , 1995, PLDI '95.

[2]  Lars Ole Andersen,et al.  Program Analysis and Specialization for the C Programming Language , 2005 .

[3]  Xian-He Sun,et al.  Data collection and restoration for heterogeneous process migration , 2001, Proceedings 15th International Parallel and Distributed Processing Symposium. IPDPS 2001.

[4]  Bjarne Steensgaard Points-to Analysis by Type Inference of Programs with Structures and Unions , 1996, CC.

[5]  Peter Smith,et al.  Heterogeneous process migration: the Tui system , 1998, Softw. Pract. Exp..

[6]  Satish Chandra,et al.  Physical type checking for C , 1999, PASTE '99.

[7]  Dejan S. Milojicic,et al.  Process migration , 1999, ACM Comput. Surv..

[8]  Hai Jiang,et al.  On Improving Thread Migration: Safety and Performance , 2002, HiPC.

[9]  Hai Jiang,et al.  Compile/run-time support for thread migration , 2002, Proceedings 16th International Parallel and Distributed Processing Symposium.

[10]  Thomas W. Reps,et al.  Pointer analysis for programs with structures and casting , 1999, PLDI '99.

[11]  Martin C. Rinard,et al.  Pointer analysis for multithreaded programs , 1999, PLDI '99.

[12]  George C. Necula,et al.  CCured: type-safe retrofitting of legacy code , 2002, POPL '02.

[13]  James Cheney,et al.  Cyclone: A Safe Dialect of C , 2002, USENIX Annual Technical Conference, General Track.