Detecting Semantic Bugs in Autopilot Software by Classifying Anomalous Variables.
Huang, Hu.
2019
-
The autopilot is the
cornerstone for current advances in ground and air vehicles. However, like any piece of
software, autopilots still contain bugs. One way to categorize bugs places them into
three categories: memory, concurrency and se- mantic bugs. A large portion of bugs in
autopilots are semantic bugs, where the autopilot does not behave according to the
expectations of the programmer. ... read moreSemantic bugs are especially difficult to detect as
these bugs do not crash the program. Instead the autopilot continues to execute but can
lead to potentially disastrous consequences. In this thesis, we construct a bug detector
to detect semantic bugs. A bug detector requires two components to function, a source of
data and a method to extract meaning from the data. We hypothesize that semantic bugs
can be detected by monitoring a set of relevant variables internal to the autopilot as
the data source. In addition, we leverage machine learning models as the method to
interpret the data. We formulate the problem of identifying relevant variables formally
as an optimization problem, which is to locate a set of variables that minimizes
overhead and satisfies our performance constraints. Since the optimization problem is
computationally expensive to solve directly, we utilize several heuristics to tackle our
problem. First, we hypothesize that there exists a solution to our optimization problem.
We confirm our hypothesis on Ardupilot by transforming our optimization problem to a
feasibility problem and show that we can find a set of variables that meet some of our
performance criteria. Second, once we meet the feasibility requirements, we hypothesize
that program slicing can be used as a principled approach to identify a set of variables
that can meet tighter constraints. Our experimental results show variables identified in
the program slice enable our learning models to perform significantly better compared to
variables comprising the system inputs and outputs. Additionally, we implement two
methods that select a subset of variables from the program slice, which attempts to
retain bug detection performance while reducing overhead. Our results show that we can
retain nearly the same bug detection performance as compared to the full slice but
reduce the overhead of the bug detector by as much as
80%.
Thesis (Ph.D.)--Tufts University, 2019.
Submitted to the Dept. of Computer Science.
Advisors: Samuel Guyer, and Jason Rife.
Committee: Kathleen Fisher, Alva Couch, and Demoz Gebre-Egziabher.
Keyword: Computer science.read less - ID:
- bn999m577
- To Cite:
- TARC Citation Guide EndNote