2009 · 169 citations · 36 references
ComputingComputer ScienceComputer SystemsDistributed SystemsFault-tolerant ComputingFault-tolerant SystemsDistributed ComputingDistributed Systems ArchitectureError DetectionModel CheckingReliable Distributed SystemsSoftware Fault ToleranceBackup ReplicationClock MechanismDistributed Systems VerificationFault-tolerant Distributed SystemsPaxosPrimary-backup ReplicationState Space Exploration
MODIST is the first model checker designed for transparently checking unmodified distributed systems running on unmodified operating systems. It achieves this transparency via a novel architecture: a thin interposition layer exposes all actions in a distributed system and a centralized, OS-independent model checking engine explores these actions systematically. We made MODIST practical through three techniques: an execution engine to simulate consistent, deterministic executions and failures; a virtual clock mechanism to avoid false positives and false negatives; and a state exploration framework to incorporate heuristics for efficient error detection. We implemented MODIST on Windows and applied it to three well-tested distributed systems: Berkeley DB, a widely used open source database; MPS, a deployed Paxos implementation; and PACIFICA, a primary-backup replication protocol implementation. MODIST found 35 bugs in total. Most importantly, it found protocol-level bugs (i.e., flaws in the core distributed protocols) in every system checked: 10 in total, including 2 in Berkeley DB, 2 in MPS, and 6 in PACIFICA.
36
Gerard J. Holzmann · IEEE Transactions on Software Engineering · 1997 · 3.8K citations
Leslie Lamport · ACM Transactions on Computer Systems · 1998 · 2.7K citations · Full text
Nicholas Nethercote, Julian Seward · 2007 · 2.3K citations