Sfink/Useful Notes: Difference between revisions

no edit summary
No edit summary
No edit summary
 
Line 1: Line 1:
== Problem A ==
== Problem A: System too unusable to diagnose ==


When a bad memory leak kicks in, the system can be too unusable to
When a bad memory leak kicks in, the system can be too unusable to get useful data out.
get useful data out.


=== Solution ===
=== Solution ===
Line 31: Line 30:
actual crash to trigger)
actual crash to trigger)


== Problem B ==
== Problem B: Regular users can't generate useful reports  ==


Hard for regular users to generate a useful memory problem report
Hard for regular users to generate a useful memory problem report
Line 51: Line 50:
usage similar to the crash correlation reports -- requires telemetry.)
usage similar to the crash correlation reports -- requires telemetry.)


== Problem C ==
== Problem C: Knowledgeable users can't generate useful reports ==


Hard for developers or knowledgeable and motivated users to generate
Hard for developers or knowledgeable and motivated users to generate
Line 68: Line 67:
alive.)
alive.)


== Problem D ==
== Problem D: Uncollected garbage ==


Garbage is not collected
Garbage is not collected
Line 90: Line 89:
[[#D4]] Detect subgraphs that are never accessed
[[#D4]] Detect subgraphs that are never accessed


== Problem E ==
== Problem E: Unleaked but excessive memory usage ==


High memory usage, not leaked
High memory usage, not leaked
Line 102: Line 101:
tradeoff is for various things (eg jit code, structure sizes)
tradeoff is for various things (eg jit code, structure sizes)


== Problem F ==
== Problem F: Hard to track down problems ==


Hard to navigate through a memory dump or the current state to track
Hard to navigate through a memory dump or the current state to track
Line 109: Line 108:
[[#F1]] Dump all roots of a compartment, and trace roots back to the XPCOM/DOM/whatever thing that is holding onto that root (when available)
[[#F1]] Dump all roots of a compartment, and trace roots back to the XPCOM/DOM/whatever thing that is holding onto that root (when available)


[[#F2]] Record addr,size,stack at every allocation
[[#F2]] Go from JS object to things keeping it alive (dump out GC edges) -- see jimb's findReferences (currently JS shell only)


[[#F3]]  
[[#F3]] Record addr,size,stack at every allocation (kgadd's heap visualizer)
 
[[#F4]]  


</div>
----------------------------------------------------------------------
----------------------------------------------------------------------


Confirmed users
328

edits