Updated in 2025-01.
UndefinedBehaviorSanitizer (UBSan) is an undefined behavior detector for C/C++. It consists of code instrumentation and a runtime. Both components have multiple independent implementations.
Clang implemented
the first few checks in 2009-12, initially named
-fcatch-undefined-behavior. In 2012
-fsanitize=undefined was added and
-fcatch-undefined-behavior was removed.
GCC 4.9 implemented
-fsanitize=undefined in 2013-08.
The runtime used by Clang lives in
llvm-project/compiler-rt/lib/ubsan. GCC from time to time
syncs its downstream fork of the sanitizers part of compiler-rt
(libsanitizer). The end of the article lists some
alternative runtime implementations.