Proceedings of the 30th ACM SIGPLAN International Conference on Compiler Construction 2021
DOI: 10.1145/3446804.3446848
|View full text |Cite
|
Sign up to set email alerts
|

NSan: a floating-point numerical sanitizer

Abstract: 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 framewo… Show more

Help me understand this report
View preprint versions

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1
1
1

Citation Types

0
3
0

Year Published

2021
2021
2023
2023

Publication Types

Select...
5
1
1

Relationship

0
7

Authors

Journals

citations
Cited by 8 publications
(5 citation statements)
references
References 9 publications
0
3
0
Order By: Relevance
“…A number of sanitisers exist that can be used with general fuzzers [38]. The most popular ones [39] are memory (MSAN) sanitiser which detects uses of uninitialized memory, address (ASAN) sanitizer which targets use-after-free buffer-overflows and memory leaks, thread sanitizer (TSAN) which detects data races and deadlocks, floating-point sanitizer (NSAN), and undefined behaviour sanitizer (UB-San) [38], [40]. Differential oracles.…”
Section: A Fuzzingmentioning
confidence: 99%
“…A number of sanitisers exist that can be used with general fuzzers [38]. The most popular ones [39] are memory (MSAN) sanitiser which detects uses of uninitialized memory, address (ASAN) sanitizer which targets use-after-free buffer-overflows and memory leaks, thread sanitizer (TSAN) which detects data races and deadlocks, floating-point sanitizer (NSAN), and undefined behaviour sanitizer (UB-San) [38], [40]. Differential oracles.…”
Section: A Fuzzingmentioning
confidence: 99%
“…This step could be done semiautomatically by associating with each floating-point value the number of consecutive floating-point addition/subtraction done to produce a given results. We have developed a pass based on a modified version of Nsan [30], where each floating-point number corresponds to a pair of number (V, N ), with V the floating-point value and N the number of consecutive additions/subtractions. Each floating-point operation R = A • B is replaced in the Nsan framework by the following operation: where…”
Section: A Accumulator Identificationmentioning
confidence: 99%
“…1 There are also a large range of tools (e.g. [6,8,9,14,15,22,39,42,44,48,[52][53][54]) whose goal is to improve the quality of the source code, generally by identifying sections that have high dependence on precision or on compiler/hardware optimization choices. These sections may have numerical stability problems that are due to algorithmic design and implementation issues, or where optimizations are buggy or change the semantics of the source code.…”
Section: Introductionmentioning
confidence: 99%