Nicholas Nethercote

dblp:47/336 · DBLP profile ↗
← Back
8ranked-venue papers
3as first author
0since 2021 · last 2008
—ORCID · none

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

Software engineering, systems software and programming languages · 6 · 2 first-authorSystems, architecture and hardware · 3 · 1 first-authorArtificial intelligence and machine learning · 2 · 1 first-authorTheory of computation · 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
3 papers
Program analysis · 74% Debugging and program repair · 20% Runtime systems and virtual machines · 6%

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

TopicWeightPapersLastEvidence papers
Program analysis
dynamic analysis
0.122007
Tracking bad apples: reporting the origin of null and undefined value errors · OOPSLA 2007
Using Valgrind to Detect Undefined Value Errors with Bit-Precision · USENIX ATC, General Track 2005
Program analysis › binary analysis
dynamic binary analysis
0.112007
Valgrind: a framework for heavyweight dynamic binary instrumentation · PLDI 2007
Program analysis › dynamic analysis
dynamic binary instrumentation
0.112007
Valgrind: a framework for heavyweight dynamic binary instrumentation · PLDI 2007
Debugging and program repair
fault localization
0.112007
Tracking bad apples: reporting the origin of null and undefined value errors · OOPSLA 2007
Runtime systems and virtual machines
binary translation
0.012007
Valgrind: a framework for heavyweight dynamic binary instrumentation · PLDI 2007

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

stack trace analysis · 0.1dynamic binary instrumentation · 0.1
YearPublicationVenuePosition
2008 Adding Search to Zinc
Reza Rafeh, Kim Marriott, Maria Garcia de la Banda, Nicholas Nethercote, Mark Wallace 0001
CP4
2007 MiniZinc: Towards a Standard CP Modelling Language
Nicholas Nethercote, Peter J. Stuckey, Ralph Becket, Gregory J. Duck, Guido Tack
CP1
2007 Tracking bad apples: reporting the origin of null and undefined value errors
abstract
Programs sometimes crash due to unusable values, for example, when Java and C# programs dereference null pointers and when C and C++ programs use undefined values to affect program behavior. A stack trace produced on such a crash identifies the effect of the unusable value, not its cause, and is often not much help to the programmer.
Michael D. Bond, Nicholas Nethercote, Stephen W. Kent, Samuel Z. Guyer, Kathryn S. McKinley
OOPSLA2
2007 Valgrind: a framework for heavyweight dynamic binary instrumentation
abstract
Dynamic binary instrumentation (DBI) frameworks make it easy to build dynamic binary analysis (DBA) tools such as checkers and profilers. Much of the focus on DBI frameworks has been on performance; little attention has been paid to their capabilities. As a result, we believe the potential of DBI has not been fully exploited.
Nicholas Nethercote, Julian Seward
PLDI1
2007 How to shadow every byte of memory used by a program
abstract
Several existing dynamic binary analysis tools use shadowmemory-they shadow, in software, every byte of memory used by a program with another value that says something about it. Shadow memory is difficult to implement both efficiently and robustly. Nonetheless, existing shadow memory implementations have not been studied in detail. This is unfortunate, because shadow memory is powerful-for example, some of the existing tools that use it detect critical errors such as bad memory accesses, data races, and uses of uninitialised or untrusted data. In this paper we describe the implementation of shadow memory in Memcheck, a popular memory checker built with Valgrind, a dynamic binary instrumentation framework. This implementation has several novel features that make it efficient: carefully chosen data structures and operations result in a mean slow-down factor of only 22.2 and moderate memory usage. This may sound slow, but we show it is 8.9 times faster and 8.5 times smaller on average than a naive implementation, and shadow memory operations account for only about half of Memcheck's execution time. Equally importantly, unlike some tools, Memcheck's shadow memory implementation is robust: it is used on Linux by thousands of programmers on sizeable programs such as Mozilla and OpenOffice, and is suited to almost any memory configuration. This is the first detailed description of a robust shadow memory implementation, and the first detailed experimental evaluation of any shadow memory implementation. The ideas within are applicable to any shadow memory tool built with any instrumentation framework.
Nicholas Nethercote, Julian Seward
VEE1
2006 Compiling for EDGE Architectures
abstract
Explicit data graph execution (EDGE) architectures offer the possibility of high instruction-level parallelism with energy efficiency. In EDGE architectures, the compiler breaks a program into a sequence of structured blocks that the hardware executes atomically. The instructions within each block communicate directly, instead of communicating through shared registers. The TRIPS EDGE architecture imposes restrictions on its blocks to simplify the microarchitecture: each TRIPS block has at most 128 instructions, issues at most 32 loads and/or stores, and executes at most 32 register bank reads and 32 writes. To detect block completion, each TRIPS block must produce a constant number of outputs (stores and register writes) and a branch decision. The goal of the TRIPS compiler is to produce TRIPS blocks full of useful instructions while enforcing these constraints. This paper describes a set of compiler algorithms that meet these sometimes conflicting goals, including an algorithm that assigns load and store identifiers to maximize the number of loads and stores within a block. We demonstrate the correctness of these algorithms in simulation on SPEC2000, EEMBC, and microbenchmarks extracted from SPEC2000 and others. We measure speedup in cycles over an Alpha 21264 on microbenchmarks.
Aaron Smith, Jon Gibson, Bertrand A. Maher, Nicholas Nethercote, Bill Yoder, Doug Burger, Kathryn S. McKinley, James H. Burrill
CGO4
2005 Using Valgrind to Detect Undefined Value Errors with Bit-Precision
Julian Seward, Nicholas Nethercote
USENIX ATC, General Track2
2001 Building Constraint Solvers with HAL
Maria Garcia de la Banda, David Jeffery, Kim Marriott, Nicholas Nethercote, Peter J. Stuckey, Christian Holzbaur
ICLP4