Tayfun Elmas

dblp:62/6573 · DBLP profile ↗
← Back
9ranked-venue papers
6as first author
0since 2021 · last 2013
—ORCID · none

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 8 · 6 first-authorSystems, architecture and hardware · 1

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
7 papers
Concurrent programming · 41% Program verification · 32% Program analysis · 14%
Computer architecture, parallel and distributed computing, and storage systems
1 paper
Storage systems · 100%

Topics — the 18 heaviest of 20, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Concurrent programming
concurrency bugs
0.332013
CONCURRIT: a domain specific language for reproducing concurrency bugs · PLDI 2013
Goldilocks: a race and transaction-aware java runtime · PLDI 2007
VYRD: verifYing concurrent programs by runtime refinement-violation detection · PLDI 2005
Program verification › dynamic verification
runtime verification
0.222011
NDSeq: runtime checking for nondeterministic sequential specifications of parallel correctness · PLDI 2011
VYRD: verifYing concurrent programs by runtime refinement-violation detection · PLDI 2005
Concurrent programming › concurrency bugs
concurrency bug reproduction
0.212013
CONCURRIT: a domain specific language for reproducing concurrency bugs · PLDI 2013
Programming languages and type systems
domain-specific languages
0.212013
CONCURRIT: a domain specific language for reproducing concurrency bugs · PLDI 2013
Program analysis › data flow analysis
dynamic data flow analysis
0.112012
NDetermin: inferring nondeterministic sequential specifications for parallelism correctness · PPoPP 2012
Program analysis
specification mining
0.112012
NDetermin: inferring nondeterministic sequential specifications for parallelism correctness · PPoPP 2012
Program verification
parallel program correctness
0.112011
NDSeq: runtime checking for nondeterministic sequential specifications of parallel correctness · PLDI 2011
Program verification › dynamic verification › runtime verification
assertion checking
0.112009
A calculus of atomic actions · POPL 2009
Concurrent programming
atomicity
0.112009
A calculus of atomic actions · POPL 2009
Program verification
concurrent program verification
0.112009
A calculus of atomic actions · POPL 2009
Concurrent programming › concurrency bug detection
data race detection
0.112007
Goldilocks: a race and transaction-aware java runtime · PLDI 2007
Runtime systems and virtual machines › managed runtime
java runtime
0.112007
Goldilocks: a race and transaction-aware java runtime · PLDI 2007
Program verification › refinement
refinement proof
0.112005
VYRD: verifYing concurrent programs by runtime refinement-violation detection · PLDI 2005
Software testing
test generation
0.012013
CONCURRIT: a domain specific language for reproducing concurrency bugs · PLDI 2013
Concurrent programming
synchronization
0.012010
QED: a proof system based on reduction and abstraction for the static verification of concurrent software · ICSE (2) 2010
Concurrent programming
memory models
0.012007
Goldilocks: a race and transaction-aware java runtime · PLDI 2007
Concurrent programming › memory models
sequential consistency
0.012007
Goldilocks: a race and transaction-aware java runtime · PLDI 2007
Storage systems
file systems
0.012005
VYRD: verifYing concurrent programs by runtime refinement-violation detection · PLDI 2005

Methods — techniques the papers use, named apart from their topics

reduction · 0.2abstraction · 0.2thread schedule exploration · 0.2source instrumentation · 0.2minimum-cost boolean satisfiability · 0.1dynamic data flow analysis · 0.1runtime verification · 0.1rely-guarantee · 0.1owicki-gries · 0.1runtime monitoring · 0.1specification conformance checking · 0.1runtime instrumentation · 0.1logging · 0.1
YearPublicationVenuePosition
2013 CONCURRIT: a domain specific language for reproducing concurrency bugs
abstract
We present CONCURRIT, a domain-specific language (DSL) for reproducing concurrency bugs. Given some partial information about the nature of a bug in an application, a programmer can write a CONCURRIT script to formally and concisely specify a set of thread schedules to explore in order to find a schedule exhibiting the bug. Further, the programmer can specify how these thread schedules should be searched to find a schedule that reproduces the bug. We implemented CONCURRIT as an embedded DSL in C++, which uses manual or automatic source instrumentation to partially control the scheduling of the software under test. Using CONCURRIT, we were able to write concise tests to reproduce concurrency bugs in a variety of benchmarks, including the Mozilla's SpiderMonkey JavaScript engine, Memcached, Apache's HTTP server, and MySQL.
Tayfun Elmas, Jacob Burnim, George C. Necula, Koushik Sen
PLDI1
2012 NDetermin: inferring nondeterministic sequential specifications for parallelism correctness
abstract
Nondeterministic Sequential (NDSeq) specifications have been proposed as a means for separating the testing, debugging, and verifying of a program's parallelism correctness and its sequential functional correctness. In this work, we present a technique that, given a few representative executions of a parallel program, combines dynamic data flow analysis and Minimum-Cost Boolean Satisfiability (MinCostSAT) solving for automatically inferring a likely NDSeq specification for the parallel program. For a number of Java benchmarks, our tool NDetermin infers equivalent or stronger NDSeq specifications than those previously written manually.
Jacob Burnim, Tayfun Elmas, George C. Necula, Koushik Sen
PPoPP2
2011 NDSeq: runtime checking for nondeterministic sequential specifications of parallel correctness
abstract
We propose to specify the correctness of a program's parallelism using a sequential version of the program with controlled nondeterminism. Such a nondeterministic sequential specification allows (1) the correctness of parallel interference to be verified independently of the program's functional correctness, and (2) the functional correctness of a program to be understood and verified on a sequential version of the program, one with controlled nondeterminism but no interleaving of parallel threads.
Jacob Burnim, Tayfun Elmas, George C. Necula, Koushik Sen
PLDI2
2010 QED: a proof system based on reduction and abstraction for the static verification of concurrent software
abstract
We present a proof system and supporting tool, QED, for the static verification of concurrent software. Our key idea is to simplify the verification of a program by rewriting it with larger atomic actions. We demonstrated the simplicity and effectiveness of our approach on benchmarks with intricate synchronization.
Tayfun Elmas
ICSE (2)1
2010 Simplifying Linearizability Proofs with Reduction and Abstraction
Tayfun Elmas, Shaz Qadeer, Ali Sezgin, Omer Subasi, Serdar Tasiran
TACAS1
2009 A calculus of atomic actions
abstract
We present a proof calculus and method for the static verification of assertions and procedure specifications in shared-memory concurrent programs. The key idea in our approach is to use atomicity as a proof tool and to simplify the verification of assertions by rewriting programs to consist of larger atomic actions. We propose a novel, iterative proof style in which alternating use of abstraction and reduction is exploited to compute larger atomic code blocks in a sound manner. This makes possible the verification of assertions in the transformed program by simple sequential reasoning within atomic blocks, or significantly simplified application of existing concurrent program verification techniques such as the Owicki-Gries or rely-guarantee methods. Our method facilitates a clean separation of concerns where at each phase of the proof, the user worries only about only either the sequential properties or the concurrency control mechanisms in the program. We implemented our method in a tool called QED. We demonstrate the simplicity and effectiveness of our approach on a number of benchmarks including ones with intricate concurrency protocols.
Tayfun Elmas, Shaz Qadeer, Serdar Tasiran
POPL1
2007 Goldilocks: a race and transaction-aware java runtime
abstract
Data races often result in unexpected and erroneous behavior. In addition to causing data corruption and leading programs to crash, the presence of data races complicates the semantics of an execution which might no longer be sequentially consistent. Motivated by these observations, we have designed and implemented a Java runtime system that monitors program executions and throws a DataRaceException when a data race is about to occur. Analogous to other runtime exceptions, the DataRaceException provides two key benefits. First, accesses causing race conditions are interruptedand handled before they cause errors that may be difficult to diagnose later. Second, if no DataRaceException is thrown in an execution, it is guaranteed to be sequentially consistent. This strong guarantee helps to rule out many concurrency-related possibilities as the cause of erroneous behavior. When a DataRaceException is caught, the operation, thread, or program causing it can be terminated gracefully. Alternatively, the DataRaceException can serve as a conflict-detection mechanism inoptimistic uses of concurrency.
Tayfun Elmas, Shaz Qadeer, Serdar Tasiran
PLDI1
2007 Rollback Atomicity
Serdar Tasiran, Tayfun Elmas
RV2
2005 VYRD: verifYing concurrent programs by runtime refinement-violation detection
abstract
We present a runtime technique for checking that a concurrently-accessed data structure implementation, such as a file system or the storage management module of a database, conforms to an executable specification that contains an atomic method per data structure operation. The specification can be provided separately or a non-concurrent, "atomized" interpretation of the implementation can serve as the specification. The technique consists of two phases. In the first phase, the implementation is instrumented in order to record information into a log during execution. In the second, a separate verification thread uses the logged information to drive an instance of the specification and to check whether the logged execution conforms to it. We paid special attention to the general applicability and scalability of the techniques and to minimizing their concurrency and performance impact. The result is a lightweight verification method that provides a significant improvement over testing for concurrent programs.We formalize conformance to a specification using the notion of refinement: Each trace of the implementation must be equivalent to some trace of the specification. Among the novel features of our work are two variations on the definition of refinement appropriate for runtime checking: I/O and "view" refinement. These definitions were motivated by our experience with two industrial-scale concurrent data structure implementations: the Boxwood project, a B-link tree data structure built on a novel storage infrastructure [10] and the Scan file system [9]. I/O and view refinement checking were implemented as a verification tool named VRYD (VerifYing concurrent programs by Runtime Refinement-violation Detection). VYRD was applied to the verification of Boxwood, Java class libraries, and, previously, to the Scan filesystem. It was able to detect previously unnoticed subtle concurrency bugs in Boxwood and the Scan file system, and the known bugs in the Java class libraries and manually constructed examples. Experimental results indicate that our techniques have modest computational cost.
Tayfun Elmas, Serdar Tasiran, Shaz Qadeer
PLDI1