Thread Sanitizing for Java
summary
An interpreter-only TSan integration for HotSpot is now upstreamed as a prototype that links LLVM TSan into the JVM, instruments Java object locks, synchronized methods, volatiles, and JNI/native accesses, and reports races with Java-level stacks; a demo showed it find and reproduce a simple read/write race and stop reporting it after synchronizing. Implementation currently uses a naive object-tracking GC protocol, has about 60 JDK suppressions, and measures roughly 3–9× slowdown and ~1.05–4× memory overhead; licensing and final-field/unsafe gaps remain.
AI-written summary · about
chapters (14)
- 0:00Intro
- 0:38TSan Project: High Level Goals
- 1:18Purpose of this talk
- 7:17Why LLVM TSan for Java TSan
- 10:04Java TSan Architecture
- 11:50Synchronization
- 13:03Java Memory Accesses
- 14:12Volatile Fields
- 17:03Allocating, Garbage Collecting, and Moving Objects
- 19:05Symbolization
- 20:04Native Races
- 21:34Non-Performance Numbers
- 22:16Unresolved issues
- 28:06Conclusion
related talks
48mThreadSanitizer and Heap Sampling
32mMaTSa: Race Detection in Java
35mJava at Speed: Building a Better JVM
56mProject Lilliput: Shrinking Object Headers in the HotSpot JVM
44mJava at Speed: Building a Better JVM.
55mThe Performance Engineer's Guide To Java HotSpot
46mUnsafe (and Java 9/10) (RU)
48mJava 9 Performance
