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

Eric M. Schulte

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

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

Software engineering, systems software and programming languages · 6 · 3 first-authorSystems, architecture and hardware · 2 · 2 first-authorArtificial intelligence and machine learning · 1Security and privacy · 1Databases, data management, data science and information retrieval · 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
4 papers
Program analysis · 58% Debugging and program repair · 29% Compilers and program optimization · 13%
Theoretical computer science
1 paper
Logic in computer science · 100%
Computer architecture, parallel and distributed computing, and storage systems
2 papers
Energy-efficient computing · 54% Embedded and real-time systems · 46%

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

TopicWeightPapersLastEvidence papers
Program analysis
binary analysis
0.412020
Datalog Disassembly · USENIX Security Symposium 2020
Program analysis › binary analysis
disassembly
0.412020
Datalog Disassembly · USENIX Security Symposium 2020
Debugging and program repair
automated program repair
0.322013
Automated repair of binary and assembly programs for cooperating embedded devices · ASPLOS 2013
Automated program repair through the evolution of assembly code · ASE 2010
Debugging and program repair › automated program repair
evolutionary repair
0.212013
Automated repair of binary and assembly programs for cooperating embedded devices · ASPLOS 2013
Logic in computer science › logic programming
datalog
0.112020
Datalog Disassembly · USENIX Security Symposium 2020
Embedded and real-time systems › embedded system design
resource-constrained embedded devices
0.012013
Automated repair of binary and assembly programs for cooperating embedded devices · ASPLOS 2013

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

static analysis · 0.9datalog · 0.9evolutionary computation · 0.8superoptimization · 0.4profile-guided optimization · 0.4predictive modeling · 0.4genetic algorithm · 0.4test cases · 0.1
YearPublicationVenuePosition
2020 Datalog Disassembly
Antonio Flores-Montoya, Eric M. Schulte
USENIX Security Symposium2
2019 Automated Customized Bug-Benchmark Generation
abstract
We introduce Bug-Injector, a system that automatically creates benchmarks for customized evaluation of static analysis tools. We share a benchmark generated using Bug-Injector and illustrate its efficacy by using it to evaluate the recall of two leading open-source static analysis tools: Clang Static Analyzer and Infer. Bug-Injector works by inserting bugs based on bug templates into real-world host programs. It runs tests on the host program to collect dynamic traces, searches the traces for a point where the state satisfies the preconditions for some bug template, then modifies the host program to "inject" a bug based on that template. Injected bugs are used as test cases in a static analysis tool evaluation benchmark. Every test case is accompanied by a program input that exercises the injected bug. We have identified a broad range of requirements and desiderata for bug benchmarks; our approach generates on-demand test benchmarks that meet these requirements. It also allows us to create customized benchmarks suitable for evaluating tools for a specific use case (e.g., a given codebase and set of bug types). Our experimental evaluation demonstrates the suitability of our generated benchmark for evaluating static bug-detection tools and for comparing the performance of different tools.
Vineeth Kashyap, Jason Ruchti, Lucja Kot, Emma Turetsky, Rebecca Swords, Shih An Pan, Julien Henry, David Melski, Eric M. Schulte
SCAM9
2018 Using recurrent neural networks for decompilation
abstract
Decompilation, recovering source code from binary, is useful in many situations where it is necessary to analyze or understand software for which source code is not available. Source code is much easier for humans to read than binary code, and there are many tools available to analyze source code. Existing decompilation techniques often generate source code that is difficult for humans to understand because the generated code often does not use the coding idioms that programmers use. Differences from human-written code also reduce the effectiveness of analysis tools on the decompiled source code. To address the problem of differences between decompiled code and human-written code, we present a novel technique for decompiling binary code snippets using a model based on Recurrent Neural Networks. The model learns properties and patterns that occur in source code and uses them to produce decompilation output. We train and evaluate our technique on snippets of binary machine code compiled from C source code. The general approach we outline in this paper is not language-specific and requires little or no domain knowledge of a language and its properties or how a compiler operates, making the approach easily extensible to new languages and constructs. Furthermore, the technique can be extended and applied in situations to which traditional decompilers are not targeted, such as for decompilation of isolated binary snippets; fast, on-demand decompilation; domain-specific learned decompilation; optimizing for readability of decompilation; and recovering control flow constructs, comments, and variable or function names. We show that the translations produced by this technique are often accurate or close and can provide a useful picture of the snippet's behavior.
Deborah S. Katz, Jason Ruchti, Eric M. Schulte
SANER3
2017 MuSynth: Program Synthesis via Code Reuse and Code Manipulation
Vineeth Kashyap, Rebecca Swords, Eric M. Schulte, David Melski
SSBSE3
2014 Post-compiler software optimization for reducing energy
abstract
Modern compilers typically optimize for executable size and speed, rarely exploring non-functional properties such as power efficiency. These properties are often hardware-specific, time-intensive to optimize, and may not be amenable to standard dataflow optimizations. We present a general post-compilation approach called Genetic Optimization Algorithm (GOA), which targets measurable non-functional aspects of software execution in programs that compile to x86 assembly. GOA combines insights from profile-guided optimization, superoptimization, evolutionary computation and mutational robustness. GOA searches for program variants that retain required functional behavior while improving non-functional behavior, using characteristic workloads and predictive modeling to guide the search. The resulting optimizations are validated using physical performance measurements and a larger held-out test suite. Our experimental results on PARSEC benchmark programs show average energy reductions of 20%, both for a large AMD system and a small Intel system, while maintaining program functionality on target workloads.
Eric M. Schulte, Jonathan Dorn, Stephen Harding, Stephanie Forrest, Westley Weimer
ASPLOS1
2013 Automated repair of binary and assembly programs for cooperating embedded devices
abstract
We present a method for automatically repairing arbitrary software defects in embedded systems, which have limited memory, disk and CPU capacities, but exist in great numbers. We extend evolutionary computation (EC) algorithms that search for valid repairs at the source code level to assembly and ELF format binaries, compensating for limited system resources with several algorithmic innovations. Our method does not require access to the source code or build toolchain of the software under repair, does not require program instrumentation, specialized execution environments, or virtual machines, or prior knowledge of the bug type.
Eric M. Schulte, Jonathan DiLorenzo, Westley Weimer, Stephanie Forrest
ASPLOS1
2010 Automated program repair through the evolution of assembly code
abstract
A method is described for automatically repairing legacy software at the assembly code level using evolutionary computation. The technique is demonstrated on Java byte code and x86 assembly programs, showing how to find program variations that correct defects while retaining desired behavior. Test cases are used to demonstrate the defect and define required functionality. The paper explores advantages of assembly-level repair over earlier work at the source code level - the ability to repair programs written in many different languages; and the ability to repair bugs that were previously intractable. The paper reports experimental results showing reasonable performance of assembly language repair even on non-trivial programs
Eric M. Schulte, Stephanie Forrest, Westley Weimer
ASE1
2010 An application of document filtering in an operational system
Paul E. Lehner, Charles Worrell, Chrissy Vu, Janet S. Mittel, Stephen Snyder, Eric M. Schulte, Warren Greiff
Inf. Process. Manag.6