Demo Data from VLDB 2026 / reviewers in the wild / expert
Brian Hackett
dblp:32/2230
· DBLP profile ↗
7ranked-venue papers
5as first author
0since 2021 · last 2012
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 7 · 5 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 |
Program analysis · 38% Programming languages and type systems · 30% Program verification · 27% | |
| Network and information security
1 paper |
Systems and software security · 100% |
Topics — the 14 heaviest of 16, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Programming languages and type systems › type inference
dynamic type inference |
0.1 | 1 | 2012 | Fast and precise hybrid type inference for JavaScript · PLDI 2012 |
Programming languages and type systems
type inference |
0.1 | 1 | 2012 | Fast and precise hybrid type inference for JavaScript · PLDI 2012 |
Program analysis
type analysis |
0.1 | 1 | 2011 | Inferring data polymorphism in systems code · SIGSOFT FSE 2011 |
Program analysis › static analysis
pointer analysis |
0.1 | 2 | 2006 | How is aliasing used in systems software? · SIGSOFT FSE 2006 Region-based shape analysis with tracked locations · POPL 2005 |
Program verification
code-level verification |
0.1 | 1 | 2009 | Unifying type checking and property checking for low-level code · POPL 2009 |
Program verification
property checking |
0.1 | 1 | 2009 | Unifying type checking and property checking for low-level code · POPL 2009 |
Programming languages and type systems
type checking |
0.1 | 1 | 2009 | Unifying type checking and property checking for low-level code · POPL 2009 |
Program analysis › static analysis › vulnerability detection
buffer overflow detection |
0.1 | 1 | 2006 | Modular checking for buffer overflows in the large · ICSE 2006 |
Program analysis
static analysis |
0.1 | 1 | 2006 | Modular checking for buffer overflows in the large · ICSE 2006 |
Program analysis › heap analysis
heap abstraction |
0.1 | 1 | 2005 | Region-based shape analysis with tracked locations · POPL 2005 |
Program analysis › static analysis › pointer analysis
shape analysis |
0.1 | 1 | 2005 | Region-based shape analysis with tracked locations · POPL 2005 |
Program verification
annotation inference |
0.0 | 1 | 2006 | Modular checking for buffer overflows in the large · ICSE 2006 |
Systems and software security › memory safety
memory error detection |
0.0 | 1 | 2005 | Region-based shape analysis with tracked locations · POPL 2005 |
Systems and software security
memory safety |
0.0 | 1 | 2005 | Region-based shape analysis with tracked locations · POPL 2005 |
Methods — techniques the papers use, named apart from their topics
static analysis · 0.2run-time type barriers · 0.1points-to analysis · 0.1incremental analysis · 0.1context-sensitive analysis · 0.1refinement types · 0.1slicing · 0.1object naming · 0.1modular checking · 0.1interprocedural analysis · 0.1inter-procedural analysis · 0.1
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2012 | Fast and precise hybrid type inference for JavaScriptabstractJavaScript performance is often bound by its dynamically typed nature. Compilers do not have access to static type information, making generation of efficient, type-specialized machine code difficult. We seek to solve this problem by inferring types. In this paper we present a hybrid type inference algorithm for JavaScript based on points-to analysis. Our algorithm is fast, in that it pays for itself in the optimizations it enables. Our algorithm is also precise, generating information that closely reflects the program's actual behavior even when analyzing polymorphic code, by augmenting static analysis with run-time type barriers. Brian Hackett, Shu-yu Guo |
PLDI | 1 |
| 2011 | Inferring data polymorphism in systems codeabstractWe describe techniques for analyzing data polymorphism in C, and show that understanding data polymorphism is important for statically verifying type casts in the Linux kernel, where our techniques prove the safety of 75% of downcasts to structure types, out of a population of 28767. We also discuss prevalent patterns of data polymorphism in Linux, including code patterns we can handle and those we cannot. Brian Hackett, Alex Aiken |
SIGSOFT FSE | 1 |
| 2009 | Unifying type checking and property checking for low-level codeabstractWe present a unified approach to type checking and property checking for low-level code. Type checking for low-level code is challenging because type safety often depends on complex, program-specific invariants that are difficult for traditional type checkers to express. Conversely, property checking for low-level code is challenging because it is difficult to write concise specifications that distinguish between locations in an untyped program's heap. We address both problems simultaneously by implementing a type checker for low-level code as part of our property checker. Jeremy Condit, Brian Hackett, Shuvendu K. Lahiri, Shaz Qadeer |
POPL | 2 |
| 2007 | An overview of the saturn projectabstractWe present an overview of the Saturn program analysis system, including a rationale for three major design decisions: the use of function-at-a-time, or summary-based, analysis, the use of constraints, and the use of a logic programming language to express program analysis algorithms. We argue that the combination of summaries and constraints allows Saturn to achieve both great scalability and great precision, while the use of a logic programming language with constraints allows for succinct, high-level expression of program analyses. Alex Aiken, Suhabe Bugrara, Isil Dillig, Thomas Dillig, Brian Hackett, Peter Hawkins |
PASTE | 5 |
| 2006 | Modular checking for buffer overflows in the largeabstractWe describe an ongoing project, the deployment of a modular checker to statically find and prevent every buffer overflow in future versions of a Microsoft product. Lightweight annotations specify requirements for safely using each buffer, and functions are checked individually to ensure they obey these requirements and do not overflow. Our focus is on the incremental deployment of this technology: by layering the annotation language, using aggressive inference techniques, and slicing warnings by checker confidence, teams must pay only part of the cost of annotating a program to achieve part of the benefit, which provides incentive for further annotation. To date over 400,000 annotations have been added to specify buffer usage in the source code for this product, of which over 150,000 were automatically inferred, and over 3,000 potential buffer overflows have been found and fixed. Brian Hackett, Manuvir Das, Zhe Yang 0001 |
ICSE | 1 |
| 2006 | How is aliasing used in systems software?abstractWe present a study of all sources of aliasing in over one million lines of C code, identifying in the process the common patterns of aliasing that arise in practice. We find that aliasing has a great deal of structure in real programs and that just nine programming idioms account for nearly all aliasing in our study. Our study requires an automatic alias analysis that both scales to large systems and has a low false positive rate. To this end, we also present a new context-, flow-, and partially path-sensitive alias analysis that, together with a new technique for object naming, achieves a false aliasing rate of 26.2%on our benchmarks. Brian Hackett, Alex Aiken |
SIGSOFT FSE | 1 |
| 2005 | Region-based shape analysis with tracked locationsabstractThis paper proposes a novel approach to shape analysis: using local reasoning about individual heap locations instead of global reasoning about entire heap abstractions. We present an inter-procedural shape analysis algorithm for languages with destructive updates. The key feature is a novel memory abstraction that differs from traditional abstractions in two ways. First, we build the shape abstraction and analysis on top of a pointer analysis. Second, we decompose the shape abstraction into a set of independent configurations, each of which characterizes one single heap location. Our approach: 1) leads to simpler algorithm specifications, because of local reasoning about the single location; 2) leads to efficient algorithms, because of the smaller granularity of the abstraction; and 3) makes it easier to develop context-sensitive, demand-driven, and incremental shape analyses.We also show that the analysis can be used to enable the static detection of memory errors in programs with explicit deallocation. We have built a prototype tool that detects memory leaks and accesses through dangling pointers in C programs. The experiments indicate that the analysis is sufficiently precise to detect errors with low false positive rates; and is sufficiently lightweight to scale to larger programs. For a set of three popular C programs, the tool has analyzed about 70K lines of code in less than 2 minutes and has produced 97 warnings, 38 of which were actual errors. Brian Hackett, Radu Rugina |
POPL | 1 |