EDBT 2026 Demo / reviewers in the wild / expert
Yichen Xie 0001
dblp:x/YichenXie
· DBLP profile ↗
12ranked-venue papers
8as first author
0since 2021 · last 2007
0000-0002-0974-5979ORCID · corroborated
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 9 · 7 first-authorTheory of computation · 3 · 1 first-authorSecurity and privacy · 2 · 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
9 papers |
Program analysis · 98% Program verification · 1% Debugging and program repair · 1% | |
| Network and information security
4 papers |
Systems and software security · 100% | |
| Theoretical computer science
2 papers |
Automated reasoning and model checking · 100% |
Topics — the 17 heaviest of 18, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Program analysis
static analysis |
0.3 | 7 | 2007 | Saturn: A scalable framework for error detection using Boolean satisfiability · ACM Trans. Program. Lang. Syst. 2007 Context- and path-sensitive memory leak detection · ESEC/SIGSOFT FSE 2005 Scalable error detection using boolean satisfiability · POPL 2005 |
Program analysis › static analysis
interprocedural analysis |
0.2 | 3 | 2007 | Saturn: A scalable framework for error detection using Boolean satisfiability · ACM Trans. Program. Lang. Syst. 2007 Scalable error detection using boolean satisfiability · POPL 2005 A System and Language for Building System-Specific, Static Analyses · PLDI 2002 |
Program analysis › static analysis › interprocedural analysis
procedure summarization |
0.1 | 2 | 2007 | Saturn: A scalable framework for error detection using Boolean satisfiability · ACM Trans. Program. Lang. Syst. 2007 Scalable error detection using boolean satisfiability · POPL 2005 |
Program analysis › static analysis
bug detection |
0.1 | 2 | 2003 | Using Redundancies to Find Errors · IEEE Trans. Software Eng. 2003 A System and Language for Building System-Specific, Static Analyses · PLDI 2002 |
Program analysis › code quality analysis
redundancy detection |
0.1 | 2 | 2003 | Using Redundancies to Find Errors · IEEE Trans. Software Eng. 2003 Using redundancies to find errors · SIGSOFT FSE 2002 |
Systems and software security
vulnerability discovery |
0.1 | 2 | 2006 | Static Detection of Security Vulnerabilities in Scripting Languages · USENIX Security Symposium 2006 ARCHER: using symbolic, path-sensitive analysis to detect memory access errors · ESEC / SIGSOFT FSE 2003 |
Program analysis
error detection |
0.1 | 1 | 2007 | Saturn: A scalable framework for error detection using Boolean satisfiability · ACM Trans. Program. Lang. Syst. 2007 |
Program analysis › error detection
memory leak detection |
0.1 | 1 | 2005 | Context- and path-sensitive memory leak detection · ESEC/SIGSOFT FSE 2005 |
Program analysis › data flow analysis
path-sensitive analysis |
0.1 | 1 | 2005 | Scalable error detection using boolean satisfiability · POPL 2005 |
Automated reasoning and model checking › model checking
software model checking |
0.0 | 1 | 2004 | Zing: A Model Checker for Concurrent Software · CAV 2004 |
Systems and software security › security verification
security property verification |
0.0 | 1 | 2003 | MECA: an extensible, expressive system and language for statically checking security properties · CCS 2003 |
Program analysis › dynamic analysis
memory error detection |
0.0 | 1 | 2003 | ARCHER: using symbolic, path-sensitive analysis to detect memory access errors · ESEC / SIGSOFT FSE 2003 |
Program analysis › static analysis › interprocedural analysis
context-sensitive analysis |
0.0 | 1 | 2002 | A System and Language for Building System-Specific, Static Analyses · PLDI 2002 |
Systems and software security
memory safety |
0.0 | 1 | 2005 | Scalable error detection using boolean satisfiability · POPL 2005 |
Program analysis › static analysis › pointer analysis
escape analysis |
0.0 | 1 | 2005 | Context- and path-sensitive memory leak detection · ESEC/SIGSOFT FSE 2005 |
Program verification
specification verification |
0.0 | 1 | 2003 | Using Redundancies to Find Errors · IEEE Trans. Software Eng. 2003 |
Debugging and program repair
fault localization |
0.0 | 1 | 2002 | Using redundancies to find errors · SIGSOFT FSE 2002 |
Methods — techniques the papers use, named apart from their topics
path-sensitive analysis · 0.2lock interface inference · 0.1boolean satisfiability · 0.1statistical code analysis · 0.1constraint solving · 0.1redundancy checkers · 0.1function summaries · 0.1Boolean satisfiability (SAT) · 0.1context-sensitive analysis · 0.1boolean constraint solving · 0.1SAT solving · 0.1symbolic analysis · 0.0static checking · 0.0annotation language · 0.0
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2007 | Saturn: A scalable framework for error detection using Boolean satisfiabilityabstractThis article presents Saturn, a general framework for building precise and scalable static error detection systems. Saturn exploits recent advances in Boolean satisfiability (SAT) solvers and is path sensitive, precise down to the bit level, and models pointers and heap data. Our approach is also highly scalable, which we achieve using two techniques. First, for each program function, several optimizations compress the size of the Boolean formulas that model the control flow and data flow and the heap locations accessed by a function. Second, summaries in the spirit of type signatures are computed for each function, allowing interprocedural analysis without a dramatic increase in the size of the Boolean constraints to be solved. We have experimentally validated our approach by conducting two case studies involving a Linux lock checker and a memory leak checker. Results from the experiments show that our system scales well, parallelizes well, and finds more errors with fewer false positives than previous static error detection systems. Yichen Xie 0001, Alex Aiken |
ACM Trans. Program. Lang. Syst. | 1 |
| 2006 | Static Detection of Security Vulnerabilities in Scripting Languages
Yichen Xie 0001, Alex Aiken |
USENIX Security Symposium | 1 |
| 2005 | Saturn: A SAT-Based Tool for Bug Detection
Yichen Xie 0001, Alex Aiken |
CAV | 1 |
| 2005 | Scalable error detection using boolean satisfiabilityabstractWe describe a software error-detection tool that exploits recent advances in boolean satisfiability (SAT) solvers. Our analysis is path sensitive, precise down to the bit level, and models pointers and heap data. Our approach is also highly scalable, which we achieve using two techniques. First, for each program function, several optimizations compress the size of the boolean formulas that model the control- and data-flow and the heap locations accessed by a function. Second, summaries in the spirit of type signatures are computed for each function, allowing inter-procedural analysis without a dramatic increase in the size of the boolean constraints to be solved.We demonstrate the effectiveness of our approach by constructing a lock interface inference and checking tool. In an interprocedural analysis of more than 23,000 lock related functions in the latest Linux kernel, the checker generated 300 warnings, of which 179 were unique locking errors, a false positive rate of only 40%. Yichen Xie 0001, Alex Aiken |
POPL | 1 |
| 2005 | Context- and path-sensitive memory leak detectionabstractWe present a context- and path-sensitive algorithm for detecting memory leaks in programs with explicit memory management. Our leak detection algorithm is based on an underlying escape analysis: any allocated location in a procedure P that is not deallocated in P and does not escape from P is leaked. We achieve very precise context- and path-sensitivity by expressing our analysis using boolean constraints. In experiments with six large open source projects our analysis produced 510 warnings of which 455 were unique memory leaks, a false positive rate of only 10.8%. A parallel implementation improves performance by over an order of magnitude on large projects; over five million lines of code in the Linux kernel is analyzed in 50 minutes. Yichen Xie 0001, Alex Aiken |
ESEC/SIGSOFT FSE | 1 |
| 2004 | Zing: A Model Checker for Concurrent Software
Tony Andrews, Shaz Qadeer, Sriram K. Rajamani, Jakob Rehof, Yichen Xie 0001 |
CAV | 5 |
| 2004 | Zing: Exploiting Program Structure for Model Checking Concurrent Software
Tony Andrews, Shaz Qadeer, Sriram K. Rajamani, Yichen Xie 0001 |
CONCUR | 4 |
| 2003 | MECA: an extensible, expressive system and language for statically checking security propertiesabstractThis paper describes a system and annotation language, MECA, for checking security rules. MECA is expressive and designed for checking real systems. It provides a variety of practical constructs to effectively annotate large bodies of code. For example, it allows programmers to write programmatic annotators that automatically annotate large bodies of source code. As another example, it lets programmers use general predicates to determine if an annotation is applied; we have used this ability to easily handle kernel backdoors and other false-positive inducing constructs. Once code is annotated, MECA propagates annotations aggressively, allowing a single manual annotation to derive many additional annotations (e.g., over one hundred in our experiments) freeing programmers from the heavy manual effort required by most past systems.MECA is effective. Our most thorough case study was a user-pointer checker that used 75 annotations to check thousands of declarations in millions of lines of code in the Linux system. It found over forty errors, many of which were serious, while only having eight false positives. Ted Kremenek, Yichen Xie 0001, Dawson R. Engler |
CCS | 3 |
| 2003 | ARCHER: using symbolic, path-sensitive analysis to detect memory access errorsabstractMemory corruption errors lead to non-deterministic, elusive crashes. This paper describes ARCHER (ARray CHeckER) a static, effective memory access checker. ARCHER uses path-sensitive, interprocedural symbolic analysis to bound the values of both variables and memory sizes. It evaluates known values using a constraint solver at every array access, pointer dereference, or call to a function that expects a size parameter. Accesses that violate constraints are flagged as errors. Those that are exploitable by malicious attackers are marked as security holes.Memory corruption errors lead to non-deterministic, elusive crashes. This paper describes ARCHER (ARray CHeckER) a static, effective memory access checker. ARCHER uses path-sensitive, interprocedural symbolic analysis to bound the values of both variables and memory sizes. It evaluates known values using a constraint solver at every array access, pointer dereference, or call to a function that expects a size parameter. Accesses that violate constraints are flagged as errors. Those that are exploitable by malicious attackers are marked as security holes.We carefully designed ARCHER to work well on large bodies of source code. It requires no annotations to use (though it can use them). Its solver has been built to be powerful in the ways that real code requires, while backing off on the places that were irrelevant. Selective power allows it to gain efficiency while avoiding classes of false positives that arise when a complex analysis interacts badly with statically undecidable program properties. ARCHER uses statistical code analysis to automatically infer the set of functions that it should track --- this inference serves as a robust guard against omissions, especially in large systems which can have hundreds of such functions.In practice ARCHER is effective: it finds many errors; its analysis scales to systems of millions of lines of code and the average false positive rate of our results is below 35%. We have run ARCHER over several large open source software projects --- such as Linux, OpenBSD, Sendmail, and PostgreSQL --- and have found errors in all of them (118 in the case of Linux, including 21 security holes). Yichen Xie 0001, Andy Chou, Dawson R. Engler |
ESEC / SIGSOFT FSE | 1 |
| 2003 | Using Redundancies to Find ErrorsabstractProgrammers generally attempt to perform useful work. If they performed an action, it was because they believed it served some purpose. Redundant operations violate this belief. However, in the past, redundant operations have been typically regarded as minor cosmetic problems rather than serious errors. This paper demonstrates that, in fact, many redundancies are as serious as traditional hard errors (such as race conditions or null pointer dereferences). We experimentally test this idea by writing and applying five redundancy checkers to a number of large open source projects, finding many errors. We then show that, even when redundancies are harmless, they strongly correlate with the presence of traditional hard errors. Finally, we show how flagging redundant operations gives a way to detect mistakes and omissions in specifications. For example, a locking specification that binds shared variables to their protecting locks can use redundancies to detect missing bindings by flagging critical sections that include no shared state. Yichen Xie 0001, Dawson R. Engler |
IEEE Trans. Software Eng. | 1 |
| 2002 | A System and Language for Building System-Specific, Static AnalysesabstractThis paper presents a novel approach to bug-finding analysis and an implementation of that approach. Our goal is to find as many serious bugs as possible. To do so, we designed a flexible, easy-to-use extension language for specifying analyses and an efficent algorithm for executing these extensions. The language, metal, allows the users of our system to specify a broad class of analyses in terms that resemble the intuitive description of the rules that they check. The system, xgcc, executes these analyses efficiently using a context-sensitive, interprocedural analysis. Our prior work has shown that the approach described in this paper is effective: it has successfully found thousands of bugs in real systems code. This paper describes the underlying system used to achieve these results. We believe that our system is an effective framework for deploying new bug-finding analyses quickly and easily. Seth Hallem, Benjamin Chelf, Yichen Xie 0001, Dawson R. Engler |
PLDI | 3 |
| 2002 | Using redundancies to find errorsabstractThis paper explores the idea that redundant operations, like type errors, commonly flag correctness errors. We experimentally test this idea by writing and applying four redundancy checkers to the Linux operating system, finding many errors. We then use these errors to demonstrate that redundancies, even when harmless, strongly correlate with the presence of traditional hard errors (e.g., null pointer dereferences, unreleased locks). Finally we show that how flagging redundant operations gives a way to make specifications "fail stop" bydetecting dangerous omissions. Yichen Xie 0001, Dawson R. Engler |
SIGSOFT FSE | 1 |