Genesis, Prophet, SPR, and Kali
are automatic patch generation systems for large real-world C programs.
Genesis, Prophet, SPR, and Kali are available here.
Genesis and Prophet pioneered the use of machine learning in automatic patch generation.
Because Kali only deletes functionality, we do not recommend
using it to obtain patches that change or add functionality.
CodeCarbonCopy and CodePhage
are systems for automatically finding and transferring code between applications.
CodePhage automatically transfers security checks between applications to eliminate
security vulnerabilities. CodeCarbonCopy transfers complete blocks of functionality
from a donor application into a recipient application.
DIODE is a system
for automatically generating inputs that trigger integer and
Chisel and Rely
implements recovery shepherding, which attaches to the
application process when an error occurs, repairs the
execution, tracks the repair effects within the application process,
and detaches from the process after all repair effects are flushed
from the process state. The current implementation of RCV enables
applications to recover from divide by zero and null dereference
uses static program analysis to generate input
filters that discard inputs that may trigger integer overflow
errors in the computations of the sizes of allocated
memory blocks or the number of copied bytes in block copy opera-
tions. SIFT is sound - if an input passes the filter,
it will not trigger an overflow error at any analyzed site.
The Flex Program Analysis and Compilation System
A program analysis and compilation system written in Java for Java,
complete with extensive backend, thread, memory management, and
The SPAN Pointer Analysis Package
A pointer analysis package for both multithreaded and
sequential C programs. The package is integrated with the
SUIF Compiler Infrastructure and has been used by several
research groups to support a variety of projects.
The Jade Programming Language
A portable, implicitly parallel programming language that
runs on wide range of machines, from tightly-coupled shared-memory
multiprocessors to geographically distributed networks of