It is rcutorture's job to make sure that Linux-kernel RCU actually works, and so it is worthwhile getting to know rcutorture a bit better. The following blog posts cover design of, use of, and experience with this test suite:
- Stupid RCU Tricks: So you want to torture RCU? (use)
- Stupid RCU Tricks: So rcutorture is Not Aggressive Enough For You? (use)
- Stupid RCU Tricks: Failure Probability and CPU Count (use)
- Stupid RCU Tricks: Enlisting the Aid of a Debugger (use)
- Stupid RCU Tricks: Torturing RCU Fundamentally, Part I (design)
- Stupid RCU Tricks: Torturing RCU Fundamentally, Part II (design)
- Stupid RCU Tricks: Torturing RCU Fundamentally, Part III (design)
- Stupid RCU Tricks: Torturing RCU Fundamentally, Parts IV and V (design)
- Stupid RCU Tricks: So rcutorture is Still Not Aggressive Enough For You? (use)
- Stupid RCU Tricks: rcutorture fails to find an RCU bug (experience)
- Stupid RCU Tricks: The design of rcutorture (design)
- Stupid RCU Tricks: Which tests do I run??? (use)
- Stupid RCU Tricks: Making Race Conditions More Probable (design)
- Stupid RCU Tricks: Creating Branches For the -rcu Tree (git)
- Stupid RCU Tricks: So You Want To Add Kernel-Boot Parameters Behind rcutorture's Back? (use)
- Stupid RCU Tricks: So You Want to Torture RCU With a Non-Trivial Userspace? (use)
And here are a few older posts covering rcutorture:
- Hunting Heisenbugs (experience, 2009)
- Hunting More Heisenbugs (experience, 2009)
- Stupid RCU Tricks: RCU Priority Inversion (design, 2010)
- And it used to be so simple... (design, 2011)
- Stupid RCU Tricks: Bug Found by Refactored Tests (design, experience, and use, 2014)
- Stupid RCU Tricks: rcutorture Catches an RCU Bug (experience, 2014)
- Stupid RCU Tricks: rcutorture Accidentally Catches an RCU Bug (experience, 2017)
I hope that this series is helpful, and I further hope that it will inspire more aggressive torturing of other software!