🤖 AI Summary
This paper addresses the challenge of automatically transforming lock-based concurrent programs into implementations that are both lock-free and crash-recoverable. We propose the first general-purpose lock transformation framework, which integrates lock-free atomic operations, fine-grained transactional logging, and memory-order-aware lock conversion algorithms. Crucially, it preserves the original locking semantics and correctness guarantees—including for arbitrarily nested lock structures—without modification to the source program logic. Our key contribution is the first unified mechanism ensuring both lock-free progress guarantees (e.g., obstruction-freedom or wait-freedom) and transaction-level crash consistency for recovery. Unlike conventional locking, our approach eliminates deadlock and priority inversion risks entirely and enables automatic state restoration after system crashes. Experimental evaluation demonstrates substantial throughput improvements over standard lock-based implementations.
📝 Abstract
This paper presents the first transformation that introduces both lock-freedom and recoverability. Our transformation starts with a lock-based implementation, and provides a recoverable, lock-free substitution to lock acquire and lock release operations. The transformation supports nested locks for generality and ensures recoverability without jeopardising the correctness of the lock-based implementation it is applied on.