Final Report Summary - NOBUGS (Toward Zero-Defect Software Through Automatic Cooperative Self-Improvement)
The NOBUGS research team tackled a number of difficult problems outlined in the project proposal. They addressed the "path explosion" problem in symbolic execution (SE) by devising a technique that increases by an exponential factor the number of paths explored by SE engines; this new technique (called "efficient state merging") achieves up to 11 orders of magnitude improvement in the exploration of program paths, and the improvement increases by an exponential factor as the size of the symbolic input increases. They developed RaceMob, a crowdsourced verification and validation system aimed at finding and validating concurrency bugs in programs; the demonstrated benefits of crowdsourcing are that validation of the discovered bugs occurs in the context of real user executions and that crowdsourcing amortizes the per-user validation cost. The NOBUGS team designed an approach for mitigating the privacy challenges of collecting and processing "by-products" (traces) of program executions, thus addressing the challenge of preserving the utility of such traces for testing and debugging while, at the same time, providing k-anonymity to users. They further made progress toward the efficient collection of execution by-products, as well as toward quickly prototyping new symbolic execution engines for interpreted programming languages. This work appeared in top venues, such as SOSP, OSDI, PLDI, SIGCOMM, and ASPLOS (http://dslab.epfl.ch/pubs)(odnośnik otworzy się w nowym oknie); corresponding software has been released at http://dslab.epfl.ch/proj(odnośnik otworzy się w nowym oknie).