Workshop: Java Concurrency Stress (JCStress). Part 2
summary
JCStress walkthrough shows how the harness actually finds concurrency bugs: it forks a host JVM per test and generates task/run loops with forced inlining and footprint checks to trim heaps and reuse state, it runs split compilation (C1/C2/interpreter) and randomized compiler options to expose backend mismatches, it uses checkpointing collision windows and CPU-affinity/topology configurations plus selectable spin/wait strategies to raise collision probability, and it demonstrates real, platform-specific failures (volatile/fence placement, array element visibility, 64-bit atomicity on 32-bit, and compiler optimizations that break JMM).
AI-written summary · about
chapters (30)
- 0:00Intro
- 0:30Advanced Topics
- 2:10Architecture
- 4:23Harness
- 5:27Running multiple JVMs
- 6:31State tests
- 7:53Thread counts
- 9:01Compilation modes
- 10:30Compilation conditions
- 12:50Randomizing compiler choices
- 14:44Fuzzing compilers
- 15:32Collision windows
- 16:59Topology
- 19:38Spin Styles
- 21:57Test Fields
- 22:52Single Use
- 23:54Java Semantics
- 26:21Questions
- 33:55Advanced Samples
- 38:05Synchronization
- 39:55Fencing
- 41:25Irif
- 43:15Total Store Order
- 46:05Fences
- 47:15Full Fences
- 49:25Volatile Updates
- 51:15Volatile Timeline
- 52:25Array Finality
- 53:45varhandles
- 55:25premature list
related talks
30mJCStress: Diving into Concurrency and Distributed Systems in Java
36mConcurrency — Java Memory Model — Not Just for Eagles
40mA practical approach to Java Memory Model
39mLincheck: Testing concurrency on the JVM
01h 13mBack from the 70s — the Concurnas concurrency model!
48mConcurrency: It’s Harder (and Easier) Than You Think
44mPoints of Contact: Java & GC
34mIntroduction and pitfalls of Java's new concurrency model
