kirancodes.me
To Proof Maintenance & Beyond!

Automatic Self-Validation for Code Coverage Profilers

Yibiao Yang, Yanyan Jiang, Zhiqiang Zuo, Yang Wang, Hao Sun, Hongmin Lu, Yuming Zhou, Baowen Xu

Abstract

Code coverage as the primitive dynamic program behavior information, is widely adopted to facilitate a rich spectrum of software engineering tasks, such as testing, fuzzing, debugging, fault detection, reverse engineering, and program understanding. Thanks to the widespread applications, it is crucial to ensure the reliability of the code coverage profilers. Unfortunately, due to the lack of research attention and the existence of testing oracle problem, coverage profilers are far away from being tested sufficiently. Bugs are still regularly seen in the widely deployed profilers, like gcov and llvm-cov, along with gcc and llvm, respectively. This paper proposes Cod, an automated self-validator for effectively uncovering bugs in the coverage profilers. Starting from a test program (either from a compiler's test suite or generated randomly), Cod detects profiler bugs with zero false positive using a metamorphic relation in which the coverage statistics of that program and a mutated variant are bridged. We evaluated Cod over two of the most well-known code coverage profilers, namely gcov and llvm-cov. Within a four-month testing period, a total of 196 potential bugs (123 for gcov, 73 for llvm-cov) are found, among which 23 are confirmed by the developers.

BibTeX
@inproceedings{Yang-al:ASE19,
  author    = {Yibiao Yang and
               Yanyan Jiang and
               Zhiqiang Zuo and
               Yang Wang and
               Hao Sun and
               Hongmin Lu and
               Yuming Zhou and
               Baowen Xu},
  title     = {Automatic {Self-Validation} for Code Coverage Profilers},
  booktitle = {ASE},
  pages     = {79--90},
  publisher = {{IEEE}},
  year      = {2019},
}

Related papers