SEFeb 25, 2021

NSan: A Floating-Point Numerical Sanitizer

arXiv:2102.12782v112 citations
Originality Incremental advance
AI Analysis

This addresses the need for practical and efficient debugging of floating-point issues in software development, particularly for large applications, though it is an incremental improvement within the existing sanitizer framework.

The authors tackled the problem of detecting floating-point numerical bugs in software by introducing nsan, a new sanitizer that uses compile-time instrumentation and higher-precision shadows, achieving speeds 1 to 4 orders of magnitude faster than existing methods.

Sanitizers are a relatively recent trend in software engineering. They aim at automatically finding bugs in programs, and they are now commonly available to programmers as part of compiler toolchains. For example, the LLVM project includes out-of-the-box sanitizers to detect thread safety (tsan), memory (asan,msan,lsan), or undefined behaviour (ubsan) bugs. In this article, we present nsan, a new sanitizer for locating and debugging floating-point numerical issues, implemented inside the LLVM sanitizer framework. nsan puts emphasis on practicality. It aims at providing precise, and actionable feedback, in a timely manner. nsan uses compile-time instrumentation to augment each floating-point computation in the program with a higher-precision shadow which is checked for consistency during program execution. This makes nsan between 1 and 4 orders of magnitude faster than existing approaches, which allows running it routinely as part of unit tests, or detecting issues in large production applications.

Foundations

The foundational work for this paper's niche, ranked by how specifically the neighbourhood builds on it — not by global fame.

Your Notes