kirancodes.me
To Proof Maintenance & Beyond!

Singularity: pattern fuzzing for worst case complexity

Jiayi Wei, Jia Chen, Yu Feng, Kostas Ferles, Isil Dillig

Abstract

We describe a new blackbox complexity testing technique for determining the worst-case asymptotic complexity of a given application. The key idea is to look for an input pattern —rather than a concrete input— that maximizes the asymptotic resource usage of the target program. Because input patterns can be described concisely as programs in a restricted language, our method transforms the complexity testing problem to optimal program synthesis. In particular, we express these input patterns using a new model of computation called Recurrent Computation Graph (RCG) and solve the optimal synthesis problem by developing a genetic programming algorithm that operates on RCGs. We have implemented the proposed ideas in a tool called Singularityand evaluate it on a diverse set of benchmarks. Our evaluation shows that Singularitycan effectively discover the worst-case complexity of various algorithms and that it is more scalable compared to existing state-of-the-art techniques. Furthermore, our experiments also corroborate that Singularitycan discover previously unknown performance bugs and availability vulnerabilities in real-world applications such as Google Guava and JGraphT.

BibTeX
@inproceedings{Wei-al:FSE18,
  author    = {Jiayi Wei and
               Jia Chen and
               Yu Feng and
               Kostas Ferles and
               Isil Dillig},
  title     = {Singularity: pattern fuzzing for worst case complexity},
  booktitle = {{ESEC/SIGSOFT} {FSE}},
  pages     = {213--223},
  publisher = {{ACM}},
  year      = {2018},
}

Related papers