Benjamin Chelf

dblp:28/2333 · DBLP profile ↗
← Back
5ranked-venue papers
1as first author
0since 2021 · last 2002
—ORCID · none

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

Software engineering, systems software and programming languages · 5 · 1 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
4 papers
Program analysis · 68% Program verification · 17% Operating systems · 12%
Computer architecture, parallel and distributed computing, and storage systems
1 paper
Memory systems · 100%

Topics — the 10 heaviest of 11, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Program analysis
static analysis
0.132001
An Empirical Study of Operating System Errors · SOSP 2001
Checking System Rules Using System-Specific, Programmer-Written Compiler Extensions · OSDI 2000
Using Meta-level Compilation to Check FLASH Protocol Code · ASPLOS 2000
Program analysis › static analysis
bug detection
0.012002
A System and Language for Building System-Specific, Static Analyses · PLDI 2002
Program analysis › static analysis › interprocedural analysis
context-sensitive analysis
0.012002
A System and Language for Building System-Specific, Static Analyses · PLDI 2002
Program analysis › static analysis
interprocedural analysis
0.012002
A System and Language for Building System-Specific, Static Analyses · PLDI 2002
Program verification › invariant verification
invariant checking
0.012000
Using Meta-level Compilation to Check FLASH Protocol Code · ASPLOS 2000
Program analysis › program analysis infrastructure
meta-level compilation
0.012000
Using Meta-level Compilation to Check FLASH Protocol Code · ASPLOS 2000
Program verification › protocol verification
protocol code verification
0.012000
Using Meta-level Compilation to Check FLASH Protocol Code · ASPLOS 2000
Empirical software engineering
mining software repositories
0.012001
An Empirical Study of Operating System Errors · SOSP 2001
Memory systems
cache coherence
0.012000
Using Meta-level Compilation to Check FLASH Protocol Code · ASPLOS 2000
Memory systems › cache coherence › cache coherence protocol
cache coherence protocol verification
0.012000
Using Meta-level Compilation to Check FLASH Protocol Code · ASPLOS 2000

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

system-specific checkers · 0.1meta-level compilation · 0.1context-sensitive interprocedural analysis · 0.0static compiler analysis · 0.0
YearPublicationVenuePosition
2002 How to write system-specific, static checkers in metal
abstract
This paper gives an overview of the metal language, which we have designed to make it easy to construct system-specific, static analyses. We call these analyses extensions because they act as the input to a generic analysis engine that runs the static analysis over a given source base. We also interchangeably refer to them as checkers because they check that a user-specified property holds in the source base and report any violations of that property. Note that checkers may not detect all violations of a specified property. Their goal is to find as many violations as possible with a minimum of false positives
Benjamin Chelf, Dawson R. Engler, Seth Hallem
PASTE1
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
PLDI2
2001 An Empirical Study of Operating System Errors
abstract
We present a study of operating system errors found by automatic, static, compiler analysis applied to the Linux and OpenBSD kernels. Our approach differs from previous studies that consider errors found by manual inspection of logs, testing, and surveys because static analysis is applied uniformly to the entire kernel source, though our approach necessarily considers a less comprehensive variety of errors than previous studies. In addition, automation allows us to track errors over multiple versions of the kernel source to estimate how long errors remain in the system before they are fixed.We found that device drivers have error rates up to three to seven times higher than the rest of the kernel. We found that the largest quartile of functions have error rates two to six times higher than the smallest quartile. We found that the newest quartile of files have error rates up to twice that of the oldest quartile, which provides evidence that code "hardens" over time. Finally, we found that bugs remain in the Linux kernel an average of 1.8 years before being fixed.
Andy Chou, Benjamin Chelf, Seth Hallem, Dawson R. Engler
SOSP3
2000 Using Meta-level Compilation to Check FLASH Protocol Code
abstract
Building systems such as OS kernels and embedded software is difficult. An important source of this difficulty is the numerous rules they must obey: interrupts cannot be disabled for ~too long," global variables must be protected by locks, user pointers passed to OS code must be checked for safety before use, etc. A single violation can crash the system, yet typically these invariants are unchecked, existing only on paper or in the implementor's mind.This paper is a case study in how system implementors can use a new programming methodology, meta-level compilation (MC), to easily check such invariants. It focuses on using MC to check for errors in the code used to manage cache coherence on the FLASH shared memory multiprocessor. The only real practical method known for verifying such code is testing and simulation. We show that simple, system-specific checkers can dramatically improve this situation by statically pinpointing errors in the program source. These checkers can be written by implementors themselves and, by exploiting the system-specific information this allows, can detect errors unreachable with other methods. The checkers in this paper found 34 bugs in FLASH code despite the care used in building it and the years of testing it has undergone. Many of these errors fall in the worst category of systems bugs: those that show up sporadically only after days of continuous use. The case study is interesting because it shows that the MC approach finds serious errors in well-tested, non-toy systems code. Further, the code to find such bugs is usually 10-100 lines long, written in a few hours, and exactly locates errors that, if discovered during testing, would require several days of investigation by an experienced implementor.The paper presents 8 checkers we wrote, their application to five different protocol implementations, and a discussion of the errors that we found.
Andy Chou, Benjamin Chelf, Dawson R. Engler, Mark A. Heinrich
ASPLOS2
2000 Checking System Rules Using System-Specific, Programmer-Written Compiler Extensions
Dawson R. Engler, Benjamin Chelf, Andy Chou, Seth Hallem
OSDI2