Eraser
A Dynamic Data-Race Detector for Multi-Threaded Programs
MultiRace
An Efficient On-the-Fly Data-Race Detection Tool for Multi-Threaded C++ Programs John C. Linford
Detecting Data Races in Multi-Threaded Programs
Slide 1 / 31
Detecting Data Races in Multi-Threaded Programs Eraser A Dynamic - - PowerPoint PPT Presentation
Detecting Data Races in Multi-Threaded Programs Eraser A Dynamic Data-Race Detector for Multi-Threaded Programs MultiRace An Efficient On-the-Fly Data-Race Detection Tool for Multi-Threaded C++ Programs John C. Linford Slide 1 / 31 Key
Slide 1 / 31
Slide 2 / 31
Slide 3 / 31
Slide 4 / 31
Slide 5 / 31
Slide 6 / 31
Slide 7 / 31
Slide 8 / 31
Slide 9 / 31
Slide 10 / 31
Slide 11 / 31
Slide 12 / 31
Slide 13 / 31
Slide 14 / 31
wr rd, 2nd thread wr wr, 2nd thread rd / wr, 1st thread rd
Slide 15 / 31
Slide 16 / 31
Slide 17 / 31
Slide 18 / 31
Slide 19 / 31
Program State(shared)
locks_held C(v)
Slide 20 / 31
Program State(shared)
locks_held C(v)
Slide 21 / 31
rd, 2nd thread rd, not 2nd thread wr, any rd / wr, not 2nd thread wr, 2nd thread wr, 2nd thread wr, not 2nd thread first access rd / wr, 1st thread rd, 2nd thread rd, any rd / wr, 2nd thread
Slide 22 / 31
Slide 23 / 31
v Program Memory Shadow Memory &v + Shadow Offset Lockset Index Table mu1 mu2 Lock Vector
Slide 24 / 31
– Maintains lock list for threads and variables. – Uses weak references (less memory usage).
– Maintains lock list for threads and variables. – Uses strong references (faster).
– Same as eraser, but keeps hash table of lock
Slide 25 / 31
– java -cp Ladybug.jar
br.ime.usp.ladybug.LadybugClassRewriter DataRace.class
– java -cp Ladybug.jar:. DataRace
br.ime.usp.ladybug.RCException: [line 9] Race condition detected: t2 of DataRace (hash code = 1b67f74) with Thread-0 at br.ime.usp.ladybug.StaticLadybug.warn(StaticLadybug.java:1014) at br.ime.usp.ladybug.eraser.EraserGC.writeField(EraserGC.java:47) ... at DataRace.access$202(DataRace.java:9) at DataRace$1.run(DataRace.java:37)
Slide 26 / 31
Slide 27 / 31
Slide 28 / 31
Slide 29 / 31
Slide 30 / 31
Slide 31 / 31