@inproceedings{6b2336e376b544e9bf90ef1e13b06847,
title = "Stabilizers: A modular checkpointing abstraction for concurrent functional programs",
abstract = "Transient faults that arise in large-scale software systems can often be repaired by re-executing the code in which they occur. Ascribing a meaningful semantics for safe re-execution in multi-threaded code is not obvious, however. For a thread to correctly re-execute a region of code, it must ensure that all other threads which have witnessed its unwanted effects within that region are also reverted to a meaningful earlier state. If not done properly, data inconsistencies and other undesirable behavior may result. However, automatically determining what constitutes a consistent global checkpoint is not straightforward since thread interactions are a dynamic property of the program. In this paper, we present a safe and efficient checkpointing mechanism for Concurrent ML (CML) that can be used to recover from transient faults. We introduce a new linguistic abstraction called stabilizers that permits the specification of per-thread monitors and the restoration of globally consistent checkpoints. Safe global states are computed through lightweight monitoring of communication events among threads (e.g. message-passing operations or updates to shared variables). Our experimental results on several realistic, multithreaded, server-style CML applications, including a web server and a windowing toolkit, show that the overheads to use stabilizers are small, and lead us to conclude that they are a viable mechanism for defining safe checkpoints in concurrent functional programs.",
keywords = "Checkpointing, Concurrent ML, Concurrent programming, Error recovery, Exception handling, Transactions",
author = "Lukasz Ziarek and Philip Schatz and Suresh Jagannathan",
year = "2006",
month = sep,
day = "17",
doi = "10.1145/1159803.1159822",
language = "English",
isbn = "1595933093",
series = "Proceedings of the ACM SIGPLAN International Conference on Functional Programming, ICFP",
publisher = "Association for Computing Machinery ",
pages = "136--147",
booktitle = "ICFP'06 - Proceedings of the Eleventh ACM SIGPLAN International Conference on Functional Programming",
address = "United States",
note = "11th ACM SIGPLAN International Conference on Functional Programming, ICFP 2006 ; Conference date: 16-09-2006 Through 21-09-2006",
}