- Peng Liu, Omer Tripp, Charles Zhang. Grail: Context-aware Fixing of Concurrency Bugs. In FSE 2014.
is a novel fixing algorithm that departs from previous techniques by
simultaneously providing both correctness and optimality guarantees.
Grail synthesizes bug-free yet optimal lock-based synchronization. To achieve this, Grail builds an analysis model of the buggy code that is both contextual, distinguishing different aliasing contexts to ensure efficiency, and global,
accounting for the entire synchronization behavior of the involved
threads to ensure correctness. Grail patches typically incur only 2% overhead.
- Peng Liu, Omer Tripp, Xiangyu Zhang. Flint: Fixing Linearizability
Violations (conditionally accepted by OOPSLA 2014).
We rewrite the code with multiple Map calls,
which violates the linearizability, as the semantically equivalent code
with fewer Map calls (typically with one call), which minimizes the
chance of buggy interleavings and guarantees correctness under certain
conditions. Flint fixes 96% of the violations from 27 applications.
- Peng Liu, Charles Zhang. Unleashing Concurrency for Irregular Data
Structures. In ICSE 2014.
Given the data structure protected by a single lock, we systematically replace it with the fine-grained locks (multiple-granularity locks), allowing concurrent accesses of disjoint parts and better performance while disallowing the non-atomic interference.
- Peng Liu, Julian Dolby, and Charles Zhang. Finding incorrect
compositions of atomicity. In ESEC/FSE 2013.
Programmers often compose the atomic APIs to
achieve new functionality, of which the atomicity is intended but not
implemented. We provide a method to discover the unspecified atomicity
intention, which respects both the data-centric atomicity and the inherent program logic between API calls. We find previously unknown bugs in popular applications.
- Peng Liu, Charles Zhang. Axis: automatically fixing atomicity
violations through solving control constraints. In ICSE 2012.
We build a solver upon the discrete control
theory, which outputs the provably correct fixes given the input
atomicity violations. The fixes won't introduce new bugs and incur the
moderate runtime overhead.
- Yin Wang, Peng Liu, Terence Kelly, Stephane Lafortune, Spyros A.
Reveliotis, Charles Zhang. On atomicity enforcement in concurrent
software via discrete event systems theory. In Decision and Control 2012.
While the ICSE '12 paper presents the iterative
fixing, this paper presents the global fixing. Given all bugs which are
uniformly denoted as concurrent execution vectors, we reduce the bug
fixing to a vector separation problem (well-studied
geometry problem). A nice property of global fixing is that the fixes
achieve the same level of concurrency with much fewer lock operations,
as compared to the iterative fixing (ICSE '12 work).
- Peng Liu, Charles Zhang. Pert: The Application-Aware Tailoring of Java Object Persistence. In TSE 2012.
Leveraging the results from static analysis, we
optimize the object persistence so that it persists only the data
structure parts to be used or modified since last persistence.
- Jeff Huang, Peng Liu, Charles Zhang. LEAP: lightweight deterministic multi-processor
replay of concurrent java programs. In FSE 2010.
We propose a record/replay approach for
concurrent applications. The approach shares the same insight as
Lamport clock but does not need to record the history for each thread.