Unit type errors, where values with physical unit types (e.g., meters, hours) are used incorrectly in a computation, are common in today's unmanned aerial system (UAS) firmware. Recent studies show that unit type errors represent over 10% of bugs in UAS firmware. Moreover, the consequences of unit type errors are severe. Over 30% of unit type errors cause UAS crashes. This paper proposes SA4U: a practical system for detecting unit type errors in real-world UAS firmware. SA4U requires no modifications to firmware or developer annotations. It deduces the unit types of program variables by analyzing simulation traces and protocol definitions. SA4U uses the deduced unit types to identify when unit type errors occur. SA4U is effective: it identified 14 previously undetected bugs in two popular open-source firmware (ArduPilot & PX4.)
翻译:单位类型错误,在计算时错误使用物理单位类型(如米、小时)的值,在今天的无人驾驶航空系统(UAS)公司软件中很常见。最近的研究表明,单位类型错误在UAS公司软件的错误中占10%以上。此外,单位类型错误的后果非常严重。超过30%的单位类型错误导致UAS崩溃。本文提出SA4U:一个在现实世界的UAS公司软件中发现单位类型错误的实用系统。SA4U不需要修改固态软件或开发者说明。它通过分析模拟跟踪和协议定义来推断程序变量的单位类型。SA4U使用推断的单位类型来识别单位类型错误发生时。SA4U是有效的:它在两个流行的开源公司软件(ArduPilot & PX4)中发现了14个先前未发现的错误。