VLDB 2026 Research / reviewers in the wild / expert
Duc-Hiep Chu
dblp:29/10300
· DBLP profile ↗
14ranked-venue papers
7as first author
0since 2021 · last 2020
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 9 · 4 first-authorTheory of computation · 3 · 1 first-authorSecurity and privacy · 2Applied, interdisciplinary, general and emerging computing · 2 · 2 first-authorSystems, architecture and hardware · 1 · 1 first-author
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
6 papers |
Debugging and program repair · 42% Program analysis · 29% Program synthesis and code generation · 17% | |
| Theoretical computer science
4 papers |
Automated reasoning and model checking · 100% | |
| Network and information security
2 papers |
Blockchain and cryptocurrency security · 54% Cryptographic primitives and cryptanalysis · 26% Web and mobile security · 20% |
Topics — the 17 heaviest of 18, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Automated reasoning and model checking › constraint solving
string constraint solving |
1.0 | 3 | 2020 | Inter-theory dependency analysis for SMT string solvers · Proc. ACM Program. Lang. 2020 Model Counting for Recursively-Defined Strings · CAV (2) 2017 Progressive Reasoning over Recursively-Defined Strings · CAV (1) 2016 |
Debugging and program repair
automated program repair |
0.6 | 2 | 2017 | S3: syntax- and semantic-guided repair synthesis via programming by examples · ESEC/SIGSOFT FSE 2017 JFIX: semantics-based repair of Java programs via symbolic PathFinder · ISSTA 2017 |
Debugging and program repair › automated program repair
semantics-based program repair |
0.6 | 2 | 2017 | S3: syntax- and semantic-guided repair synthesis via programming by examples · ESEC/SIGSOFT FSE 2017 JFIX: semantics-based repair of Java programs via symbolic PathFinder · ISSTA 2017 |
Program analysis › constraint solving
string constraint solving |
0.5 | 2 | 2017 | Model Counting for Recursively-Defined Strings · CAV (2) 2017 Progressive Reasoning over Recursively-Defined Strings · CAV (1) 2016 |
Automated reasoning and model checking
satisfiability modulo theories |
0.4 | 1 | 2020 | Inter-theory dependency analysis for SMT string solvers · Proc. ACM Program. Lang. 2020 |
Program analysis › constraint solving
model counting |
0.3 | 1 | 2017 | Model Counting for Recursively-Defined Strings · CAV (2) 2017 |
Program synthesis and code generation
programming by example |
0.3 | 1 | 2017 | S3: syntax- and semantic-guided repair synthesis via programming by examples · ESEC/SIGSOFT FSE 2017 |
Program synthesis and code generation
syntax-guided synthesis |
0.3 | 1 | 2017 | S3: syntax- and semantic-guided repair synthesis via programming by examples · ESEC/SIGSOFT FSE 2017 |
Debugging and program repair › automated program repair
synthesis repair |
0.3 | 1 | 2017 | S3: syntax- and semantic-guided repair synthesis via programming by examples · ESEC/SIGSOFT FSE 2017 |
Cryptographic primitives and cryptanalysis
security analysis |
0.2 | 1 | 2016 | Making Smart Contracts Smarter · CCS 2016 |
Blockchain and cryptocurrency security
smart contract |
0.2 | 1 | 2016 | Making Smart Contracts Smarter · CCS 2016 |
Program verification
data structure verification |
0.2 | 1 | 2015 | Automatic induction proofs of data-structures in imperative programs · PLDI 2015 |
Program verification › theorem proving
inductive theorem proving |
0.2 | 1 | 2015 | Automatic induction proofs of data-structures in imperative programs · PLDI 2015 |
Blockchain and cryptocurrency security › smart contract security
vulnerability detection |
0.2 | 1 | 2014 | S3: A Symbolic String Solver for Vulnerability Detection in Web Applications · CCS 2014 |
Web and mobile security › web security
web application vulnerability detection |
0.2 | 1 | 2014 | S3: A Symbolic String Solver for Vulnerability Detection in Web Applications · CCS 2014 |
Program analysis
symbolic execution |
0.2 | 1 | 2014 | S3: A Symbolic String Solver for Vulnerability Detection in Web Applications · CCS 2014 |
Blockchain and cryptocurrency security
blockchain protocols |
0.1 | 1 | 2016 | Making Smart Contracts Smarter · CCS 2016 |
Methods — techniques the papers use, named apart from their topics
symbolic execution · 0.6dependency analysis · 0.4SMT solving · 0.4constraint solving · 0.4ranking features · 0.3program synthesis · 0.3enumerative search · 0.3program analysis · 0.2induction hypothesis · 0.2fold/unfold · 0.2regular expressions · 0.2regular expression · 0.2
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2020 | Inter-theory dependency analysis for SMT string solversabstractSolvers in the framework of Satisfiability Modulo Theories (SMT) have been widely successful in practice. Recently there has been an increasing interest in solvers for string constraints to address security issues in web programming, for example. To be practically useful, the solvers need to support an expressive constraint language over unbounded strings, and in particular, over string lengths. Satisfiability checking for these formulas, especially in the SMT context, is very hard; it is generally undecidable for a rich fragment. In this paper, we propose a form of dependency analysis for a rich fragment of string constraints including high-level operations such as length, contains to deal with their inter-theory interaction so as to solve them more efficiently. We implement our dependency analysis in the string theory of the Z3 solver to obtain a new one, called S3N. Finally, we demonstrate the superior performance of S3N over state-of-the-art string solvers such as Z3str3, CVC4, S3P, and Z3 on several large industrial-strength benchmarks. Minh-Thai Trinh, Duc-Hiep Chu, Joxan Jaffar |
Proc. ACM Program. Lang. | 2 |
| 2017 | Model Counting for Recursively-Defined Strings
Minh-Thai Trinh, Duc-Hiep Chu, Joxan Jaffar |
CAV (2) | 2 |
| 2017 | JFIX: semantics-based repair of Java programs via symbolic PathFinderabstractRecently there has been a proliferation of automated program repair (APR) techniques, targeting various programming languages. Such techniques can be generally classified into two families: syntactic- and semantics-based. Semantics-based APR, on which we focus, typically uses symbolic execution to infer semantic constraints and then program synthesis to construct repairs conforming to them. While syntactic-based APR techniques have been shown success- ful on bugs in real-world programs written in both C and Java, semantics-based APR techniques mostly target C programs. This leaves empirical comparisons of the APR families not fully explored, and developers without a Java-based semantics APR technique. We present JFix, a semantics-based APR framework that targets Java, and an associated Eclipse plugin. JFix is implemented atop Symbolic PathFinder, a well-known symbolic execution engine for Java programs. It extends one particular APR technique (Angelix), and is designed to be sufficiently generic to support a variety of such techniques. We demonstrate that semantics-based APR can indeed efficiently and effectively repair a variety of classes of bugs in large real-world Java programs. This supports our claim that the framework can both support developers seeking semantics-based repair of bugs in Java programs, as well as enable larger scale empirical studies comparing syntactic- and semantics-based APR targeting Java. The demonstration of our tool is available via the project website at: https://xuanbachle.github.io/semanticsrepair/ Bach Le 0001, Duc-Hiep Chu, David Lo 0001, Claire Le Goues, Willem Visser |
ISSTA | 2 |
| 2017 | S3: syntax- and semantic-guided repair synthesis via programming by examplesabstractA notable class of techniques for automatic program repair is known as semantics-based. Such techniques, e.g., Angelix, infer semantic specifications via symbolic execution, and then use program synthesis to construct new code that satisfies those inferred specifications. However, the obtained specifications are naturally incomplete, leaving the synthesis engine with a difficult task of synthesizing a general solution from a sparse space of many possible solutions that are consistent with the provided specifications but that do not necessarily generalize. We present S3, a new repair synthesis engine that leverages programming-by-examples methodology to synthesize high-quality bug repairs. The novelty in S3 that allows it to tackle the sparse search space to create more general repairs is three-fold: (1) A systematic way to customize and constrain the syntactic search space via a domain-specific language, (2) An efficient enumeration- based search strategy over the constrained search space, and (3) A number of ranking features based on measures of the syntactic and semantic distances between candidate solutions and the original buggy program. We compare S3’s repair effectiveness with state-of-the-art synthesis engines Angelix, Enumerative, and CVC4. S3 can successfully and correctly fix at least three times more bugs than the best baseline on datasets of 52 bugs in small programs, and 100 bugs in real-world large programs. Bach Le 0001, Duc-Hiep Chu, David Lo 0001, Claire Le Goues, Willem Visser |
ESEC/SIGSOFT FSE | 2 |
| 2016 | Progressive Reasoning over Recursively-Defined Strings
Minh-Thai Trinh, Duc-Hiep Chu, Joxan Jaffar |
CAV (1) | 2 |
| 2016 | Making Smart Contracts SmarterabstractCryptocurrencies record transactions in a decentralized data structure called a blockchain. Two of the most popular cryptocurrencies, Bitcoin and Ethereum, support the feature to encode rules or scripts for processing transactions. This feature has evolved to give practical shape to the ideas of smart contracts, or full-fledged programs that are run on blockchains. Recently, Ethereum's smart contract system has seen steady adoption, supporting tens of thousands of contracts, holding millions dollars worth of virtual coins. Loi Luu, Duc-Hiep Chu, Hrishi Olickel, Prateek Saxena, Aquinas Hobor |
CCS | 2 |
| 2016 | Symbolic execution for memory consumption analysisabstractWith the advances in both hardware and software of embedded systems in the past few years, dynamic memory allocation can now be safely used in embedded software. As a result, the need to develop methods to avoid heap overflow errors in safety-critical embedded systems has increased. Resource analysis of imperative programs with non-regular loop patterns and signed integers, to support both memory allocation and deallocation, has long been an open problem. Existing methods can generate symbolic bounds that are parametric w.r.t. the program inputs; such bounds, however, are imprecise in the presence of non-regular loop patterns. In this paper, we present a worst-case memory consumption analysis, based upon the framework of symbolic execution. Our assumption is that loops (and recursions) of to-be-analyzed programs are indeed bounded. We then can exhaustively unroll loops and the memory consumption of each iteration can be precisely computed and summarized for aggregation. Because of path-sensitivity, our algorithm generates more precise bounds. Importantly, we demonstrate that by introducing a new concept of reuse, symbolic execution scales to a set of realistic benchmark programs. Duc-Hiep Chu, Joxan Jaffar, Rasool Maghareh |
LCTES | 1 |
| 2016 | Precise Cache Timing Analysis via Symbolic ExecutionabstractWe present a framework for WCET analysis of programs with emphasis on cache micro-architecture. Such an analysis is challenging primarily because of the timing model of a dynamic nature, that is, the timing of a basic block is heavily dependent on the context in which it is executed. At its core, our algorithm is based on symbolic execution, and an analysis is obtained by locating the "longest" symbolic execution path. Clearly a challenge is the intractable number of paths in the symbolic execution tree. Traditionally this challenge is met by performing some form of abstraction in the path generation process but this leads to a loss of path-sensitivity and thus precision in the analysis. The key feature of our algorithm is the ability for reuse. This is critical for maintaining a high-level of path-sensitivity, which in turn produces significantly increased accuracy. In other words, reuse allows scalability in path-sensitive exploration. Finally, we present an experimental evaluation on well known benchmarks in order to show two things: that systematic path-sensitivity in fact brings significant accuracy gains, and that the algorithm still scales well. Duc-Hiep Chu, Joxan Jaffar, Rasool Maghareh |
RTAS | 1 |
| 2015 | Automatic induction proofs of data-structures in imperative programsabstractWe consider the problem of automated reasoning about dynamically manipulated data structures. Essential properties are encoded as predicates whose definitions are formalized via user-defined recursive rules. Traditionally, proving relationships between such properties is limited to the unfold-and-match (U+M) paradigm which employs systematic transformation steps of folding/unfolding the rules. A proof, using U+M, succeeds when we find a sequence of transformations that produces a final formula which is obviously provable by simply matching terms. Our contribution here is the addition of the fundamental principle of induction to this automated process. We first show that some proof obligations that are dynamically generated in the process can be used as induction hypotheses in the future, and then we show how to use these hypotheses in an induction step which generates a new proof obligation aside from those obtained by using the fold/unfold operations. While the adding of induction is an obvious need in general, no automated method has managed to include this in a systematic and general way. The main reason for this is the problem of avoiding circular reasoning. We overcome this with a novel checking condition. In summary, our contribution is a proof method which – beyond U+M – performs automatic formula re-writing by treating previously encountered obligations in each proof path as possible induction hypotheses. In the practical evaluation part of this paper, we show how the commonly used technique of using unproven lemmas can be avoided, using realistic benchmarks. This not only removes the current burden of coming up with the appropriate lemmas, but also significantly boosts up the verification process, since lemma applications, coupled with unfolding, often induce a large search space. In the end, our method can automatically reason about a new class of formulas arising from practical program verification. Duc-Hiep Chu, Joxan Jaffar, Minh-Thai Trinh |
PLDI | 1 |
| 2014 | S3: A Symbolic String Solver for Vulnerability Detection in Web ApplicationsabstractMotivated by the vulnerability analysis of web programs which work on string inputs, we present S3, a new symbolic string solver. Our solver employs a new algorithm for a constraint language that is expressive enough for widespread applicability. Specifically, our language covers all the main string operations, such as those in JavaScript. The algorithm first makes use of a symbolic representation so that membership in a set defined by a regular expression can be encoded as string equations. Secondly, there is a constraint-based generation of instances from these symbolic expressions so that the total number of instances can be limited. We evaluate S3 on a well-known set of practical benchmarks, demonstrating both its robustness (more definitive answers) and its efficiency (about 20 times faster) against the state-of-the-art. Minh-Thai Trinh, Duc-Hiep Chu, Joxan Jaffar |
CCS | 2 |
| 2014 | Lazy Symbolic Execution for Enhanced Learning
Duc-Hiep Chu, Joxan Jaffar, Vijayaraghavan Murali |
RV | 1 |
| 2013 | Path-sensitive resource analysis compliant with assertionsabstractWe consider the problem of bounding the worst-case resource usage of programs, where assertions about valid program executions may be enforced at selected program points. It is folklore that to be precise, path-sensitivity (up to loops) is needed. This entails unrolling loops in the manner of symbolic simulation. To be tractable, however, the treatment of the individual loop iterations must be greedy in the sense once analysis is finished on one iteration, we cannot backtrack to change it. We show that under these conditions, enforcing assertions produces unsound results. The fundamental reason is that complying with assertions requires the analysis to be fully sensitive (also with loops) wrt. the assertion variables. We then present an algorithm where the treatment of each loop is separated in two phases. The first phase uses a greedy strategy in unrolling the loop. This phase explores what is conceptually a symbolic execution tree, which is of enormous size, while eliminates infeasible paths and dominated paths that guaranteed not to contribute to the worst case bound. A compact representation is produced at the end of this phase. Finally, the second phase attacks the remaining problem, to determine the worst-case path in the simplified tree, excluding all paths that violate the assertions from bound calculation. Scalability, in both phases, is achieved via an adaptation of a dynamic programming algorithm. Duc-Hiep Chu, Joxan Jaffar |
EMSOFT | 1 |
| 2012 | A Complete Method for Symmetry Reduction in Safety Verification
Duc-Hiep Chu, Joxan Jaffar |
CAV | 1 |
| 2011 | Symbolic simulation on complicated loops for WCET path analysisabstractWe address the Worst-Case Execution Time (WCET) Path Analysis problem for bounded programs, formalized as discovering a tight upper bound of a resource variable. A key challenge is posed by complicated loops whose iterations exhibit non-uniform behavior. We adopt a brute-force strategy by simply unrolling them, and show how to make this scalable while preserving accuracy. Duc-Hiep Chu, Joxan Jaffar |
EMSOFT | 1 |