A Unified Approach to Eliminating Concurrency Bugs via Control Synthesis
نویسندگان
چکیده
Concurrency bugs threaten the safety of shared-memory multithreaded programs. The automated fixing techniques add new synchronization constructs; existing techniques may add too many synchronization constructs, sacrifice too much concurrency, or introduce deadlocks. The underlying problem is that existing techniques cannot simultaneously fix different bugs, especially different types of bugs, while restricting concurrency as little as possible. We present a unified concurrency bug avoidance approach to fix different types of bugs simultaneously. Our approach minimizes the number of synchronization constructs added while restricting concurrency as little as possible and guaranteeing that no new deadlocks are introduced. Our approach employs a unified vector representation of different types of bugs and reduces bug fixing to the well-studied problem of vector separation. Experiments on 14 real Java programs show that our solution incurs around 5% overhead, and typically incurs 6%-10% smaller overhead as compared to our previous Axis solution.
منابع مشابه
Eliminating Concurrency Bugs in Multithreaded Software: An Approach Based on Control of Petri Nets
We describe the Gadara project, a research effort whose goal is to eliminate certain classes of concurrency bugs in multithreaded software by controlling the execution of programs at run-time. The Gadara process involves three stages: modeling of the source code at compile time in the form of a Petri net, feedback control synthesis, and control logic implementation into the source code. The fee...
متن کاملEfficient Synthesis for Concurrency by Semantics-Preserving Transformations
We develop program synthesis techniques that can help programmers fix concurrency-related bugs. We make two new contributions to synthesis for concurrency, the first improving the efficiency of the synthesized code, and the second improving the efficiency of the synthesis procedure itself. The first contribution is to have the synthesis procedure explore a variety of (sequential) semantics-pres...
متن کاملCombining Model Checking and Discrete-Event Supervisor Synthesis
We present an approach to facilitate the design of provably correct concurrent systems by recasting recent work that uses discrete-event supervisor synthesis to automatically generate concurrency control code in Promela and combine it with model checking in Spin. This approach consists of the possibly repeated execution of three steps: manual preparation, automatic synthesis, and semi-automatic...
متن کاملRADBench: A Concurrency Bug Benchmark Suite
Testing and debugging tools for concurrent programs are often validated on known bugs. To aid the development of these tools, we present the Race, Atomicity, and Deadlock Benchmark (RADBench) suite. The RADBench suite contains the full source of 10 real concurrency bugs found in large open-source software projects including Mozilla SpiderMonkey, Mozilla NSPR, Memcached, Apache Web Server, and G...
متن کاملUnderstanding , Detecting and Exposing Concurrency Bugs
Software is pervasive in our daily lives. Unfortunately, software bugs can severely affect the dependability and security of software systems. Among all types of software bugs, the concurrency bug is one of the most troublesome and important. Concurrency bugs widely exist in concurrent programs. They are difficult to detect and diagnose because of their unique non-determinism. In the real world...
متن کامل