Detecting Semantic Bugs in Autopilot Software by Classifying Anomalous Variables. - Huang, Hu. (Tufts University. Tisch Library., 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. Semantic 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.