Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

Brian Hackett

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

TopicWeightPapersLastEvidence papers
Programming languages and type systems › type inference
dynamic type inference
0.112012
Fast and precise hybrid type inference for JavaScript · PLDI 2012
Programming languages and type systems
type inference
0.112012
Fast and precise hybrid type inference for JavaScript · PLDI 2012
Program analysis
type analysis
0.112011
Inferring data polymorphism in systems code · SIGSOFT FSE 2011
Program analysis › static analysis
pointer analysis
0.122006
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.112009
Unifying type checking and property checking for low-level code · POPL 2009
Program verification
property checking
0.112009
Unifying type checking and property checking for low-level code · POPL 2009
Programming languages and type systems
type checking
0.112009
Unifying type checking and property checking for low-level code · POPL 2009
Program analysis › static analysis › vulnerability detection
buffer overflow detection
0.112006
Modular checking for buffer overflows in the large · ICSE 2006
Program analysis
static analysis
0.112006
Modular checking for buffer overflows in the large · ICSE 2006
Program analysis › heap analysis
heap abstraction
0.112005
Region-based shape analysis with tracked locations · POPL 2005
Program analysis › static analysis › pointer analysis
shape analysis
0.112005
Region-based shape analysis with tracked locations · POPL 2005
Program verification
annotation inference
0.012006
Modular checking for buffer overflows in the large · ICSE 2006
Systems and software security › memory safety
memory error detection
0.012005
Region-based shape analysis with tracked locations · POPL 2005
Systems and software security
memory safety
0.012005
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
YearPublicationVenuePosition
2012 Fast and precise hybrid type inference for JavaScript
abstract
JavaScript 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
PLDI1
2011 Inferring data polymorphism in systems code
abstract
We 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 FSE1
2009 Unifying type checking and property checking for low-level code
abstract
We 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
POPL2
2007 An overview of the saturn project
abstract
We 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
PASTE5
2006 Modular checking for buffer overflows in the large
abstract
We 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
ICSE1
2006 How is aliasing used in systems software?
abstract
We 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 FSE1
2005 Region-based shape analysis with tracked locations
abstract
This 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
POPL1