Ben Liblit
I am no longer affiliated with the University of Wisconsin.
I was an associate professor of computer science, specializing in
software engineering and programming languages. My work in this
area began with a pioneering four-year field study on the
practice of programming. (That is, I was an actual grownup with
a real job as a software engineer.) Today it is the challenges
and needs of the professional programmer that inspire my
research.
My research team:
Bug Isolation in an Imperfect World
How many times has your computer crashed this month? My current
focus is on improving software quality in a world where bugs are
a fact of life. I seek practical ways to use program analysis,
machine learning, and other techniques to understand and fix
bugs in the real world.
Error Propagation
Finding and Fixing Bugs in Concurrent and Parallel Programs
- Fixing, Preventing, and Recovering From Concurrency Bugs,
SCIS 2015 invited paper
- Statistically Debugging Massively-Parallel Applications,
technical report 2013
- Automated Concurrency-Bug Fixing,
USENIX OSDI
2012
- Automated Atomicity-Violation Fixing,
PLDI 2011, CACM Research Highlight nominee
- Instrumentation and Sampling Strategies for Cooperative Concurrency Bug Isolation,
OOPSLA 2010
- Cooperative Crug Isolation,
WODA 2009
- Scalable Temporal Order Analysis for Large Scale Debugging,
SC 2009
- Lessons Learned at 208K: Towards Debugging Millions of Cores,
SC 2008
Postmortem Program Analysis
- A Set-Covering Approach to Customized Coverage Instrumentation,
IJOC 2024
- Control-Flow Recovery from Partial Failure Reports,
PLDI 2017
- Supporting Proofs for Control-Flow Recovery from Partial Failure Reports,
technical report 2017
- Encoding Optimal Customized Coverage Instrumentation,
technical report 2016
- Optimizing Customized Program Coverage,
ASE 2016
- Lightweight Control-Flow Instrumentation and Postmortem
Analysis in Support of Debugging,
ASE journal 2017
- CSIclipse: Presenting Crash Analysis Data to Developers,
ETX 2015
- Recovering Execution Data from Incomplete Observations,
WODA 2015
- Cores, Debugging, and Coverage,
technical report 2015
- Lightweight Control-Flow Instrumentation and Postmortem
Analysis in Support of Debugging,
ASE 2013, Distinguished Paper Award
- Better Debugging via Output Tracing and Callstack-Sensitive Slicing,
TSE 2010
- Path Optimization in Programs and its Application to Debugging,
ESOP 2006
- BTrace: Path Optimization for Debugging,
technical report 2005
- Building a Better Backtrace: Techniques for Postmortem Program Analysis,
technical report 2002
Statistical Debugging and Cooperative Bug Isolation
- Statistically Debugging Massively-Parallel Applications,
technical report 2013
- Instrumentation and Sampling Strategies for Cooperative Concurrency Bug Isolation,
OOPSLA 2010
- Adaptive Bug Isolation,
ICSE 2010
- Cooperative Crug Isolation,
WODA 2009
- Holmes: Effective Statistical Debugging via Efficient Path Profiling,
ICSE 2009,
technical report 2008
- Reflections on the Role of Static Analysis in Cooperative Bug Isolation,
SAS 2008 invited paper
- Statistical Debugging Using Latent Topic Models,
ECML 2007
- Statistical Debugging Using Compound Boolean Predicates,
ISSTA 2007
- Cooperative Bug Isolation: Winning Thesis of the 2005 ACM Doctoral Dissertation Competition,
LNCS volume 4440
- Statistical Debugging: Simultaneous Identification of Multiple Bugs,
ICML 2006
- Path Optimization in Programs and its Application to Debugging,
ESOP 2006
- BTrace: Path Optimization for Debugging,
technical report 2005
- Scalable Statistical Bug Isolation,
PLDI 2005
- The Open Source Proving Grounds,
Bugs 2005
- Cooperative Bug Isolation,
doctoral dissertation, 2005 ACM
Doctoral Dissertation Award
- Public Deployment of Cooperative Bug Isolation,
RAMSS 2004
- Statistical Debugging of Sampled Programs,
NIPS 2003
- Bug Isolation via Remote Program Sampling,
PLDI 2003
- Sampling User Executions for Bug Isolation,
RAMSS 2003
The Cooperative Bug
Isolation Project is putting many of the above ideas to work
in a large scale, real world deployment. When theory collides
with practice, fun things happen.
Dynamic Heap Type Inference
Other Bug Hunting
- User-Assisted Code Query Customization and Optimization,
STTT
2024
- Shifting Left for Early Detection of Machine-Learning Bugs,
FM 2023
- User-Assisted Code Query Optimization,
SOAP 2023
- Static Analysis for AWS Best Practices in Python Code,
ECOOP 2022
- Static Analysis for AWS Best Practices in Python Code,
arXiv 2022
- TOFU: Target-Oriented FUzzer,
arXiv 2020
- Enabling Open-World Specification Mining via Unsupervised Learning,
arXiv 2019
- Code Vectors: Understanding Programs Through Embedded Abstracted Symbolic Traces,
FSE 2018
- The Care and Feeding of Wild-Caught Mutants,
FSE 2017
- Enforcing Murphy’s Law for Advance Identification of Run-time Failures,
USENIX ATC 2012
- Murphy: An Environment for Advance Identification of Run-time Failures,
technical report 2012
- Effective Slicing: A Generalization of Full and Relevant Slicing,
technical report 2008
Languages for Scientific Computing
Your supercomputer is only as good as the code you’re running
on it. As a member of the Titanium
project I developed a formal basis for understanding the behavior of
distributed data with applications in language design, algorithm
development, programming, and optimization.
Odds and Ends
I’ve also written a few things about other facets of
programming and program analysis.
- Source Forager: A Search Engine for Similar Source Code,
arXiv 2017
- Array Length Inference for C Library Bindings,
ASE 2016
- Analyzing Memory Ownership Patterns in C Libraries,
ISMM 2013
- A Router Primitive Approach for Building Diverse Network Services,
COMSNETS 2012
- Automatic Generation of Library Bindings Using Static Analysis,
PLDI 2009
- Code Sandwiches,
technical report 2008
- An Operational Semantics for LogTM,
technical report 2006
- Extracting Output Formats from Executables,
WCRE 2006
- Supporting Nested Transactional Memory in LogTM,
ASPLOS XII
/
ASPLOS 2006
- Cognitive Perspectives on the Role of Naming in Computer Programs,
PPIG 2006
- Tool Support for Proof Engineering,
UITP 2006
- Estimating the Impact of Scalable Pointer Analysis on Optimization,
SAS 2001
- Transformation of Prolog Programs to Perform Update in Place: A Prototype Code Synthesizer,
undergraduate honors thesis, 1993