Baris ¡Kasikci, ¡Cris,an ¡Zamfir, ¡and ¡George ¡Candea
School ¡of ¡Computer ¡& ¡Communica3on ¡Sciences
RaceMob: ¡Crowdsourced ¡ Data ¡Race ¡Detec,on
Tuesday 12 November 13
RaceMob: Crowdsourced Data Race Detec,on Baris Kasikci, - - PowerPoint PPT Presentation
RaceMob: Crowdsourced Data Race Detec,on Baris Kasikci, Cris,an Zamfir, and George Candea School of Computer & Communica3on Sciences Tuesday 12 November 13 Data Races
School ¡of ¡Computer ¡& ¡Communica3on ¡Sciences
Tuesday 12 November 13
Thread ¡1 Thread ¡2
2
x = 1 x = 2 shared x
Tuesday 12 November 13
3
Tuesday 12 November 13
4
Tuesday 12 November 13
5
Tuesday 12 November 13
6
Tuesday 12 November 13
✔ ✔ ✔ ✔
7
Sta,c ¡ Detec,on
Crowdsourcing
Race ¡& Hang Race ¡& Crash
All Memory Accesses
Poten5ally Racing Accesses
Likely Racing Accesses
Dynamic ¡ Context ¡ Inference
True Races
On-‑demand Valida,on
Tuesday 12 November 13
8
Applica,on ¡Home (e.g., ¡AppStore) program Users ¡run ¡ instrumented programs Issues
Tuesday 12 November 13
9
Tuesday 12 November 13
10
All Memory Accesses
Poten5ally Racing Accesses
Sta,c ¡ Detec,on
Crowdsourcing
Race ¡& Hang Race ¡& Crash
Likely Racing Accesses
Dynamic ¡ Context ¡ Inference On-‑demand Valida,on
True Races
Tuesday 12 November 13
11
LS2 = {} x = 1 lock(l) unlock(l) Thread ¡1 ... x = 2 lock(l) unlock(l) Thread ¡2 ... LS1 = {}
Tuesday 12 November 13
12
Sta,c ¡ Detec,on
Crowdsourcing
Race ¡& Hang Race ¡& Crash
Poten5ally Racing Accesses
All Memory Accesses
Likely Racing Accesses
Dynamic ¡ Context ¡ Inference
True Races
On-‑demand Valida,on
Tuesday 12 November 13
13
Tuesday 12 November 13
14
x = 1 lock(l) unlock(l) Thread ¡1 x = 2 lock(l) unlock(l) Thread ¡2
... ...
Tuesday 12 November 13
15
Sta,c ¡ Detec,on
Crowdsourcing
Race ¡& Hang Race ¡& Crash
All Memory Accesses Dynamic ¡ Context ¡ Inference On-‑demand Valida,on
Poten5ally Racing Accesses
Likely Racing Accesses True Races
Tuesday 12 November 13
16
unlock(l) lock(l) x=2 x=1 Thread ¡1 Thread ¡2
Tuesday 12 November 13
17
x = 1 Thread ¡1 Thread ¡2
x = 1 Thread ¡1 Thread ¡2 x = 1
lock(l) unlock(l) ... x = 2 unlock(l) ... unlock(l) lock(l) ... x = 2 lock(l) unlock(l) ... HB lock(l) No HB
Tuesday 12 November 13
18
Applica,on ¡Home (AppStore, ¡Play) program
NO RACE NOT ALIASING NOT SEEN RACE RACE & CRASH RACE & HANG NOT MULTITHREADED
Tuesday 12 November 13
19
All Memory Accesses
Poten5ally Racing Accesses
Sta,c ¡ Detec,on
Crowdsourcing
Race ¡& Hang Race ¡& Crash
Dynamic ¡ Context ¡ Inference On-‑demand Valida,on
Likely Racing Accesses True Races
Tuesday 12 November 13
memcached
20
SPLASH-2
Tuesday 12 November 13
memcached
21
SPLASH-2
Tuesday 12 November 13
22
R a c e ¡ & ¡ C r a s h
R a c e N
¡ A l i a s i n g N
¡ M u l , t h r e a d e d N
R a c e N
¡ s e e n T
a l 841 3 3 100 172 267 212 84 106 ¡true ¡ data ¡races
Tuesday 12 November 13
23
Detec,on ¡,me/ ¡Na,ve ¡execu,on ¡,me
1 8 16 23 30 Ocean ¡(CPU-‑bound) Pbzip2 ¡(I/O-‑bound) Dynamic ¡detec,on Sta,c ¡+ ¡dynamic ¡detec,on RaceMob ¡(sta,c ¡+ ¡dynamic ¡+ ¡DCI ¡+on-‑demand ¡valida,on) ¡aggregate RaceMob ¡per-‑user 26.1x 3.6x 1.01x 30x 30x 6.3x 5.4x 1.03x
Tuesday 12 November 13
24
1.25 2.50 3.75 5.00 Apache SQLite Memcached Fmm Barnes Ocean Pbzip2 Knot Aget Pfscan
Run,me ¡overhead ¡vs. ¡na,ve ¡execu,on
% % % % 1.00 % Instrumenta,on Valida,on
Tuesday 12 November 13
25
Sta,c ¡ Detec,on
Crowdsourcing
Race ¡& Hang Race ¡& Crash
All Memory Accesses Dynamic ¡ Context ¡ Inference On-‑demand Valida,on
Poten5ally Racing Accesses
Likely Racing Accesses True Races
Tuesday 12 November 13