Yichen Xie 0001

dblp:x/YichenXie · DBLP profile ↗
← Back
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

TopicWeightPapersLastEvidence papers
Program analysis
static analysis
0.372007
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.232007
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.122007
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.122003
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.122003
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.122006
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.112007
Saturn: A scalable framework for error detection using Boolean satisfiability · ACM Trans. Program. Lang. Syst. 2007
Program analysis › error detection
memory leak detection
0.112005
Context- and path-sensitive memory leak detection · ESEC/SIGSOFT FSE 2005
Program analysis › data flow analysis
path-sensitive analysis
0.112005
Scalable error detection using boolean satisfiability · POPL 2005
Automated reasoning and model checking › model checking
software model checking
0.012004
Zing: A Model Checker for Concurrent Software · CAV 2004
Systems and software security › security verification
security property verification
0.012003
MECA: an extensible, expressive system and language for statically checking security properties · CCS 2003
Program analysis › dynamic analysis
memory error detection
0.012003
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.012002
A System and Language for Building System-Specific, Static Analyses · PLDI 2002
Systems and software security
memory safety
0.012005
Scalable error detection using boolean satisfiability · POPL 2005
Program analysis › static analysis › pointer analysis
escape analysis
0.012005
Context- and path-sensitive memory leak detection · ESEC/SIGSOFT FSE 2005
Program verification
specification verification
0.012003
Using Redundancies to Find Errors · IEEE Trans. Software Eng. 2003
Debugging and program repair
fault localization
0.012002
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
YearPublicationVenuePosition
2007 Saturn: A scalable framework for error detection using Boolean satisfiability
abstract
This 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 Symposium1
2005 Saturn: A SAT-Based Tool for Bug Detection
Yichen Xie 0001, Alex Aiken
CAV1
2005 Scalable error detection using boolean satisfiability
abstract
We 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
POPL1
2005 Context- and path-sensitive memory leak detection
abstract
We 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 FSE1
2004 Zing: A Model Checker for Concurrent Software
Tony Andrews, Shaz Qadeer, Sriram K. Rajamani, Jakob Rehof, Yichen Xie 0001
CAV5
2004 Zing: Exploiting Program Structure for Model Checking Concurrent Software
Tony Andrews, Shaz Qadeer, Sriram K. Rajamani, Yichen Xie 0001
CONCUR4
2003 MECA: an extensible, expressive system and language for statically checking security properties
abstract
This 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
CCS3
2003 ARCHER: using symbolic, path-sensitive analysis to detect memory access errors
abstract
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.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 FSE1
2003 Using Redundancies to Find Errors
abstract
Programmers 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 Analyses
abstract
This 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
PLDI3
2002 Using redundancies to find errors
abstract
This 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 FSE1