Demo Data from EDBT 2026 / reviewers in the wild / expert
Will Dietz
dblp:116/6680
· DBLP profile ↗
6ranked-venue papers
4as first author
0since 2021 · last 2020
0000-0001-7004-2343ORCID · corroborated
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 5 · 3 first-authorSystems, architecture and hardware · 2 · 1 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 |
Compilers and program optimization · 62% Operating systems · 17% Program analysis · 11% | |
| Network and information security
2 papers |
Systems and software security · 100% |
Topics — the 16 heaviest of 16, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Compilers and program optimization
code size reduction |
0.8 | 2 | 2020 | Guided linking: dynamic linking without the costs · Proc. ACM Program. Lang. 2020 Software multiplexing: share your libraries and statically link them too · Proc. ACM Program. Lang. 2018 |
Compilers and program optimization › interprocedural optimization
link-time optimization |
0.4 | 1 | 2020 | Guided linking: dynamic linking without the costs · Proc. ACM Program. Lang. 2020 |
Program analysis
dynamic analysis |
0.4 | 2 | 2015 | Understanding Integer Overflow in C/C++ · ACM Trans. Softw. Eng. Methodol. 2015 Understanding integer overflow in C/C++ · ICSE 2012 |
Compilers and program optimization
dead code elimination |
0.3 | 1 | 2018 | Software multiplexing: share your libraries and statically link them too · Proc. ACM Program. Lang. 2018 |
Compilers and program optimization › compiler toolchain
static linking |
0.3 | 1 | 2018 | Software multiplexing: share your libraries and statically link them too · Proc. ACM Program. Lang. 2018 |
Systems and software security
memory protection |
0.2 | 1 | 2015 | Nested Kernel: An Operating System Architecture for Intra-Kernel Privilege Separation · ASPLOS 2015 |
Compilers and program optimization
automatic code optimization |
0.2 | 1 | 2015 | Slipstream: Automatic Interprocess Communication Optimization · USENIX ATC 2015 |
Operating systems
interprocess communication |
0.2 | 1 | 2015 | Slipstream: Automatic Interprocess Communication Optimization · USENIX ATC 2015 |
Operating systems › system security › operating system security
kernel security |
0.2 | 1 | 2015 | Nested Kernel: An Operating System Architecture for Intra-Kernel Privilege Separation · ASPLOS 2015 |
Software testing
software reliability |
0.2 | 1 | 2015 | Understanding Integer Overflow in C/C++ · ACM Trans. Softw. Eng. Methodol. 2015 |
Operating systems
dynamic linking |
0.1 | 1 | 2020 | Guided linking: dynamic linking without the costs · Proc. ACM Program. Lang. 2020 |
Software maintenance and evolution › software configuration management › software release management
software packaging |
0.1 | 1 | 2018 | Software multiplexing: share your libraries and statically link them too · Proc. ACM Program. Lang. 2018 |
Distributed systems
communication optimization |
0.1 | 1 | 2015 | Slipstream: Automatic Interprocess Communication Optimization · USENIX ATC 2015 |
Systems and software security › vulnerability discovery
integer overflow vulnerabilities |
0.0 | 1 | 2012 | Understanding integer overflow in C/C++ · ICSE 2012 |
Systems and software security
vulnerability discovery |
0.0 | 1 | 2012 | Understanding integer overflow in C/C++ · ICSE 2012 |
Empirical software engineering
mining software repositories |
0.0 | 1 | 2012 | Understanding integer overflow in C/C++ · ICSE 2012 |
Methods — techniques the papers use, named apart from their topics
empirical study · 0.5dynamic checking · 0.5capability-based protection · 0.4MMU write-protection · 0.4interprocedural optimization · 0.4inlining · 0.4deduplication · 0.3automatic multicall · 0.3IR-level linking · 0.3
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2020 | Guided linking: dynamic linking without the costsabstractDynamic linking is extremely common in modern software systems, thanks to the flexibility and space savings it offers. However, this flexibility comes at a cost: it’s impossible to perform interprocedural optimizations that involve calls to a dynamic library. The basic problem is that the run-time behavior of the dynamic linker can’t be predicted at compile time, so the compiler can make no assumptions about how such calls will behave. This paper introduces guided linking , a technique for optimizing dynamically linked software when some information about the dynamic linker’s behavior is known in advance. The developer provides an arbitrary set of programs, libraries, and plugins to our tool, along with constraints that limit the possible dynamic linking behavior of the software. By taking advantage of the constraints, our tool enables any existing optimization to be applied across dynamic linking boundaries. For example, the NoOverride constraint can be applied to a function when the developer knows it will never be overridden with a different definition at run time; guided linking then enables the function to be inlined into its callers in other libraries. We also introduce a novel code size optimization that deduplicates identical functions even across different parts of the software set. By applying guided linking to the Python interpreter and its dynamically loaded modules, supplying the constraint that no other programs or modules will be used, we increase speed by an average of 9%. By applying guided linking to a dynamically linked distribution of Clang and LLVM, and using the constraint that no other software will use the LLVM libraries, we can increase speed by 5% and reduce file size by 13%. If we relax the constraint to allow other software to use the LLVM libraries, we can still increase speed by 5% and reduce file size by 5%. If we use guided linking to combine 11 different versions of the Boost library, using minimal constraints, we can reduce the total library size by 57%. Sean Bartell, Will Dietz, Vikram S. Adve |
Proc. ACM Program. Lang. | 2 |
| 2018 | Software multiplexing: share your libraries and statically link them tooabstractWe describe a compiler strategy we call “ Software Multiplexing ” that achieves many benefits of both statically linked and dynamically linked libraries, and adds some additional advantages. Specifically, it achieves the code size benefits of dynamically linked libraries while eliminating the major disadvantages: unexpected failures due to missing dependences, slow startup times, reduced execution performance due to indirect references to globals, and the potential for security vulnerabilities. We design Software Multiplexing so that it works even in the common case where application build systems support only dynamic and not static linking; we have automatically built thousands of Linux software packages in this way. Software Multiplexing combines two ideas: Automatic Multicall , i.e., where multiple independent programs are automatically merged into a single executable, and Static Linking of Shared Libraries , which works by linking an IR-level version of application code and all its libraries, even if the libraries are normally compiled as shared, before native code generation. The benefits are achieved primarily through deduplication of libraries across the multiplexed programs, while using static linking, and secondly through more effective unused code elimination for statically linked shared libraries. Compared with equivalent dynamically linked programs, allmux-optimized programs start more quickly and even have slightly lower memory usage and total disk size. Compared with equivalent statically linked programs, allmux-optimized programs are much smaller in both aggregate size and memory usage, and have similar startup times and execution performance. We have implemented Software Multiplexing in a tool called allmux, part of the open-source ALLVM project. Example results show that when the LLVM Compiler Infrastructure is optimized using allmux, the resulting binaries and libraries are 18.3% smaller and 30% faster than the default production version. For 74 other packages containing 2–166 programs each, multiplexing each package into one static binary reduces the aggregate package size by 39% (geometric mean) compared with dynamic linking. Will Dietz, Vikram S. Adve |
Proc. ACM Program. Lang. | 1 |
| 2015 | Nested Kernel: An Operating System Architecture for Intra-Kernel Privilege SeparationabstractMonolithic operating system designs undermine the security of computing systems by allowing single exploits anywhere in the kernel to enjoy full supervisor privilege. The nested kernel operating system architecture addresses this problem by "nesting" a small isolated kernel within a traditional monolithic kernel. The "nested kernel" interposes on all updates to virtual memory translations to assert protections on physical memory, thus significantly reducing the trusted computing base for memory access control enforcement. We incorporated the nested kernel architecture into FreeBSD on x86-64 hardware while allowing the entire operating system, including untrusted components, to operate at the highest hardware privilege level by write-protecting MMU translations and de-privileging the untrusted part of the kernel. Our implementation inherently enforces kernel code integrity while still allowing dynamically loaded kernel modules, thus defending against code injection attacks. We also demonstrate that the nested kernel architecture allows kernel developers to isolate memory in ways not possible in monolithic kernels by introducing write-mediation and write-logging services to protect critical system data structures. Performance of the nested kernel prototype shows modest overheads: <1% average for Apache and 2.7% for kernel compile. Overall, our results and experience show that the nested kernel design can be retrofitted to existing monolithic kernels, providing important security benefits. Nathan Dautenhahn, Theodoros Kasampalis, Will Dietz, John Criswell, Vikram S. Adve |
ASPLOS | 3 |
| 2015 | Slipstream: Automatic Interprocess Communication Optimization
Will Dietz, Joshua Cranmer, Nathan Dautenhahn, Vikram S. Adve |
USENIX ATC | 1 |
| 2015 | Understanding Integer Overflow in C/C++abstractInteger overflow bugs in C and C++ programs are difficult to track down and may lead to fatal errors or exploitable vulnerabilities. Although a number of tools for finding these bugs exist, the situation is complicated because not all overflows are bugs. Better tools need to be constructed, but a thorough understanding of the issues behind these errors does not yet exist. We developed IOC, a dynamic checking tool for integer overflows, and used it to conduct the first detailed empirical study of the prevalence and patterns of occurrence of integer overflows in C and C++ code. Our results show that intentional uses of wraparound behaviors are more common than is widely believed; for example, there are over 200 distinct locations in the SPEC CINT2000 benchmarks where overflow occurs. Although many overflows are intentional, a large number of accidental overflows also occur. Orthogonal to programmers' intent, overflows are found in both well-defined and undefined flavors. Applications executing undefined operations can be, and have been, broken by improvements in compiler optimizations. Looking beyond SPEC, we found and reported undefined integer overflows in SQLite, PostgreSQL, SafeInt, GNU MPC and GMP, Firefox, LLVM, Python, BIND, and OpenSSL; many of these have since been fixed. Will Dietz, John Regehr, Vikram S. Adve |
ACM Trans. Softw. Eng. Methodol. | 1 |
| 2012 | Understanding integer overflow in C/C++abstractInteger overflow bugs in C and C++ programs are difficult to track down and may lead to fatal errors or exploitable vulnerabilities. Although a number of tools for finding these bugs exist, the situation is complicated because not all overflows are bugs. Better tools need to be constructed - but a thorough understanding of the issues behind these errors does not yet exist. We developed IOC, a dynamic checking tool for integer overflows, and used it to conduct the first detailed empirical study of the prevalence and patterns of occurrence of integer overflows in C and C++ code. Our results show that intentional uses of wraparound behaviors are more common than is widely believed; for example, there are over 200 distinct locations in the SPEC CINT2000 benchmarks where overflow occurs. Although many overflows are intentional, a large number of accidental overflows also occur. Orthogonal to programmers' intent, overflows are found in both well-defined and undefined flavors. Applications executing undefined operations can be, and have been, broken by improvements in compiler optimizations. Looking beyond SPEC, we found and reported undefined integer overflows in SQLite, PostgreSQL, SafeInt, GNU MPC and GMP, Firefox, GCC, LLVM, Python, BIND, and OpenSSL; many of these have since been fixed. Our results show that integer overflow issues in C and C++ are subtle and complex, that they are common even in mature, widely used programs, and that they are widely misunderstood by developers. Will Dietz, John Regehr, Vikram S. Adve |
ICSE | 1 |