Undefined Behavior in 2017 (part 2 of 2)
summary
Recent years deliver practical defenses: AddressSanitizer finds heap/stack/out-of-bounds issues fast, UndefinedBehaviorSanitizer catches signed/unsigned overflow, pointer and alignment violations, and Memory/Thread Sanitizers detect uninitialized reads and data races. A planned Type Sanitizer will expose strict-aliasing errors that force memcpy fixes. The talk cites ~200+ undefined behaviors in C/C++ and notes dynamic tools plus fuzzers find real bugs (tools like Csmith helped find 500+ compiler bugs), but production-grade bounds and temporal memory safety remain unsolved.
AI-written summary · about
chapters (16)
- 0:00Introduction to dynamic analysis
- 0:23LLVM sanitizers progress
- 1:24Undefined Behavior Sanitizer details
- 3:55Integer overflow checks
- 5:17Other sanitizers overview
- 6:41Type aliasing sanitizer
- 7:24Dynamic vs static analysis
- 9:10Fuzzing and sanitizer synergy
- 10:58Undefined behavior universe
- 11:20Mitigation tools explained
- 14:54Production use of sanitizers
- 16:21Mitigation limitations
- 17:44Bounds checking debate
- 19:09Standardizing undefined behavior
- 20:34Current state of sanitizers
- 22:25Recommendations and conclusion
related talks
05mDetecting Programs That Rely on Undefined Behavior
01h 04mRemoving Needless Undefined Behavior for a Safer C++
01h 30mDangerous Optimizations in C and C++ Programming Languages
57mUndefined Behavior is Not an Error
54mKeynote: Safety in C++: All the Safeties!
01h 04mC++ and Safety
19mLightning Talk: Your Favorite Undefined Behavior in C++
40mAddressSanitizer, or How to Make C/C++ Programs More Reliable and Secure
