Abstract
Despite the best efforts of software engineers, faults still escape into
deployed software. Developers need time to prepare and distribute fixes, and
in
the interim, deployments must either avoid failures or endure their
consequences. Self-adaptive systems---systems that adapt to changes --
--internally,
in requirements, and in a dynamic environment---can often handle these
challenges automatically, depending on the nature of the failures.
Those self-adaptive systems where functional features can be added or removed
also constitute configurable systems. Configurable software is known to suffer
from failures that appear only under certain feature combinations, and these
failures are particularly challenging for testers, who must find suitable
configurations as well as inputs to detect them. However, these elusive
failures seem well suited for avoidance by self-adaptation. We need only find
an alternative configuration that precludes the failure without derailing the
current use case.
This work investigates that possibility, along with some further conjectures:
that the failures that are sensitive to a system's configuration depend on
similar feature combinations---a phenomenon we call feature-locality---that
this locality can be combined with historical data to predict failure-prone
configurations and reconfiguration workarounds, and that these workarounds
rarely lead the system out of one failure and into another. In a case study on
128 failures reported against released versions of an open source configurable
system, and 16 failures discovered through a state-of-the-art testing tool,
plus
several thousand tests cases, we find evidence to support all of these
hypotheses.
GCC Feature Model
This is an XML representation of the GCC feature model used
for our analysis.
Bug List
CSmith Test Cases
We generated 1024 CSmith test cases. These are
the test cases used in our experiments.
Links to Torture Test Suites
The torture test suites can be found here in the gcc svn repository here. We
include both the browsable directory and the svn links for downloading the
artifacts.
Schedule of Bug Releases
The schedule of bug releases used in our experiments.
Acknowledgments
This work is supported in part by the National Science Foundation through awards
CNS-0720654, CCF-0747009, CCF-0915526, and CFDA-47.076, by the Air Force Office
of Scientific Research through awards FA9550-09-1-0129, FA9550-09-1-0687 and
FA9550-10-1-0406. Any opinions, findings, conclusions, or recommendations expressed in this
material are those of the authors and do not necessarily reflect the position or
policy of NSF or the AFOSR.