VLDB 2026 Research / reviewers in the wild / expert
Daniel Schwartz-Narbonne
dblp:00/7453
· DBLP profile ↗
10ranked-venue papers
4as first author
1since 2021 · last 2021
0000-0002-0453-2552ORCID · reported
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 9 · 4 first-author · 1 since 2021Theory of computation · 3 · 2 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
5 papers |
Program analysis · 36% Debugging and program repair · 30% Software testing · 15% | |
| Computer architecture, parallel and distributed computing, and storage systems
1 paper |
Electronic design automation · 77% Distributed systems · 23% |
Topics — the 12 heaviest of 12, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Debugging and program repair
fault localization |
0.6 | 4 | 2016 | VERMEER: A Tool for Tracing and Explaining Faulty C Programs · ICSE (2) 2015 Explaining inconsistent code · ESEC/SIGSOFT FSE 2013 passert: A Tool for Debugging Parallel Programs · CAV 2012 |
Program analysis
static analysis |
0.4 | 2 | 2015 | VERMEER: A Tool for Tracing and Explaining Faulty C Programs · ICSE (2) 2015 Explaining inconsistent code · ESEC/SIGSOFT FSE 2013 |
Program analysis
constraint solving |
0.3 | 1 | 2017 | A solver-aided language for test input generation · Proc. ACM Program. Lang. 2017 |
Software testing
test input generation |
0.3 | 1 | 2017 | A solver-aided language for test input generation · Proc. ACM Program. Lang. 2017 |
Program verification
concurrent program verification |
0.2 | 1 | 2016 | Error Invariants for Concurrent Traces · FM 2016 |
Program analysis › dynamic analysis
program tracing |
0.2 | 1 | 2015 | VERMEER: A Tool for Tracing and Explaining Faulty C Programs · ICSE (2) 2015 |
Concurrent programming
concurrency bugs |
0.1 | 1 | 2012 | passert: A Tool for Debugging Parallel Programs · CAV 2012 |
Debugging and program repair › concurrent program debugging
parallel program debugging |
0.1 | 1 | 2012 | passert: A Tool for Debugging Parallel Programs · CAV 2012 |
Electronic design automation
high-level synthesis |
0.1 | 1 | 2012 | Specification and synthesis of hardware checkpointing and rollback mechanisms · DAC 2012 |
Software testing
random testing |
0.1 | 1 | 2017 | A solver-aided language for test input generation · Proc. ACM Program. Lang. 2017 |
Program verification › dynamic verification › runtime verification
assertion checking |
0.0 | 1 | 2012 | passert: A Tool for Debugging Parallel Programs · CAV 2012 |
Distributed systems › fault tolerance
rollback recovery |
0.0 | 1 | 2012 | Specification and synthesis of hardware checkpointing and rollback mechanisms · DAC 2012 |
Methods — techniques the papers use, named apart from their topics
bounded enumeration · 0.3SMT solving · 0.3automated theorem proving · 0.2usability study · 0.2error invariant automaton · 0.2assertion checking · 0.1
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2021 | Code-level model checking in the software development workflow at Amazon Web ServicesabstractAbstract This article describes a style of applying symbolic model checking developed over the course of four years at Amazon Web Services (AWS). Lessons learned are drawn from proving properties of numerous C‐based systems, for example, custom hypervisors, encryption code, boot loaders, and an IoT operating system. Using our methodology, we find that we can prove the correctness of industrial low‐level C‐based systems with reasonable effort and predictability. Furthermore, AWS developers are increasingly writing their own formal specifications. As part of this effort, we have developed a CI system that allows integration of the proofs into standard development workflows and extended the proof tools to provide better feedback to users. All proofs discussed in this article are publicly available on GitHub. Nathan Chong, Byron Cook, Jonathan Eidelman, Konstantinos Kallas, Kareem Khazem, Felipe R. Monteiro, Daniel Schwartz-Narbonne, Serdar Tasiran, Michael Tautschnig, Mark R. Tuttle |
Softw. Pract. Exp. | 7 |
| 2017 | A solver-aided language for test input generationabstractDeveloping a small but useful set of inputs for tests is challenging. We show that a domain-specific language backed by a constraint solver can help the programmer with this process. The solver can generate a set of test inputs and guarantee that each input is different from other inputs in a way that is useful for testing. This paper presents Iorek: a tool that empowers the programmer with the ability to express to any SMT solver what it means for inputs to be different. The core of Iorek is a rich language for constraining the set of inputs, which includes a novel bounded enumeration mechanism that makes it easy to define and encode a flexible notion of difference over a recursive structure. We demonstrate the flexibility of this mechanism for generating strings. We use Iorek to test real services and find that it is effective at finding bugs. We also build Iorek into a random testing tool and show that it increases coverage. Talia Ringer, Dan Grossman, Daniel Schwartz-Narbonne, Serdar Tasiran |
Proc. ACM Program. Lang. | 3 |
| 2016 | Error Invariants for Concurrent Traces
Andreas Holzer, Daniel Schwartz-Narbonne, Mitra Tabaei Befrouei, Georg Weissenbacher, Thomas Wies |
FM | 2 |
| 2015 | VERMEER: A Tool for Tracing and Explaining Faulty C ProgramsabstractWe present VERMEER, a new automated debugging tool for C. VERMEER combines two functionalities: (1) a dynamic tracer that produces a linearized trace from a faulty C program and a given test input; and (2) a static analyzer that explains why the trace fails. The tool works in phases that simplify the input program to a linear trace, which is then analyzed using an automated theorem prover to produce the explanation. The output of each phase is a valid C program. VERMEER is able to produce useful explanations of non trivial traces for real C programs within a few seconds. The tool demo can be found at http://youtu.be/E5lKHNJVerU. Daniel Schwartz-Narbonne, Chanseok Oh, Martin Schäf, Thomas Wies |
ICSE (2) | 1 |
| 2014 | Concolic Fault LocalizationabstractAn integral part of all debugging activities is the task of diagnosing the cause of an error. Most existing fault diagnosis techniques rely on the availability of high quality test suites because they work by comparing failing and passing runs to identify the error cause. This limits their applicability. One alternative are techniques that statically analyze an error trace of the program without relying on additional passing runs to compare against. Particularly promising are novel proof-based approaches that leverage the advances in automated theorem proving to obtain an abstraction of the program that aids fault diagnostics. However, existing proof-based approaches still have practical limitations such as reduced scalability and dependence on complex mathematical models of programs. Such models are notoriously difficult to develop for real-world programs. Inspired by concolic testing, we propose a novel algorithm that integrates concrete execution and symbolic reasoning about the error trace to address these challenges. Specifically, we execute the error trace to obtain intermediate program states that allow us to split the trace into smaller fragments, each of which can be analyzed in isolation using an automated theorem prover. Moreover, we show how this approach can avoid complex logical encodings when reasoning about traces in low-level C programs. We have conducted an experiment where we applied our new algorithm to error traces generated from faulty versions of UNIX utils such as gzip and sed. Our experiment indicates that our concolic fault abstraction scales to real-world error traces and generates useful error diagnoses. Chanseok Oh, Martin Schäf, Daniel Schwartz-Narbonne, Thomas Wies |
SCAM | 3 |
| 2013 | Explaining inconsistent codeabstractA code fragment is inconsistent if it is not part of any normally terminating execution. Examples of such inconsistencies include code that is unreachable, code that always fails due to a run-time error, and code that makes conflicting assumptions about the program state. In this paper, we consider the problem of automatically explaining inconsistent code. This problem is difficult because traditional fault localization techniques do not apply. Our solution relies on a novel algorithm that takes an infeasible code fragment as input and generates a so-called error invariant automaton. The error invariant automaton is an abstraction of the input code fragment that only mentions program statements and facts that are relevant for understanding the cause of the inconsistency. We conducted a preliminary usability study which demonstrated that error invariant automata can help programmers better understand inconsistencies in code taken from real-world programs. In particular, access to an error invariant automata tripled the speed at which programmers could diagnose the cause of a code inconsistency. Martin Schäf, Daniel Schwartz-Narbonne, Thomas Wies |
ESEC/SIGSOFT FSE | 2 |
| 2012 | Parallel Assertions for Architectures with Weak Memory Models
Daniel Schwartz-Narbonne, Georg Weissenbacher, Sharad Malik |
ATVA | 1 |
| 2012 | passert: A Tool for Debugging Parallel Programs
Daniel Schwartz-Narbonne, David I. August, Sharad Malik |
CAV | 1 |
| 2012 | Specification and synthesis of hardware checkpointing and rollback mechanismsabstractThe increasing pressure to make hardware resilient to runtime failures has prompted development of design techniques for specific classes of systems, e.g. processors and routers. However, these techniques come at increased design and verification costs, thus limiting their broader application. In this work we describe a methodology for general RTL designs based on the widely usable checkpointing and rollback resiliency mechanism. We take a modeling and language approach that provides an appropriate set of abstractions for the resiliency logic. This cleanly separates the main design behavior from the resiliency behavior, leading to ease of design. Further, as the language abstractions can be automatically synthesized into resiliency logic, our methodology can merge with existing design flows. The concerns of verifying this additional resiliency logic can be addressed by synthesizing behavioral assertions capturing correct behavior. We demonstrate the use of this methodology on four examples, with synthesis for performance and area to estimate the overhead of the additional synthesis logic. Carven Chan, Daniel Schwartz-Narbonne, Divjyot Sethi, Sharad Malik |
DAC | 2 |
| 2011 | Parallel assertions for debugging parallel programsabstractA parallel program must execute correctly even in the presence of unpredictable thread interleavings. This interleaving makes it hard to write correct parallel programs, and also makes it hard to find bugs in incorrect parallel programs. A range of tools have been developed to help debug parallel programs, ranging from atomicity-violation and data-race detectors to model-checkers and theorem provers. One technique that has been successful for debugging sequential programs, but less effective for parallel programs, is running the program using assertion predicates provided by the developer. These assertions allow programmers to specify and check their assumptions. In a multi-threaded program, the programmer's assumptions include both the current state, and any actions (e.g. access to shared memory) that other, parallel executing threads might take. We introduce parallel assertions which allow programmers to express these assumptions for parallel programs using simple and intuitive syntax and semantics. We present a proof-of-concept implementation, and demonstrate its value by testing a number of benchmark programs using parallel assertions. Daniel Schwartz-Narbonne, Tarun Pondicherry, David I. August, Sharad Malik |
MEMOCODE | 1 |