TITLE: Automatic Recovery from Runtime Failures ABSTRACT: I will present a technique to make applications resilient to failures. This technique is intended to maintain a faulty application functional in the field while the developers work on permanent and radical fixes. This technique applies to applications built on reusable components. In particular, the technique exploits the intrinsic redundancy of those components by identifying workarounds. A workaround is a an alternative way to use a faulty component so as to avoid the failure, and the technique amounts to finding and applying those workarounds automatically at runtime. The technique is currently implemented for Java applications but makes little or no assumptions about the nature of the application. One of its salient features is that it works without interrupting the execution flow of the application and without restarting its components. I will also present the evaluation of this technique on four mid-size applications and two popular libraries of reusable components affected by real and/or seeded faults. In these cases the technique is effective, maintaining the application fully functional, with between 19 % and 48 % of the failure-causing faults. The experiments also show that the technique incurs an acceptable runtime overhead in all cases.