Download presentation
Presentation is loading. Please wait.
Published byMaude Nicholson Modified over 9 years ago
1
1 SWAT Memory Leak Detection Matthias Hauswirth
2
2 Agenda Approaches to memory leak detection SWAT infrastructure Heap model Staleness predicates Leak analysis tool
3
3 Memory Leaks time object1 allocfreeaccess
4
4 Memory Leaks time object1 allocaccess allocfreeaccess shutdown object2
5
5 Memory Leaks time object1 allocaccess allocaccess reachableunreachable allocfreeaccess shutdown object2 object3
6
6 Approaches to Leak Detection Survivors Objects surviving until program termination Unreachables Objects unreachable at snapshot (GC) Stales Objects not recently accessed at snapshot (SWAT)
7
7 Survivors: Guess time o1 o2 startupshutdown o3 o4 o5 leak -
8
8 Survivors: Reality time o1 o2 startupshutdown o3 o4 o5 leak ? leak leak ? leak -
9
9 Unreachables: Guess time o1 o2 startupshutdown o3 o4 o5 leak snapshot - alive -
10
10 Unreachables: Reality time o1 o2 startupshutdown o3 o4 o5 alive ? snapshot leak - alive -
11
11 Stales (SWAT): Guess time o1 o2 startupshutdown o3 o4 o5 leak snapshot leak - - alive
12
12 Stales (SWAT): Reality time o1 o2 startupshutdown o3 o4 o5 snapshot - - alive leak
13
13 SWAT Infrastructure instrument winword.exe winword.swat.exe runswatruntime.dll source info postprocess snapshots statistics view settings
14
14 Instrument proc1 comp1
15
15 Bursty Tracing: Duplicate Basic Blocks proc1prof$proc1 comp1
16
16 Bursty Tracing: Insert Dispatch Checks proc1prof$proc1 comp1
17
17 Instrumentation: Patch Allocations & Frees xallocXallocWrapper comp1swatruntime.dll
18
18 Instrumentation: Instrument Loads & Stores proc1prof$proc1 comp1 RecordReference swatruntime.dll
19
19 Bursty Tracing Dispatch Check DecOrig StayOrig OrigTgt OrigZero DecProf StayProfStartOrigStartProf ProfTgt OrigSrcProfSrc Global Counters: cOrig# of StayOrig cProf# of StayProf cOrig==1 cOrig>1cProf==0cProf==1cProf>1
20
20 Adaptive Bursty Tracing Bursty tracing Sampling rate influences results Rate chosen at runtime Adaptive bursty tracing Different sampling rate by dispatch check point Start at high rate Wait until average gets down to requested rate Start rate, delta & target rate chosen at runtime
21
21 Why Adaptive Bursty Tracing?
22
22 Adaptive Bursty Tracing Dispatch Check DecOrig StayOrig OrigTgt OrigZero DecProf StayProfStartOrigStartProf ProfTgt OrigSrcProfSrc Per-Dispatch Check Counter: cOrig[dcid]# of StayOrig Global Counter: cProf# of StayProf cOrig[dcid]==1 cOrig[dcid]>1cProf==0cProf==1cProf>1 dcid
23
23 Effect of Adaptive Bursty Tracing on Coverage
24
24 SWAT Heap Model Requirements AllocateObject(eip, startAddress, size) FreeObject(eip, startAddress) FindObject(eip, address) GetObjectIterator() Implementations Hash table (address→objectInfo) Hash table (startAddress→objectInfo) Hash table (address→offsetToStartAddress) Address tree
25
25 SWAT Heap Model 0 0 0 0 0 000 0000000 0000100001001100 1 1 1 1 1 111 1111111 Address: 0101 0101
26
26 SWAT Heap Model 0 0 0 0 0 000 0000000 0000100001001100 1 1 1 1 1 111 1111111 8 byte0101
27
27 SWAT Heap Model 0 0 0 0 0 000 0000000 0000100001001100 1 1 1 1 1 111 1111111
28
28 SWAT Heap Model 0 00 000 00000 0000100001001100 1 11 111 11111
29
29 SWAT Heap Model 0 00 000 00000 0000100001001100 1 11 111 11111
30
30 SWAT Heap Model 0 00 00 00 0000100001001100 1 11 11 11
31
31 SWAT Heap Model 0 00 00 00 1 11 11 11 Start address:0101 Size:8 Access count:19 Last access time:19’000’000 Alloc site:EIP 0x400019 Last access site:EIP 0x400190
32
32 SWAT Heap Model Space Overhead Address Tree Nodes 0.03 … 0.35 allocated node bytes / allocated byte Overall 0.12 … 3.4 times the allocated memory Time FindObject(eip, address) Log(addressSpaceSize) --- (32 bits = 32 nodes)
33
33 Evaluation: Time Overhead
34
34 active Staleness Predicates Stale = object not needed anymore Stale, if… Never accessed Idle time > t Idle time > n * active time idle n*active t idle
35
35 Evaluation Inject leaks Randomly, at runtime, decide not to execute a free Variables Sampling rate Adaptive or bursty Predicate Measurement results per snapshot List of objects assumed leaked Some true, some false List of objects assumed alive Some true, some false
36
36 Comparing Predicates
37
37 Comparing Sampling Rates
38
38 Lucky Omission Effect maxIdleTime time [# actual references] Injected Leak Question At time of snapshot, is object a leak? snapshot
39
39 Lucky Omission Effect maxIdleTime Low sampling rate time [# actual references] snapshot
40
40 Lucky Omission Effect maxIdleTime Low sampling rateassumed leaked: true time [# actual references] snapshot
41
41 Lucky Omission Effect maxIdleTime Low sampling rate High sampling rate assumed leaked: true time [# actual references] snapshot
42
42 Lucky Omission Effect maxIdleTime Low sampling rate High sampling rate assumed leaked: true assumed alive: false time [# actual references] snapshot
43
43 Lucky Omission Effect lucky omission window maxIdleTime Low sampling rate High sampling rate assumed leaked: true assumed alive: false time [# actual references] snapshot
44
44 Mitigation of Lucky Omission Effect Reduce chance of leak happening during maxIdleTime snapshotInterval >> maxIdleTime maxIdleTime time [# actual references] maxIdleTime snapshotInterval snapshot
45
45 Practical Sampling Rates & Useful Predicates
46
46 Leak Analysis Tool
47
47 Ranking Sort pairs Old rankings: # of stale objects [currently used] # of stale bytes Drag caused by stale objects (bytes*idle time) New ranking: # of predicates declaring an object stale
48
48 Conclusions Many ways to leak detection Predicting leaks by looking at past events: Important objects might never be used (boxsim) Lots of stale objects might indicate a space- inefficient algorithm Leak Analysis Tool Made it easy to find several statically injected leaks
49
49 Future Work Currently: Store source info compactly (at instrumentation time) Snapshots at runtime don’t use source info Post process snapshots to add source info This week: Rank leaks Update Leak Analysis Tool to use ranking Run new version on winword.exe and mshtml.dll Later: Combine “Unreachables” with “Stales” approach
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.