6 years ago
6 years ago


(Reporter: vladan, Unassigned)


16 Branch

Firefox Tracking Flags

(Not tracked)


(Whiteboard: [js:p1])



6 years ago
There were 853 main-thread hangs reported to Telemetry from Windows Nightly builds over the last month with the following stack..

JSScript::markChildren(JSTracer *) (in mozjs.dll)
 -> js::gc::MarkUnbarriered<JSScript> (in mozjs.dll)
 -> fun_trace (in mozjs.dll)
 -> js::GCMarker::processMarkStackTop(js::SliceBudget &) (in mozjs.dll)
 -> js::GCMarker::drainMarkStack(js::SliceBudget &) (in mozjs.dll)
 -> GCCycle (in mozjs.dll)
 -> Collect (in mozjs.dll)
 -> js::GCFinalSlice(JSRuntime *,js::JSGCInvocationKind,js::gcreason::Reason) (in mozjs.dll)
 -> CCTimerFired (in xul.dll)
 -> nsThread::ProcessNextEvent(bool,bool *) (in xul.dll)
Could you explain more about this? What counts as a hang? And do all 853 stacks look exactly like this, or is it just that the stacks all end in JSScript::markChildren(JSTracer *) (as you might see in crashstats)?

Comment 2

6 years ago
We consider that a hang has occurred if the main thread takes longer than 5 seconds to process an event. When a hang is detected, the hang's duration and the main thread's call stack are reported to Telemetry. Note that we only report "transient hangs" to Telemetry, permanent hangs are not reported with this mechanism. Also, only the Windows Nightly builds report these hangs. You can get a bit more info in this blog post:

The stack in Comment #1 came from a compilation of hang reports from August and September. In that time period we had 132,764 hang stacks, with 16,759 unique stacks. Hang stacks containing the same 10 frames as the stack in Comment #1 were reported 853 times. 

You can see the full list of hangs with 100 reports or more here:

Comment 3

6 years ago
Let me know if you need any more info for this
Whiteboard: [js:p1]
I think this is a dupe of bug 810022 since CCTimerFired is in the stack. Dedupe if you disable.
Last Resolved: 6 years ago
Resolution: --- → DUPLICATE
Duplicate of bug: 810022
Bug 810127 is the chrome hang one, not bug 810022.
Duplicate of bug: 810127
You can see js::GCFinalSlice on the stack (finish off the current incremental GC), rather than GCForReason (do a full GC right now).
You need to log in before you can comment on or make changes to this bug.