About the WET Project
The WET project is a collaborative effort to develop an open source software infrastructure
that is capable of tracing and analyzing long program executions. WET features customizability,
extensibility, and most importantly, the capability of collecting prolific types of execution
traces for realistic executions on single-threaded and multi-threaded programs.
This work is feasible due to two recent research developments.
- Availability of a highly compacted trace representation called Whole Execution Trace
(WET), composed of a static program representation that is annotated with dynamic traces
including control flow, address, value, and a dependence trace that can contain complete
program execution history in compacted form.
- Checkpointing/logging can be effectively combined with tracing through a technique
called Execution Fast Forwarding (EFF) that enables scaling up tracing by orders of magnitude.
Components of the WET infrastructure include the following.
- A checkpointing/logging environment that will execute a given binary on the supplied
input to produce a set of checkpoints and logs which can be used to replay the execution
- Execution fast forwarding components that will eliminate part of the execution that is
not relevant to reproducing a given event
- A tracing component to generate, compress, and store the WET (Whole Execution Trace) of a
replayed execution interval
- A trace analysis component to provide an API that will enable users to access WETs with ease,
without having to understand the low level detailed representation of WET.
Dynamic analysis techniques analyze traces of program executions to characterize the runtime
behavior of programs. Distinctive runtime characteristics are then exploited in designing the
systems to do the following.
- Develop highly reliable systems by detecting bugs, locating faults, and testing programs
- Develop secure systems by detecting information leaks and unsafe behavior, and performing
software marking
- Validate and verify data by associating the output produced by highly complicated data
processing procedures to the raw input data that can greatly facilitate verification of results
- Develop hardware and software for highly optimized systems (e.g., embedded systems that
must optimize performance, power, and memory usage) exploiting a wide range of runtime program
characteristics (e.g., recurring code sequences to achieve compression, narrow width data to
develop energy efficient cache designs and pipelines, etc.)
This work can have broad impact in a variety of domains. The WET infrastructure enables
rapid prototyping for data verification, computer architecture, compilers, embedded systems,
software engineering such as building testers and debuggers, security such as designing
watermarking, and information flow analysis tools. The uniform representation of logs and
WETs provides a standard interface to easily exchange traces. Moreover, encouraging synergy
among projects, course projects will be designed and provided with the infrastructure.
Funding: The WET project is funded by NSF grant CNS-0751949/0708199 to the University
of California, Riverside and NSF grant CNS-0708464 to Purdue University.
Collaborators: WET has been made possible by the collaborative efforts of the
following people.