Closed Bug 1296484 Opened 3 years ago Closed 3 years ago

Run the CycleCollector from the GC when we detect that COMPARTMENT_REVIVED is not enough

Categories

(Core :: JavaScript: GC, defect)

defect
Not set

Tracking

()

RESOLVED FIXED
mozilla51
Tracking Status
firefox51 --- fixed

People

(Reporter: terrence, Assigned: terrence)

Details

Attachments

(1 file, 2 obsolete files)

Attached patch CC_after_gray_GC-v0.diff (obsolete) — Splinter Review
If we find a compartment that should be collectable but isn't by the end of the GC, we trigger a non-incremental compartmental GC of type COMPARTMENT_REVIVED to collect it. This handles the case where a compartment is marked live by a barrier touching something in the compartment, which may happen incidentally. Doing the work non-incrementally takes barriers out of the equation and lets us reliably collect compartments, even if the mutator is doing something pathological.

Unfortunately, this heuristic does not account for compartments that are unexpectedly live because of a reference from a DOM C++ object and not from a barrier. Since the cycle collector is only triggered by DOM garbage, a fantastic amount of gray JS garbage can pile up and slow everything down in compartments that would be collected if only we could get rid of the one link from the DOM holding the whole thing live.

In this specific case, something relating to navigation is reliably turning most compartments black in between when the GC ends and the next CC begins. In essence, the mutator is doing something pathological here (although I don't know just what yet). We should certainly solve this specific case, but I'd also like to add a backstop for the general problem by making the GC able to "take care of" gray garbage when it determines that it's being flooded by such.

The attached patch implements this by adding a PurgeGray hook that the GC can call to purge gray objects (e.g. do a Cycle Collection). The GC only makes use of this if we detect a revived compartment and either >80% of the remaining compartments are gray, or there are more than 200 gray compartments. In this case we follow our non-incremental GC by a non-incremental CC, cleaning up the edges without allowing barriers to interfere with lifetime. Note that these constraints are quite severe, so (as with COMPARTMENT_REVIVIED) I expect that this will only impact severe workloads. In my local testing, this halved the time it takes to run the jstestbrowser suite.
Attachment #8782697 - Flags: review?(jcoppeard)
Attachment #8782697 - Flags: review?(continuation)
Comment on attachment 8782697 [details] [diff] [review]
CC_after_gray_GC-v0.diff

Review of attachment 8782697 [details] [diff] [review]:
-----------------------------------------------------------------

This sounds like a great idea to make sure we collect these compartments if they really are garbage.

Sorry to bikeshed, but I'm not sure about using 'purge' in the name though.  We already use this for flushing caches and the like and it implies we throw all the gray things away rather than running a cycle collection.
Attachment #8782697 - Flags: review?(jcoppeard) → review+
It's only bikeshedding if you suggest a color though!
Comment on attachment 8782697 [details] [diff] [review]
CC_after_gray_GC-v0.diff

Review of attachment 8782697 [details] [diff] [review]:
-----------------------------------------------------------------

::: js/public/GCAPI.h
@@ +393,5 @@
> + * The purge gray callback is called after any COMPARTMENT_REVIVED GC in which
> + * the majority of compartments have been marked gray.
> + */
> +extern JS_PUBLIC_API(GCPurgeGrayCallback)
> +SetGCPurgeGrayCallback(JSContext* cx, GCPurgeGrayCallback callback);

I agree with Jon that "purge gray" isn't a great name. Maybe just something like "ExcessiveGrayCallback"? Or give up the pretense that this is some general mechanism and call it "CycleCollectCallback"?

::: xpcom/base/CycleCollectedJSRuntime.cpp
@@ +834,5 @@
> +CycleCollectedJSRuntime::GCPurgeGrayCallback(JSContext* aContext)
> +{
> +  // The GC has detected that a CC at this point would collect a tremendous
> +  // amount of garbage that is being revivified unnecessarily.
> +  nsCycleCollector_collect(nullptr);

On the main thread, you shouldn't call _collect() directly. Instead you should be calling nsJSEnvironment::CycleCollectNow(). On workers, you don't want to do this at all, because we always do a sync CC at the end of a GC. So I think this should all be moved to XPCJSRuntime.

Also, I've always thought the JS API penchant for returning the old callback and then calling it was silly, but if you are going to bother with that, you should actually call it if there is one!
Attachment #8782697 - Flags: review?(continuation) → review-
Attached patch CC_after_gray_GC-v1.diff (obsolete) — Splinter Review
Moved to XPConnect and now calling it's successor.

You're quite right though that this situation is abysmal. I've got a couple patches to follow up with that clean up how we handle hooks in the GC.
Attachment #8782697 - Attachment is obsolete: true
Attachment #8783644 - Flags: review?(continuation)
Comment on attachment 8783644 [details] [diff] [review]
CC_after_gray_GC-v1.diff

Review of attachment 8783644 [details] [diff] [review]:
-----------------------------------------------------------------

::: js/xpconnect/src/XPCJSRuntime.cpp
@@ +728,5 @@
> +        return;
> +
> +    // The GC has detected that a CC at this point would collect a tremendous
> +    // amount of garbage that is being revivified unnecessarily.
> +    nsCycleCollector_collect(nullptr);

This still needs to be nsJSEnvironment::CycleCollectNow(). Otherwise this looks fine to me. Thanks.
Attachment #8783644 - Flags: review?(continuation) → review+
Seems that XPConnect doesn't know about nsJSEnvironment?

/home/terrence/moz/branch/t/js/xpconnect/src/XPCJSRuntime.cpp:732:5: error: ‘nsJSEnvironment’ has not been declared
Flags: needinfo?(continuation)
(In reply to Terrence Cole [:terrence] from comment #7)
> Seems that XPConnect doesn't know about nsJSEnvironment?

Oh, sorry, it is supposed to be nsJSContext::CycleCollectNow(). The header file is nsJSEnvironment.h.
Flags: needinfo?(continuation)
https://hg.mozilla.org/integration/mozilla-inbound/rev/bba47d5c258339a23c921456aec5ba4d07b7f097
Bug 1296484 - Automatically CycleCollect if COMPARTMENT_REVIVED GC ends mostly gray; r=mccr8,r=jonco
This is going to get backed out as soon as the trees are open enough to do so. The crash stack is the most amazing thing ever:

https://treeherder.mozilla.org/logviewer.html#?job_id=34533350&repo=mozilla-inbound#L6354

16:29:04     INFO -  Assertion failure: isNurseryAllocAllowed(), at /builds/slave/m-in-m64-d-0000000000000000000/build/src/js/src/gc/Allocator.cpp:79
16:29:04     INFO -  TEST-INFO | Main app process: exit 1
16:29:04  WARNING -  TEST-UNEXPECTED-FAIL | ShutdownLeaks | process() called before end of test suite
16:29:04     INFO -  179 INFO checking window state
16:29:04     INFO -  180 INFO Initializing a debugger panel.
16:29:04     INFO -  181 INFO Adding tab: about:blank
16:29:04     INFO -  182 INFO Loading frame script with url chrome://mochitests/content/browser/devtools/client/debugger/test/mochitest/code_frame-script.js.
16:29:04     INFO -  183 INFO Tab added and finished loading: about:blank
16:29:04     INFO -  184 INFO Debugee tab added successfully: http://example.com/browser/devtools/client/debugger/test/mochitest/doc_recursion-stack.html
16:29:04     INFO -  185 INFO Console message: [JavaScript Warning: "Expected declaration but found ‘*’.  Skipped to next declaration." {file: "chrome://devtools/content/sourceeditor/codemirror/lib/codemirror.css" line: 210 column: 2 source: "  *zoom:1;"}]
16:29:04     INFO -  186 INFO Console message: [JavaScript Warning: "Expected declaration but found ‘*’.  Skipped to next declaration." {file: "chrome://devtools/content/sourceeditor/codemirror/lib/codemirror.css" line: 211 column: 2 source: "  *display:inline;"}]
16:29:04     INFO -  187 INFO Console message: [JavaScript Warning: "Unknown property ‘user-select’.  Declaration dropped." {file: "chrome://devtools/content/sourceeditor/codemirror/lib/codemirror.css" line: 232 column: 13 source: "  user-select: none;"}]
16:29:04     INFO -  188 INFO Console message: [JavaScript Warning: "Unknown property ‘-moz-border-radius’.  Declaration dropped." {file: "chrome://devtools/content/sourceeditor/codemirror/lib/codemirror.css" line: 241 column: 20 source: "  -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0;"}]
16:29:04     INFO -  189 INFO Console message: [JavaScript Warning: "Unknown pseudo-class or pseudo-element ‘selection’.  Ruleset ignored due to bad selector." {file: "chrome://devtools/content/sourceeditor/codemirror/lib/codemirror.css" line: 322 column: 18 source: ".CodeMirror-line::selection, .CodeMirror-line > span::selection, .CodeMirror-line > span > span::selection { background: #d7d4f0; }"}]
16:29:04     INFO -  190 INFO Console message: [JavaScript Warning: "Expected declaration but found ‘*’.  Skipped to next declaration." {file: "chrome://devtools/content/sourceeditor/codemirror/lib/codemirror.css" line: 331 column: 19 source: ".CodeMirror span { *vertical-align: text-bottom; }"}]
16:29:04     INFO -  191 INFO Console message: [JavaScript Warning: "Property contained reference to invalid variable.  Error in parsing value for ‘background-attachment’.  Falling back to ‘initial’." {file: "chrome://devtools/skin/light-theme.css" line: 16 column: 385 source: " var(--theme-body-background)"}]
16:29:04     INFO -  192 INFO Console message: [JavaScript Warning: "Property contained reference to invalid variable.  Error in parsing value for ‘background-clip’.  Falling back to ‘initial’." {file: "chrome://devtools/skin/light-theme.css" line: 16 column: 385 source: " var(--theme-body-background)"}]
16:29:04     INFO -  193 INFO Console message: [JavaScript Warning: "Property contained reference to invalid variable.  Error in parsing value for ‘background-color’.  Falling back to ‘initial’." {file: "chrome://devtools/skin/light-theme.css" line: 16 column: 385 source: " var(--theme-body-background)"}]
16:29:04     INFO -  194 INFO Console message: [JavaScript Warning: "Property contained reference to invalid variable.  Error in parsing value for ‘background-image’.  Falling back to ‘initial’." {file: "chrome://devtools/skin/light-theme.css" line: 16 column: 385 source: " var(--theme-body-background)"}]
16:29:04     INFO -  195 INFO Console message: [JavaScript Warning: "Property contained reference to invalid variable.  Error in parsing value for ‘background-origin’.  Falling back to ‘initial’." {file: "chrome://devtools/skin/light-theme.css" line: 16 column: 385 source: " var(--theme-body-background)"}]
16:29:04     INFO -  196 INFO Console message: [JavaScript Warning: "Property contained reference to invalid variable.  Error in parsing value for ‘background-position-x’.  Falling back to ‘initial’." {file: "chrome://devtools/skin/light-theme.css" line: 16 column: 385 source: " var(--theme-body-background)"}]
16:29:04     INFO -  197 INFO Console message: [JavaScript Warning: "Property contained reference to invalid variable.  Error in parsing value for ‘background-position-y’.  Falling back to ‘initial’." {file: "chrome://devtools/skin/light-theme.css" line: 16 column: 385 source: " var(--theme-body-background)"}]
16:29:04     INFO -  198 INFO Console message: [JavaScript Warning: "Property contained reference to invalid variable.  Error in parsing value for ‘background-repeat’.  Falling back to ‘initial’." {file: "chrome://devtools/skin/light-theme.css" line: 16 column: 385 source: " var(--theme-body-background)"}]
16:29:04     INFO -  199 INFO Console message: [JavaScript Warning: "Property contained reference to invalid variable.  Error in parsing value for ‘background-size’.  Falling back to ‘initial’." {file: "chrome://devtools/skin/light-theme.css" line: 16 column: 385 source: " var(--theme-body-background)"}]
16:29:04     INFO -  200 INFO Console message: [JavaScript Warning: "Property contained reference to invalid variable.  Error in parsing value for ‘background-attachment’.  Falling back to ‘initial’." {file: "chrome://devtools/skin/light-theme.css" line: 16 column: 385 source: " var(--theme-body-background)"}]
16:29:04     INFO -  201 INFO Console message: [JavaScript Warning: "Property contained reference to invalid variable.  Error in parsing value for ‘background-clip’.  Falling back to ‘initial’." {file: "chrome://devtools/skin/light-theme.css" line: 16 column: 385 source: " var(--theme-body-background)"}]
16:29:04     INFO -  202 INFO Console message: [JavaScript Warning: "Property contained reference to invalid variable.  Error in parsing value for ‘background-color’.  Falling back to ‘initial’." {file: "chrome://devtools/skin/light-theme.css" line: 16 column: 385 source: " var(--theme-body-background)"}]
16:29:04     INFO -  203 INFO Console message: [JavaScript Warning: "Property contained reference to invalid variable.  Error in parsing value for ‘background-image’.  Falling back to ‘initial’." {file: "chrome://devtools/skin/light-theme.css" line: 16 column: 385 source: " var(--theme-body-background)"}]
16:29:04     INFO -  204 INFO Console message: [JavaScript Warning: "Property contained reference to invalid variable.  Error in parsing value for ‘background-origin’.  Falling back to ‘initial’." {file: "chrome://devtools/skin/light-theme.css" line: 16 column: 385 source: " var(--theme-body-background)"}]
16:29:04     INFO -  205 INFO Console message: [JavaScript Warning: "Property contained reference to invalid variable.  Error in parsing value for ‘background-position-x’.  Falling back to ‘initial’." {file: "chrome://devtools/skin/light-theme.css" line: 16 column: 385 source: " var(--theme-body-background)"}]
16:29:04     INFO -  206 INFO Console message: [JavaScript Warning: "Property contained reference to invalid variable.  Error in parsing value for ‘background-position-y’.  Falling back to ‘initial’." {file: "chrome://devtools/skin/light-theme.css" line: 16 column: 385 source: " var(--theme-body-background)"}]
16:29:04     INFO -  207 INFO Console message: [JavaScript Warning: "Property contained reference to invalid variable.  Error in parsing value for ‘background-repeat’.  Falling back to ‘initial’." {file: "chrome://devtools/skin/light-theme.css" line: 16 column: 385 source: " var(--theme-body-background)"}]
16:29:04     INFO -  208 INFO Console message: [JavaScript Warning: "Property contained reference to invalid variable.  Error in parsing value for ‘background-size’.  Falling back to ‘initial’." {file: "chrome://devtools/skin/light-theme.css" line: 16 column: 385 source: " var(--theme-body-background)"}]
16:29:04     INFO -  209 INFO Console message: [JavaScript Warning: "Property contained reference to invalid variable.  Error in parsing value for ‘border-right-color’.  Falling back to ‘initial’." {file: "chrome://devtools/skin/light-theme.css" line: 252 column: 5966 source: " var(--theme-splitter-color)"}]
16:29:04     INFO -  210 INFO Console message: [JavaScript Warning: "Property contained reference to invalid variable.  Error in parsing value for ‘background-color’.  Falling back to ‘initial’." {file: "chrome://devtools/skin/light-theme.css" line: 253 column: 6017 source: " var(--theme-sidebar-background)"}]
16:29:04     INFO -  211 INFO Console message: [JavaScript Warning: "Property contained reference to invalid variable.  Error in parsing value for ‘border-right-color’.  Falling back to ‘initial’." {file: "chrome://devtools/skin/light-theme.css" line: 252 column: 5966 source: " var(--theme-splitter-color)"}]
16:29:04     INFO -  212 INFO Console message: [JavaScript Warning: "Property contained reference to invalid variable.  Error in parsing value for ‘background-color’.  Falling back to ‘initial’." {file: "chrome://devtools/skin/light-theme.css" line: 253 column: 6017 source: " var(--theme-sidebar-background)"}]
16:29:04     INFO -  213 INFO Console message: [JavaScript Warning: "Property contained reference to invalid variable.  Error in parsing value for ‘border-right-color’.  Falling back to ‘initial’." {file: "chrome://devtools/skin/light-theme.css" line: 252 column: 5966 source: " var(--theme-splitter-color)"}]
16:29:04     INFO -  214 INFO Console message: [JavaScript Warning: "Property contained reference to invalid variable.  Error in parsing value for ‘background-color’.  Falling back to ‘initial’." {file: "chrome://devtools/skin/light-theme.css" line: 253 column: 6017 source: " var(--theme-sidebar-background)"}]
16:29:04  WARNING -  TEST-UNEXPECTED-FAIL | devtools/client/debugger/test/mochitest/browser_dbg_location-changes-01-simple.js | application terminated with exit code 1
16:29:04     INFO -  runtests.py | Application ran for: 0:10:06.931835
16:29:04     INFO -  zombiecheck | Reading PID log: /var/folders/sw/s26whz2n6pbfv14p7p8hkdxw00000w/T/tmpCTFD6tpidlog
16:29:04     INFO -  mozcrash Copy/paste: /builds/slave/test/build/macosx64-minidump_stackwalk /var/folders/sw/s26whz2n6pbfv14p7p8hkdxw00000w/T/tmp06vCzR.mozrunner/minidumps/01E914E3-ECDF-4925-AC16-B98895F3C27D.dmp /builds/slave/test/build/symbols
16:29:17     INFO -  mozcrash Saved minidump as /builds/slave/test/build/blobber_upload_dir/01E914E3-ECDF-4925-AC16-B98895F3C27D.dmp
16:29:17     INFO -  mozcrash Saved app info as /builds/slave/test/build/blobber_upload_dir/01E914E3-ECDF-4925-AC16-B98895F3C27D.extra
16:29:17  WARNING -  PROCESS-CRASH | devtools/client/debugger/test/mochitest/browser_dbg_location-changes-01-simple.js | application crashed [@ JSObject* js::gc::GCRuntime::tryNewNurseryObject<(js::AllowGC)1>(JSContext*, unsigned long, unsigned long, js::Class const*)]
16:29:17     INFO -  Crash dump filename: /var/folders/sw/s26whz2n6pbfv14p7p8hkdxw00000w/T/tmp06vCzR.mozrunner/minidumps/01E914E3-ECDF-4925-AC16-B98895F3C27D.dmp
16:29:17     INFO -  Operating system: Mac OS X
16:29:17     INFO -                    10.10.5 14F27
16:29:17     INFO -  CPU: amd64
16:29:17     INFO -       family 6 model 69 stepping 1
16:29:17     INFO -       4 CPUs
16:29:17     INFO -  Crash reason:  EXC_BAD_ACCESS / KERN_INVALID_ADDRESS
16:29:17     INFO -  Crash address: 0x0
16:29:17     INFO -  Process uptime: 607 seconds
16:29:17     INFO -  Thread 0 (crashed)
16:29:17     INFO -   0  XUL!JSObject* js::gc::GCRuntime::tryNewNurseryObject<(js::AllowGC)1>(JSContext*, unsigned long, unsigned long, js::Class const*) [Allocator.cpp:02765e63d907 : 79 + 0x0]
16:29:17     INFO -      rax = 0x0000000000000000   rdx = 0x00007fff7a6171f8
16:29:17     INFO -      rcx = 0x0000000000000000   rbx = 0x00007fff7a617c50
16:29:17     INFO -      rsi = 0x000e5a00000e5a00   rdi = 0x000e5900000e5a03
16:29:17     INFO -      rbp = 0x00007fff5df640d0   rsp = 0x00007fff5df640a0
16:29:17     INFO -       r8 = 0x00007fff5df64050    r9 = 0x00007fff7a3a6300
16:29:17     INFO -      r10 = 0x0000000000000001   r11 = 0x0000000000000202
16:29:17     INFO -      r12 = 0x0000000000000060   r13 = 0x000000011106f498
16:29:17     INFO -      r14 = 0x0000000000000009   r15 = 0x0000000000000000
16:29:17     INFO -      rip = 0x000000010716937c
16:29:17     INFO -      Found by: given as instruction pointer in context
16:29:17     INFO -   1  XUL!JSObject* js::Allocate<JSObject, (js::AllowGC)1>(js::ExclusiveContext*, js::gc::AllocKind, unsigned long, js::gc::InitialHeap, js::Class const*) [Allocator.cpp:02765e63d907 : 51 + 0x15]
16:29:17     INFO -      rbx = 0x000000011106f498   rbp = 0x00007fff5df64120
16:29:17     INFO -      rsp = 0x00007fff5df640e0   r12 = 0x000000011106f000
16:29:17     INFO -      r13 = 0x00000001089ece70   r14 = 0x0000000000000009
16:29:17     INFO -      r15 = 0x0000000000000000   rip = 0x0000000107168fbc
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -   2  XUL!JSObject::create(js::ExclusiveContext*, js::gc::AllocKind, js::gc::InitialHeap, JS::Handle<js::Shape*>, JS::Handle<js::ObjectGroup*>) [jsobjinlines.h:02765e63d907 : 360 + 0xe]
16:29:17     INFO -      rbx = 0x000000011106f000   rbp = 0x00007fff5df64170
16:29:17     INFO -      rsp = 0x00007fff5df64130   r12 = 0x000000011106f000
16:29:17     INFO -      r13 = 0x0000000000000000   r14 = 0x0000000000000009
16:29:17     INFO -      r15 = 0x00000001089ece70   rip = 0x0000000106d29233
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -   3  XUL!NewObject [jsobj.cpp:02765e63d907 : 671 + 0xe]
16:29:17     INFO -      rbx = 0x00000001089ece70   rbp = 0x00007fff5df641e0
16:29:17     INFO -      rsp = 0x00007fff5df64180   r12 = 0x0000000000000009
16:29:17     INFO -      r13 = 0x000000011106f000   r14 = 0x00007fff5df641a0
16:29:17     INFO -      r15 = 0x00007fff5df64230   rip = 0x0000000106d03156
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -   4  XUL!js::NewObjectWithGivenTaggedProto(js::ExclusiveContext*, js::Class const*, JS::Handle<js::TaggedProto>, js::gc::AllocKind, js::NewObjectKind, unsigned int) [jsobj.cpp:02765e63d907 : 731 + 0xf]
16:29:17     INFO -      rbx = 0x0000000000000000   rbp = 0x00007fff5df64260
16:29:17     INFO -      rsp = 0x00007fff5df641f0   r12 = 0x000000011106f000
16:29:17     INFO -      r13 = 0x00007fff5df642a0   r14 = 0x00000001089ece70
16:29:17     INFO -      r15 = 0x0000000000000009   rip = 0x0000000106d0299a
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -   5  XUL!NewDateObject [jsobjinlines.h:02765e63d907 : 709 + 0x1d]
16:29:17     INFO -      rbx = 0x000000011106f000   rbp = 0x00007fff5df642d0
16:29:17     INFO -      rsp = 0x00007fff5df64270   r12 = 0x00007fff5df642a0
16:29:17     INFO -      r13 = 0x00007fff5df64290   r14 = 0x00007fff5df64308
16:29:17     INFO -      r15 = 0x0000000000000000   rip = 0x0000000106cc3c7d
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -   6  XUL!js::DateConstructor(JSContext*, unsigned int, JS::Value*) [jsdate.cpp:02765e63d907 : 3095 + 0x10]
16:29:17     INFO -      rbx = 0xffff800000000000   rbp = 0x00007fff5df643a0
16:29:17     INFO -      rsp = 0x00007fff5df642e0   r12 = 0x0000000111a26210
16:29:17     INFO -      r13 = 0x000000011106f000   r14 = 0xfffa000000000000
16:29:17     INFO -      r15 = 0x0000000111a26200   rip = 0x0000000106c7cdcd
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -   7  XUL!js::CallJSNative(JSContext*, bool (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&) [jscntxtinlines.h:02765e63d907 : 235 + 0x6]
16:29:17     INFO -      rbx = 0x0000000111a26218   rbp = 0x00007fff5df643f0
16:29:17     INFO -      rsp = 0x00007fff5df643b0   r12 = 0x00007fff5df64670
16:29:17     INFO -      r13 = 0x00007fff5df643c0   r14 = 0x000000011106f000
16:29:17     INFO -      r15 = 0x0000000106c7c8f0   rip = 0x0000000106ea802e
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -   8  XUL!js::CallJSNativeConstructor(JSContext*, bool (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&) [jscntxtinlines.h:02765e63d907 : 268 + 0xe]
16:29:17     INFO -      rbx = 0x000000011106f000   rbp = 0x00007fff5df64440
16:29:17     INFO -      rsp = 0x00007fff5df64400   r12 = 0x00007fff5df64670
16:29:17     INFO -      r13 = 0x00007fff5df64400   r14 = 0x000000011106f000
16:29:17     INFO -      r15 = 0x0000000106c7c8f0   rip = 0x0000000106ede00b
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -   9  XUL!InternalConstruct [Interpreter.cpp:02765e63d907 : 544 + 0xb]
16:29:17     INFO -      rbx = 0x00007fff5df64670   rbp = 0x00007fff5df64490
16:29:17     INFO -      rsp = 0x00007fff5df64450   r12 = 0xfffdffffffffffff
16:29:17     INFO -      r13 = 0x00007fff5df64450   r14 = 0x000000011106f000
16:29:17     INFO -      r15 = 0xfffe7fffffffffff   rip = 0x0000000106ea8964
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  10  XUL!js::ConstructFromStack(JSContext*, JS::CallArgs const&) [Interpreter.cpp:02765e63d907 : 582 + 0xb]
16:29:17     INFO -      rbx = 0x00007fff5df64670   rbp = 0x00007fff5df644b0
16:29:17     INFO -      rsp = 0x00007fff5df644a0   r12 = 0x0000000000000000
16:29:17     INFO -      r13 = 0x000000011106f000   r14 = 0x000000011106f000
16:29:17     INFO -      r15 = 0x0000000000000001   rip = 0x0000000106ea8501
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  11  XUL!Interpret [Interpreter.cpp:02765e63d907 : 2873 + 0x8]
16:29:17     INFO -      rbx = 0x000000011106f000   rbp = 0x00007fff5df649e0
16:29:17     INFO -      rsp = 0x00007fff5df644c0   r12 = 0x0000000000000000
16:29:17     INFO -      r13 = 0x000000011106f000   r14 = 0x00007fff5df648a0
16:29:17     INFO -      r15 = 0x0000000000000001   rip = 0x0000000106ea01d7
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  12  XUL!js::RunScript(JSContext*, js::RunState&) [Interpreter.cpp:02765e63d907 : 399 + 0xb]
16:29:17     INFO -      rbx = 0x000000011106f000   rbp = 0x00007fff5df64aa0
16:29:17     INFO -      rsp = 0x00007fff5df649f0   r12 = 0xfffdffffffffffff
16:29:17     INFO -      r13 = 0x00007fff5df64b90   r14 = 0x00007fff5df64ad0
16:29:17     INFO -      r15 = 0x00000001164d9280   rip = 0x0000000106e9747a
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  13  XUL!js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct) [Interpreter.cpp:02765e63d907 : 471 + 0x8]
16:29:17     INFO -      rbx = 0x0000000000000004   rbp = 0x00007fff5df64b30
16:29:17     INFO -      rsp = 0x00007fff5df64ab0   r12 = 0xfffdffffffffffff
16:29:17     INFO -      r13 = 0x00007fff5df64b90   r14 = 0x000000011106f000
16:29:17     INFO -      r15 = 0x0000000000000000   rip = 0x0000000106ea7b6d
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  14  XUL!<name omitted> [Interpreter.cpp:02765e63d907 : 517 + 0x8]
16:29:17     INFO -      rbx = 0x00007fff5df64b90   rbp = 0x00007fff5df64b50
16:29:17     INFO -      rsp = 0x00007fff5df64b40   r12 = 0x00007fff5df64b78
16:29:17     INFO -      r13 = 0x00007fff5df64e38   r14 = 0x00007fff5df64d90
16:29:17     INFO -      r15 = 0x000000011106f000   rip = 0x0000000106ea849e
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  15  XUL!JS_CallFunctionValue(JSContext*, JS::Handle<JSObject*>, JS::Handle<JS::Value>, JS::HandleValueArray const&, JS::MutableHandle<JS::Value>) [jsapi.cpp:02765e63d907 : 2780 + 0x12]
16:29:17     INFO -      rbx = 0x00007fff5df64ba8   rbp = 0x00007fff5df64c70
16:29:17     INFO -      rsp = 0x00007fff5df64b60   r12 = 0x00007fff5df64b78
16:29:17     INFO -      r13 = 0x00007fff5df64e38   r14 = 0x00007fff5df64ba8
16:29:17     INFO -      r15 = 0x000000011106f000   rip = 0x0000000106c3d8a6
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  16  XUL!nsXPCWrappedJSClass::CallMethod(nsXPCWrappedJS*, unsigned short, XPTMethodDescriptor const*, nsXPTCMiniVariant*) [XPCWrappedJSClass.cpp:02765e63d907 : 1211 + 0x5]
16:29:17     INFO -      rbx = 0x00007fff5df64d80   rbp = 0x00007fff5df650c0
16:29:17     INFO -      rsp = 0x00007fff5df64c80   r12 = 0x00007fff5df64e20
16:29:17     INFO -      r13 = 0x000000011198cc40   r14 = 0x0000000111144d58
16:29:17     INFO -      r15 = 0x000000011106f000   rip = 0x0000000102e512d7
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  17  XUL!PrepareAndDispatch [xptcstubs_x86_64_darwin.cpp:02765e63d907 : 122 + 0xc]
16:29:17     INFO -      rbx = 0x00007fff5df65110   rbp = 0x00007fff5df651c0
16:29:17     INFO -      rsp = 0x00007fff5df650d0   r12 = 0x000000011401bc40
16:29:17     INFO -      r13 = 0x0000000000000003   r14 = 0x0000000000000004
16:29:17     INFO -      r15 = 0x6800448422e3c062   rip = 0x000000010241a2f1
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  18  XUL!SharedStub + 0x5b
16:29:17     INFO -      rbx = 0x0000000000000000   rbp = 0x00007fff5df65240
16:29:17     INFO -      rsp = 0x00007fff5df651d0   r12 = 0x000000010b36b468
16:29:17     INFO -      r13 = 0x000000010739404b   r14 = 0x0000000000000000
16:29:17     INFO -      r15 = 0x0000000000000000   rip = 0x000000010241900b
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  19  XUL!nsObserverService::NotifyObservers(nsISupports*, char const*, char16_t const*) [nsObserverList.cpp:02765e63d907 : 112 + 0xf]
16:29:17     INFO -      rbp = 0x00007fff5df65280   rsp = 0x00007fff5df65250
16:29:17     INFO -      rip = 0x00000001023ac1af
16:29:17     INFO -      Found by: previous frame's frame pointer
16:29:17     INFO -  20  XUL!XPCJSRuntime::BeginCycleCollectionCallback() [XPCJSRuntime.cpp:02765e63d907 : 676 + 0x11]
16:29:17     INFO -      rbx = 0x000000010b3c3000   rbp = 0x00007fff5df652b0
16:29:17     INFO -      rsp = 0x00007fff5df65290   r12 = 0x0000000000000000
16:29:17     INFO -      r13 = 0x000000010b3c3000   r14 = 0x0000000000000001
16:29:17     INFO -      r15 = 0x0000000000000000   rip = 0x0000000102e19a4f
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  21  XUL!nsCycleCollector::BeginCollection(ccType, nsICycleCollectorListener*) [nsCycleCollector.cpp:02765e63d907 : 3804 + 0x6]
16:29:17     INFO -      rbx = 0x000000010b3c3000   rbp = 0x00007fff5df65300
16:29:17     INFO -      rsp = 0x00007fff5df652c0   r12 = 0x0000000000000000
16:29:17     INFO -      r13 = 0x000000010b3c3000   r14 = 0x0000000000000001
16:29:17     INFO -      r15 = 0x0000000000000000   rip = 0x0000000102374832
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  22  XUL!nsCycleCollector::Collect(ccType, js::SliceBudget&, nsICycleCollectorListener*, bool) [nsCycleCollector.cpp:02765e63d907 : 3662 + 0xf]
16:29:17     INFO -      rbx = 0x000000010b3c3000   rbp = 0x00007fff5df65380
16:29:17     INFO -      rsp = 0x00007fff5df65310   r12 = 0x00007fff5df65398
16:29:17     INFO -      r13 = 0x0000000000000001   r14 = 0x00000001023746ec
16:29:17     INFO -      r15 = 0x0000000000000000   rip = 0x00000001023743f1
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  23  XUL!nsCycleCollector_collect(nsICycleCollectorListener*) [nsCycleCollector.cpp:02765e63d907 : 4156 + 0x10]
16:29:17     INFO -      rbx = 0x0000000101fb6000   rbp = 0x00007fff5df653e0
16:29:17     INFO -      rsp = 0x00007fff5df65390   r12 = 0x00007fff5df65458
16:29:17     INFO -      r13 = 0x0000000000000001   r14 = 0x0000000000000000
16:29:17     INFO -      r15 = 0x0000000101ff7670   rip = 0x00000001023764c4
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  24  XUL!nsJSContext::CycleCollectNow(nsICycleCollectorListener*, int) [nsJSEnvironment.cpp:02765e63d907 : 1444 + 0x8]
16:29:17     INFO -      rbx = 0x0000000108ac5d08   rbp = 0x00007fff5df65420
16:29:17     INFO -      rsp = 0x00007fff5df653f0   r12 = 0x00007fff5df65458
16:29:17     INFO -      r13 = 0x0000000000000001   r14 = 0x0000000000000000
16:29:17     INFO -      r15 = 0x0000000000000000   rip = 0x00000001036d73f2
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  25  XUL!XPCJSRuntime::DoCycleCollectionCallback(JSContext*) [XPCJSRuntime.cpp:02765e63d907 : 732 + 0x9]
16:29:17     INFO -      rbx = 0x0000000101f5d800   rbp = 0x00007fff5df65440
16:29:17     INFO -      rsp = 0x00007fff5df65430   r12 = 0x00007fff5df65458
16:29:17     INFO -      r13 = 0x0000000000000001   r14 = 0x000000011106f000
16:29:17     INFO -      r15 = 0x00000000000000f4   rip = 0x0000000102e19d80
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  26  XUL!js::gc::GCRuntime::maybeDoCycleCollection() [jsgc.cpp:02765e63d907 : 1497 + 0x5]
16:29:17     INFO -      rbx = 0x000000011106f000   rbp = 0x00007fff5df654b0
16:29:17     INFO -      rsp = 0x00007fff5df65450   r12 = 0x00007fff5df65458
16:29:17     INFO -      r13 = 0x0000000000000001   r14 = 0x000000011106f498
16:29:17     INFO -      r15 = 0x00000000000000f4   rip = 0x0000000106cb66fd
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  27  XUL!js::gc::GCRuntime::collect(bool, js::SliceBudget, JS::gcreason::Reason) [jsgc.cpp:02765e63d907 : 6287 + 0x8]
16:29:17     INFO -      rbx = 0x0000000000000000   rbp = 0x00007fff5df65590
16:29:17     INFO -      rsp = 0x00007fff5df654c0   r12 = 0x00007fff5df654f8
16:29:17     INFO -      r13 = 0x0000000000000001   r14 = 0x000000011106f498
16:29:17     INFO -      r15 = 0x0000000000000008   rip = 0x0000000106cb6d99
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  28  XUL!js::gc::FinishGC(JSContext*) [jsgc.cpp:02765e63d907 : 6357 + 0x2c]
16:29:17     INFO -      rbx = 0x000000011106f000   rbp = 0x00007fff5df655f0
16:29:17     INFO -      rsp = 0x00007fff5df655a0   r12 = 0x000000011106f1e8
16:29:17     INFO -      r13 = 0x0000000124f67800   r14 = 0x00007fff5df656b8
16:29:17     INFO -      r15 = 0x00007fff5df65838   rip = 0x0000000106c9941e
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  29  XUL!<name omitted> [jsgc.cpp:02765e63d907 : 6553 + 0x8]
16:29:17     INFO -      rbx = 0x000000011106f000   rbp = 0x00007fff5df65610
16:29:17     INFO -      rsp = 0x00007fff5df65600   r12 = 0x000000011106f1e8
16:29:17     INFO -      r13 = 0x0000000124f67800   r14 = 0x00007fff5df656b8
16:29:17     INFO -      r15 = 0x00007fff5df65838   rip = 0x0000000106cb7c39
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  30  XUL!js::IterateScripts(JSContext*, JSCompartment*, void*, void (*)(JSRuntime*, void*, JSScript*)) [Iteration.cpp:02765e63d907 : 87 + 0xd]
16:29:17     INFO -      rbx = 0x000000011106f000   rbp = 0x00007fff5df65730
16:29:17     INFO -      rsp = 0x00007fff5df65620   r12 = 0x000000011106f1e8
16:29:17     INFO -      r13 = 0x0000000124f67800   r14 = 0x0000000106e49570
16:29:17     INFO -      r15 = 0x00007fff5df65838   rip = 0x00000001071758f1
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  31  XUL!js::Debugger::ScriptQuery::findScripts() [Debugger.cpp:02765e63d907 : 4187 + 0xf]
16:29:17     INFO -      rbx = 0x0000000000000000   rbp = 0x00007fff5df657f0
16:29:17     INFO -      rsp = 0x00007fff5df65740   r12 = 0x00007fff5df65838
16:29:17     INFO -      r13 = 0x00ffffffffffffff   r14 = 0x00007fff5df65be0
16:29:17     INFO -      r15 = 0x00000001136d2000   rip = 0x0000000106e10d49
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  32  XUL!js::Debugger::findScripts(JSContext*, unsigned int, JS::Value*) [Debugger.cpp:02765e63d907 : 4487 + 0x5]
16:29:17     INFO -      rbx = 0x0000000000000000   rbp = 0x00007fff5df65a70
16:29:17     INFO -      rsp = 0x00007fff5df65800   r12 = 0x000000011106f000
16:29:17     INFO -      r13 = 0x00007fff5df65bf0   r14 = 0x00007fff5df65be0
16:29:17     INFO -      r15 = 0x00000001136d2000   rip = 0x0000000106e100cc
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  33  XUL!js::CallJSNative(JSContext*, bool (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&) [jscntxtinlines.h:02765e63d907 : 235 + 0x6]
16:29:17     INFO -      rbx = 0x00007fff5df65bf0   rbp = 0x00007fff5df65ac0
16:29:17     INFO -      rsp = 0x00007fff5df65a80   r12 = 0x00007fff5df65b88
16:29:17     INFO -      r13 = 0x00007fff5df65a90   r14 = 0x000000011106f000
16:29:17     INFO -      r15 = 0x0000000106e0fec0   rip = 0x0000000106ea802e
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  34  XUL!js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct) [Interpreter.cpp:02765e63d907 : 441 + 0xe]
16:29:17     INFO -      rbx = 0x0000000000000001   rbp = 0x00007fff5df65b50
16:29:17     INFO -      rsp = 0x00007fff5df65ad0   r12 = 0xfffdffffffffffff
16:29:17     INFO -      r13 = 0x00007fff5df65b88   r14 = 0x000000011106f000
16:29:17     INFO -      r15 = 0x0000000000000000   rip = 0x0000000106ea7bd9
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  35  XUL!<name omitted> [Interpreter.cpp:02765e63d907 : 517 + 0x8]
16:29:17     INFO -      rbx = 0x00007fff5df65b88   rbp = 0x00007fff5df65b70
16:29:17     INFO -      rsp = 0x00007fff5df65b60   r12 = 0x000000011106f000
16:29:17     INFO -      r13 = 0x00007fff5df65c30   r14 = 0x0000000111a26130
16:29:17     INFO -      r15 = 0x00007fff5df65ba0   rip = 0x0000000106ea849e
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  36  XUL!js::Wrapper::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) const [Wrapper.cpp:02765e63d907 : 165 + 0x8]
16:29:17     INFO -      rbx = 0x00007fff5df65d80   rbp = 0x00007fff5df65c70
16:29:17     INFO -      rsp = 0x00007fff5df65b80   r12 = 0x000000011106f000
16:29:17     INFO -      r13 = 0x00007fff5df65c30   r14 = 0x00007fff5df65d88
16:29:17     INFO -      r15 = 0x00007fff5df65ba0   rip = 0x0000000106dd8b4f
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  37  XUL!js::CrossCompartmentWrapper::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) const [CrossCompartmentWrapper.cpp:02765e63d907 : 333 + 0x12]
16:29:17     INFO -      rbx = 0x000000011106f000   rbp = 0x00007fff5df65ce0
16:29:17     INFO -      rsp = 0x00007fff5df65c80   r12 = 0x0000000000000001
16:29:17     INFO -      r13 = 0x0000000000000000   r14 = 0x00007fff5df65d88
16:29:17     INFO -      r15 = 0x00007fff5df65d80   rip = 0x0000000106d844d5
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  38  XUL!js::Proxy::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) [Proxy.cpp:02765e63d907 : 401 + 0x13]
16:29:17     INFO -      rbx = 0x000000011106f000   rbp = 0x00007fff5df65d60
16:29:17     INFO -      rsp = 0x00007fff5df65cf0   r12 = 0x0000000108b0bc10
16:29:17     INFO -      r13 = 0x00000001089f0ee8   r14 = 0x00007fff5df65d88
16:29:17     INFO -      r15 = 0x00007fff5df65d80   rip = 0x0000000106d8a9ae
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  39  XUL!js::proxy_Call(JSContext*, unsigned int, JS::Value*) [Proxy.cpp:02765e63d907 : 690 + 0x8]
16:29:17     INFO -      rbx = 0x000000011106f000   rbp = 0x00007fff5df65db0
16:29:17     INFO -      rsp = 0x00007fff5df65d70   r12 = 0x00007fff5df66050
16:29:17     INFO -      r13 = 0x00007fff5df65dd0   r14 = 0x00007fff5df65d70
16:29:17     INFO -      r15 = 0x0000000106d8c2a0   rip = 0x0000000106d8c35b
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  40  XUL!js::CallJSNative(JSContext*, bool (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&) [jscntxtinlines.h:02765e63d907 : 235 + 0x6]
16:29:17     INFO -      rbx = 0x0000000111a26140   rbp = 0x00007fff5df65e00
16:29:17     INFO -      rsp = 0x00007fff5df65dc0   r12 = 0x00007fff5df66050
16:29:17     INFO -      r13 = 0x00007fff5df65dd0   r14 = 0x000000011106f000
16:29:17     INFO -      r15 = 0x0000000106d8c2a0   rip = 0x0000000106ea802e
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  41  XUL!js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct) [Interpreter.cpp:02765e63d907 : 441 + 0xe]
16:29:17     INFO -      rbx = 0x0000000000000001   rbp = 0x00007fff5df65e90
16:29:17     INFO -      rsp = 0x00007fff5df65e10   r12 = 0xfffdffffffffffff
16:29:17     INFO -      r13 = 0x00007fff5df66050   r14 = 0x000000011106f000
16:29:17     INFO -      r15 = 0x0000000000000000   rip = 0x0000000106ea7bd9
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  42  XUL!Interpret [Interpreter.cpp:02765e63d907 : 504 + 0x8]
16:29:17     INFO -      rbx = 0x0000000111a26130   rbp = 0x00007fff5df663c0
16:29:17     INFO -      rsp = 0x00007fff5df65ea0   r12 = 0x000000011106f000
16:29:17     INFO -      r13 = 0x000000011106f000   r14 = 0x00007fff5df66280
16:29:17     INFO -      r15 = 0x0000000000000000   rip = 0x0000000106ea0236
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  43  XUL!js::RunScript(JSContext*, js::RunState&) [Interpreter.cpp:02765e63d907 : 399 + 0xb]
16:29:17     INFO -      rbx = 0x000000011106f000   rbp = 0x00007fff5df66480
16:29:17     INFO -      rsp = 0x00007fff5df663d0   r12 = 0xfffdffffffffffff
16:29:17     INFO -      r13 = 0x00007fff5df665c8   r14 = 0x00007fff5df664b0
16:29:17     INFO -      r15 = 0x000000012c529040   rip = 0x0000000106e9747a
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  44  XUL!js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct) [Interpreter.cpp:02765e63d907 : 471 + 0x8]
16:29:17     INFO -      rbx = 0x0000000000000003   rbp = 0x00007fff5df66510
16:29:17     INFO -      rsp = 0x00007fff5df66490   r12 = 0xfffdffffffffffff
16:29:17     INFO -      r13 = 0x00007fff5df665c8   r14 = 0x000000011106f000
16:29:17     INFO -      r15 = 0x0000000000000000   rip = 0x0000000106ea7b6d
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  45  XUL!js::jit::DoCallFallback [BaselineIC.cpp:02765e63d907 : 5989 + 0x8]
16:29:17     INFO -      rbx = 0x000000011106f000   rbp = 0x00007fff5df667b0
16:29:17     INFO -      rsp = 0x00007fff5df66520   r12 = 0xffff800000000000
16:29:17     INFO -      r13 = 0x00007fff5df665b0   r14 = 0x000000000000003a
16:29:17     INFO -      r15 = 0x000000011109a5cb   rip = 0x0000000106874068
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  46  0x10b570471
16:29:17     INFO -      rbx = 0xfffe00012d111740   rbp = 0x00007fff5df66838
16:29:17     INFO -      rsp = 0x00007fff5df667c0   r12 = 0x0000000000000008
16:29:17     INFO -      r13 = 0x00007fff5df671d0   r14 = 0x000000012d111740
16:29:17     INFO -      r15 = 0x0000000000000001   rip = 0x000000010b570471
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  47  0x12b0721a8
16:29:17     INFO -      rbp = 0x00007fff5df668c8   rsp = 0x00007fff5df66848
16:29:17     INFO -      rip = 0x000000012b0721a8
16:29:17     INFO -      Found by: previous frame's frame pointer
16:29:17     INFO -  48  0x10b568e1d
16:29:17     INFO -      rbp = 0x00007fff5df66940   rsp = 0x00007fff5df668d8
16:29:17     INFO -      rip = 0x000000010b568e1d
16:29:17     INFO -      Found by: previous frame's frame pointer
16:29:17     INFO -  49  XUL!EnterBaseline [BaselineJIT.cpp:02765e63d907 : 155 + 0xc]
16:29:17     INFO -      rbp = 0x00007fff5df66c50   rsp = 0x00007fff5df66950
16:29:17     INFO -      rip = 0x00000001068a54b9
16:29:17     INFO -      Found by: previous frame's frame pointer
16:29:17     INFO -  50  XUL!js::jit::EnterBaselineMethod(JSContext*, js::RunState&) [BaselineJIT.cpp:02765e63d907 : 194 + 0x8]
16:29:17     INFO -      rbx = 0x000000011106f000   rbp = 0x00007fff5df66d70
16:29:17     INFO -      rsp = 0x00007fff5df66c60   r12 = 0x00007fff5df66c98
16:29:17     INFO -      r13 = 0x00007fff5df66f78   r14 = 0x00007fff5df66e60
16:29:17     INFO -      r15 = 0x0000000000000001   rip = 0x00000001068a512f
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  51  XUL!js::RunScript(JSContext*, js::RunState&) [Interpreter.cpp:02765e63d907 : 389 + 0xb]
16:29:17     INFO -      rbx = 0x000000011106f000   rbp = 0x00007fff5df66e30
16:29:17     INFO -      rsp = 0x00007fff5df66d80   r12 = 0xfffdffffffffffff
16:29:17     INFO -      r13 = 0x00007fff5df66f78   r14 = 0x00007fff5df66e60
16:29:17     INFO -      r15 = 0x0000000113b9e100   rip = 0x0000000106e97446
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  52  XUL!js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct) [Interpreter.cpp:02765e63d907 : 471 + 0x8]
16:29:17     INFO -      rbx = 0x0000000000000003   rbp = 0x00007fff5df66ec0
16:29:17     INFO -      rsp = 0x00007fff5df66e40   r12 = 0xfffdffffffffffff
16:29:17     INFO -      r13 = 0x00007fff5df66f78   r14 = 0x000000011106f000
16:29:17     INFO -      r15 = 0x0000000000000000   rip = 0x0000000106ea7b6d
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  53  XUL!js::jit::DoCallFallback [BaselineIC.cpp:02765e63d907 : 5989 + 0x8]
16:29:17     INFO -      rbx = 0x000000011106f000   rbp = 0x00007fff5df67160
16:29:17     INFO -      rsp = 0x00007fff5df66ed0   r12 = 0xffff800000000000
16:29:17     INFO -      r13 = 0x00007fff5df66f60   r14 = 0x000000000000003a
16:29:17     INFO -      r15 = 0x0000000126a59ab1   rip = 0x0000000106874068
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  54  0x10b570471
16:29:17     INFO -      rbx = 0xfffe000111700510   rbp = 0x00007fff5df671e8
16:29:17     INFO -      rsp = 0x00007fff5df67170   r12 = 0x0000000000000000
16:29:17     INFO -      r13 = 0x00007fff5df679b8   r14 = 0x0000000111700510
16:29:17     INFO -      r15 = 0x000000011181d3a0   rip = 0x000000010b570471
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  55  0x140df7250
16:29:17     INFO -      rbp = 0x00007fff5df67288   rsp = 0x00007fff5df671f8
16:29:17     INFO -      rip = 0x0000000140df7250
16:29:17     INFO -      Found by: previous frame's frame pointer
16:29:17     INFO -  56  0x108d40514
16:29:17     INFO -      rbp = 0x00007fff5df672c0   rsp = 0x00007fff5df67298
16:29:17     INFO -      rip = 0x0000000108d40514
16:29:17     INFO -      Found by: previous frame's frame pointer
16:29:17     INFO -  57  0x11366d4f0
16:29:17     INFO -      rbp = 0x00007fff5df67338   rsp = 0x00007fff5df672d0
16:29:17     INFO -      rip = 0x000000011366d4f0
16:29:17     INFO -      Found by: previous frame's frame pointer
16:29:17     INFO -  58  0x10b568e1d
16:29:17     INFO -      rbp = 0x00007fff5df673a0   rsp = 0x00007fff5df67348
16:29:17     INFO -      rip = 0x000000010b568e1d
16:29:17     INFO -      Found by: previous frame's frame pointer
16:29:17     INFO -  59  XUL!EnterBaseline [BaselineJIT.cpp:02765e63d907 : 155 + 0xc]
16:29:17     INFO -      rbp = 0x00007fff5df676b0   rsp = 0x00007fff5df673b0
16:29:17     INFO -      rip = 0x00000001068a54b9
16:29:17     INFO -      Found by: previous frame's frame pointer
16:29:17     INFO -  60  XUL!js::jit::EnterBaselineMethod(JSContext*, js::RunState&) [BaselineJIT.cpp:02765e63d907 : 194 + 0x8]
16:29:17     INFO -      rbx = 0x000000011106f000   rbp = 0x00007fff5df677d0
16:29:17     INFO -      rsp = 0x00007fff5df676c0   r12 = 0x00007fff5df676f8
16:29:17     INFO -      r13 = 0x00007fff5df67958   r14 = 0x00007fff5df678c0
16:29:17     INFO -      r15 = 0x0000000000000001   rip = 0x00000001068a512f
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  61  XUL!js::RunScript(JSContext*, js::RunState&) [Interpreter.cpp:02765e63d907 : 389 + 0xb]
16:29:17     INFO -      rbx = 0x000000011106f000   rbp = 0x00007fff5df67890
16:29:17     INFO -      rsp = 0x00007fff5df677e0   r12 = 0xfffdffffffffffff
16:29:17     INFO -      r13 = 0x00007fff5df67958   r14 = 0x00007fff5df678c0
16:29:17     INFO -      r15 = 0x000000012ba61d00   rip = 0x0000000106e97446
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  62  XUL!js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct) [Interpreter.cpp:02765e63d907 : 471 + 0x8]
16:29:17     INFO -      rbx = 0x0000000000000002   rbp = 0x00007fff5df67920
16:29:17     INFO -      rsp = 0x00007fff5df678a0   r12 = 0xfffdffffffffffff
16:29:17     INFO -      r13 = 0x00007fff5df67958   r14 = 0x000000011106f000
16:29:17     INFO -      r15 = 0x0000000000000000   rip = 0x0000000106ea7b6d
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  63  XUL!<name omitted> [Interpreter.cpp:02765e63d907 : 517 + 0x8]
16:29:17     INFO -      rbx = 0x00007fff5df67958   rbp = 0x00007fff5df67940
16:29:17     INFO -      rsp = 0x00007fff5df67930   r12 = 0x000000011106f000
16:29:17     INFO -      r13 = 0x00007fff5df67a00   r14 = 0x00007fff5df67d18
16:29:17     INFO -      r15 = 0x00007fff5df67970   rip = 0x0000000106ea849e
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  64  XUL!js::Wrapper::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) const [Wrapper.cpp:02765e63d907 : 165 + 0x8]
16:29:17     INFO -      rbx = 0x00007fff5df67b50   rbp = 0x00007fff5df67a40
16:29:17     INFO -      rsp = 0x00007fff5df67950   r12 = 0x000000011106f000
16:29:17     INFO -      r13 = 0x00007fff5df67a00   r14 = 0x00007fff5df67b58
16:29:17     INFO -      r15 = 0x00007fff5df67970   rip = 0x0000000106dd8b4f
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  65  XUL!js::CrossCompartmentWrapper::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) const [CrossCompartmentWrapper.cpp:02765e63d907 : 333 + 0x12]
16:29:17     INFO -      rbx = 0x000000011106f000   rbp = 0x00007fff5df67ab0
16:29:17     INFO -      rsp = 0x00007fff5df67a50   r12 = 0x0000000000000001
16:29:17     INFO -      r13 = 0x0000000000000001   r14 = 0x00007fff5df67b58
16:29:17     INFO -      r15 = 0x00007fff5df67b50   rip = 0x0000000106d844d5
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  66  XUL!js::Proxy::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) [Proxy.cpp:02765e63d907 : 401 + 0x13]
16:29:17     INFO -      rbx = 0x000000011106f000   rbp = 0x00007fff5df67b30
16:29:17     INFO -      rsp = 0x00007fff5df67ac0   r12 = 0x0000000108b0bc10
16:29:17     INFO -      r13 = 0x00000001089f0ee8   r14 = 0x00007fff5df67b58
16:29:17     INFO -      r15 = 0x00007fff5df67b50   rip = 0x0000000106d8a9ae
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  67  XUL!js::proxy_Call(JSContext*, unsigned int, JS::Value*) [Proxy.cpp:02765e63d907 : 690 + 0x8]
16:29:17     INFO -      rbx = 0x000000011106f000   rbp = 0x00007fff5df67b80
16:29:17     INFO -      rsp = 0x00007fff5df67b40   r12 = 0x00007fff5df67cc0
16:29:17     INFO -      r13 = 0x00007fff5df67ba0   r14 = 0x00007fff5df67b40
16:29:17     INFO -      r15 = 0x0000000106d8c2a0   rip = 0x0000000106d8c35b
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  68  XUL!js::CallJSNative(JSContext*, bool (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&) [jscntxtinlines.h:02765e63d907 : 235 + 0x6]
16:29:17     INFO -      rbx = 0x00007fff5df67d30   rbp = 0x00007fff5df67bd0
16:29:17     INFO -      rsp = 0x00007fff5df67b90   r12 = 0x00007fff5df67cc0
16:29:17     INFO -      r13 = 0x00007fff5df67ba0   r14 = 0x000000011106f000
16:29:17     INFO -      r15 = 0x0000000106d8c2a0   rip = 0x0000000106ea802e
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  69  XUL!js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct) [Interpreter.cpp:02765e63d907 : 441 + 0xe]
16:29:17     INFO -      rbx = 0x0000000000000002   rbp = 0x00007fff5df67c60
16:29:17     INFO -      rsp = 0x00007fff5df67be0   r12 = 0xfffdffffffffffff
16:29:17     INFO -      r13 = 0x00007fff5df67cc0   r14 = 0x000000011106f000
16:29:17     INFO -      r15 = 0x0000000000000000   rip = 0x0000000106ea7bd9
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  70  XUL!<name omitted> [Interpreter.cpp:02765e63d907 : 517 + 0x8]
16:29:17     INFO -      rbx = 0x00007fff5df67cc0   rbp = 0x00007fff5df67c80
16:29:17     INFO -      rsp = 0x00007fff5df67c70   r12 = 0x00007fff5df67ca8
16:29:17     INFO -      r13 = 0x00007fff5df67f98   r14 = 0x00007fff5df67f70
16:29:17     INFO -      r15 = 0x000000011106f000   rip = 0x0000000106ea849e
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  71  XUL!JS_CallFunctionValue(JSContext*, JS::Handle<JSObject*>, JS::Handle<JS::Value>, JS::HandleValueArray const&, JS::MutableHandle<JS::Value>) [jsapi.cpp:02765e63d907 : 2780 + 0x12]
16:29:17     INFO -      rbx = 0x00007fff5df67cd8   rbp = 0x00007fff5df67da0
16:29:17     INFO -      rsp = 0x00007fff5df67c90   r12 = 0x00007fff5df67ca8
16:29:17     INFO -      r13 = 0x00007fff5df67f98   r14 = 0x00007fff5df67cd8
16:29:17     INFO -      r15 = 0x000000011106f000   rip = 0x0000000106c3d8a6
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  72  XUL!nsFrameMessageManager::ReceiveMessage(nsISupports*, nsIFrameLoader*, bool, nsAString_internal const&, bool, mozilla::dom::ipc::StructuredCloneData*, mozilla::jsipc::CpowHolder*, nsIPrincipal*, nsTArray<mozilla::dom::ipc::StructuredCloneData>*) [nsFrameMessageManager.cpp:02765e63d907 : 1289 + 0x5]
16:29:17     INFO -      rbx = 0x00007fff5df67f58   rbp = 0x00007fff5df68200
16:29:17     INFO -      rsp = 0x00007fff5df67db0   r12 = 0x000000011106f000
16:29:17     INFO -      r13 = 0x0000000127cdeac0   r14 = 0x00007fff5df68008
16:29:17     INFO -      r15 = 0x0000000000000001   rip = 0x00000001034e1c83
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  73  XUL!nsSameProcessAsyncMessageBase::ReceiveMessage(nsISupports*, nsIFrameLoader*, nsFrameMessageManager*) [nsFrameMessageManager.cpp:02765e63d907 : 1096 + 0x32]
16:29:17     INFO -      rbx = 0x00000001380fd428   rbp = 0x00007fff5df68280
16:29:17     INFO -      rsp = 0x00007fff5df68210   r12 = 0x0000000117647530
16:29:17     INFO -      r13 = 0x00000001086cfc90   r14 = 0x0000000112d6bd40
16:29:17     INFO -      r15 = 0x0000000118d23e30   rip = 0x00000001034e68a5
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  74  XUL!nsAsyncMessageToChild::Run() [nsFrameLoader.cpp:02765e63d907 : 2784 + 0xb]
16:29:17     INFO -      rbx = 0x0000000118d23eb0   rbp = 0x00007fff5df682c0
16:29:17     INFO -      rsp = 0x00007fff5df68290   r12 = 0x0000000101f24200
16:29:17     INFO -      r13 = 0x0000000101f24250   r14 = 0x00000001380fd428
16:29:17     INFO -      r15 = 0x0000000118d23e30   rip = 0x00000001036ec502
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  75  XUL!nsThread::ProcessNextEvent(bool, bool*) [nsThread.cpp:02765e63d907 : 1058 + 0x6]
16:29:17     INFO -      rbx = 0x0000000000000000   rbp = 0x00007fff5df68370
16:29:17     INFO -      rsp = 0x00007fff5df682d0   r12 = 0x0000000101f24200
16:29:17     INFO -      r13 = 0x0000000101f24250   r14 = 0x0000000101f24200
16:29:17     INFO -      r15 = 0x0000000101f24220   rip = 0x0000000102405f31
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  76  XUL!NS_ProcessPendingEvents(nsIThread*, unsigned int) [nsThreadUtils.cpp:02765e63d907 : 232 + 0xf]
16:29:17     INFO -      rbx = 0x0000000000000000   rbp = 0x00007fff5df683b0
16:29:17     INFO -      rsp = 0x00007fff5df68380   r12 = 0x00007fff5df68387
16:29:17     INFO -      r13 = 0x0000000101f24200   r14 = 0x000000000000000a
16:29:17     INFO -      r15 = 0x000000000026e5ac   rip = 0x000000010244541f
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  77  XUL!nsBaseAppShell::NativeEventCallback() [nsBaseAppShell.cpp:02765e63d907 : 97 + 0xa]
16:29:17     INFO -      rbx = 0x0000000111c17ce0   rbp = 0x00007fff5df683e0
16:29:17     INFO -      rsp = 0x00007fff5df683c0   r12 = 0x0000000000000000
16:29:17     INFO -      r13 = 0x0000000000002403   r14 = 0x0000000101f24200
16:29:17     INFO -      r15 = 0x0000000111c17c00   rip = 0x0000000105154e31
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  78  XUL!nsAppShell::ProcessGeckoEvents(void*) [nsAppShell.mm:02765e63d907 : 386 + 0x8]
16:29:17     INFO -      rbx = 0x00007fa90bf02270   rbp = 0x00007fff5df68430
16:29:17     INFO -      rsp = 0x00007fff5df683f0   r12 = 0x00007fa90bf065c0
16:29:17     INFO -      r13 = 0x0000000000002403   r14 = 0x0000000101fb6000
16:29:17     INFO -      r15 = 0x0000000111c17ce0   rip = 0x00000001051bde51
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  79  CoreFoundation!__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 0x11
16:29:17     INFO -      rbx = 0x00007fa90bf02270   rbp = 0x00007fff5df68440
16:29:17     INFO -      rsp = 0x00007fff5df68440   r12 = 0x00007fa90bf065c0
16:29:17     INFO -      r13 = 0x0000000000002403   r14 = 0x00007fa90bf065d8
16:29:17     INFO -      r15 = 0x00007fa90bf02188   rip = 0x00007fff96cfea01
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  80  CoreFoundation!__CFRunLoopDoSources0 + 0x10d
16:29:17     INFO -      rbp = 0x00007fff5df684a0   rsp = 0x00007fff5df68450
16:29:17     INFO -      rip = 0x00007fff96cf0b8d
16:29:17     INFO -      Found by: previous frame's frame pointer
16:29:17     INFO -  81  CoreFoundation!__CFRunLoopRun + 0x39f
16:29:17     INFO -      rbp = 0x00007fff5df69180   rsp = 0x00007fff5df684b0
16:29:17     INFO -      rip = 0x00007fff96cf01bf
16:29:17     INFO -      Found by: previous frame's frame pointer
16:29:17     INFO -  82  CoreFoundation!CFRunLoopRunSpecific + 0x128
16:29:17     INFO -      rbp = 0x00007fff5df691e0   rsp = 0x00007fff5df69190
16:29:17     INFO -      rip = 0x00007fff96cefbd8
16:29:17     INFO -      Found by: previous frame's frame pointer
16:29:17     INFO -  83  HIToolbox!RunCurrentEventLoopInMode + 0xeb
16:29:17     INFO -      rbp = 0x00007fff5df69220   rsp = 0x00007fff5df691f0
16:29:17     INFO -      rip = 0x00007fff9168556f
16:29:17     INFO -      Found by: previous frame's frame pointer
16:29:17     INFO -  84  HIToolbox!ReceiveNextEventCommon + 0x1af
16:29:17     INFO -      rbp = 0x00007fff5df692a0   rsp = 0x00007fff5df69230
16:29:17     INFO -      rip = 0x00007fff916852ea
16:29:17     INFO -      Found by: previous frame's frame pointer
16:29:17     INFO -  85  HIToolbox!_BlockUntilNextEventMatchingListInModeWithFilter + 0x47
16:29:17     INFO -      rbp = 0x00007fff5df692c0   rsp = 0x00007fff5df692b0
16:29:17     INFO -      rip = 0x00007fff9168512b
16:29:17     INFO -      Found by: previous frame's frame pointer
16:29:17     INFO -  86  AppKit!_DPSNextEvent + 0x3d2
16:29:17     INFO -      rbp = 0x00007fff5df69730   rsp = 0x00007fff5df692d0
16:29:17     INFO -      rip = 0x00007fff8aa6c8ab
16:29:17     INFO -      Found by: previous frame's frame pointer
16:29:17     INFO -  87  AppKit!-[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 0x15a
16:29:17     INFO -      rbp = 0x00007fff5df699d0   rsp = 0x00007fff5df69740
16:29:17     INFO -      rip = 0x00007fff8aa6be58
16:29:17     INFO -      Found by: previous frame's frame pointer
16:29:17     INFO -  88  XUL!-[GeckoNSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] [nsAppShell.mm:02765e63d907 : 121 + 0x2c]
16:29:17     INFO -      rbp = 0x00007fff5df69a20   rsp = 0x00007fff5df699e0
16:29:17     INFO -      rip = 0x00000001051bd166
16:29:17     INFO -      Found by: previous frame's frame pointer
16:29:17     INFO -  89  AppKit!-[NSApplication run] + 0x252
16:29:17     INFO -      rbx = 0x0000000119725560   rbp = 0x00007fff5df69aa0
16:29:17     INFO -      rsp = 0x00007fff5df69a30   r12 = 0x0000000000000000
16:29:17     INFO -      r13 = 0x00000001191f5f40   r14 = 0x00000001191f5f40
16:29:17     INFO -      r15 = 0x00007fa90c00a101   rip = 0x00007fff8aa61af3
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  90  XUL!nsAppShell::Run() [nsAppShell.mm:02765e63d907 : 660 + 0x17]
16:29:17     INFO -      rbp = 0x00007fff5df69af0   rsp = 0x00007fff5df69ab0
16:29:17     INFO -      rip = 0x00000001051be545
16:29:17     INFO -      Found by: previous frame's frame pointer
16:29:17     INFO -  91  XUL!nsAppStartup::Run() [nsAppStartup.cpp:02765e63d907 : 284 + 0x6]
16:29:17     INFO -      rbx = 0x0000000111923600   rbp = 0x00007fff5df69b10
16:29:17     INFO -      rsp = 0x00007fff5df69b00   r14 = 0x00007fff5df69f99
16:29:17     INFO -      r15 = 0x000000010243f7a0   rip = 0x0000000105e184a1
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  92  XUL!XREMain::XRE_mainRun() [nsAppRunner.cpp:02765e63d907 : 4306 + 0x6]
16:29:17     INFO -      rbx = 0x000000011656b400   rbp = 0x00007fff5df69db0
16:29:17     INFO -      rsp = 0x00007fff5df69b20   r14 = 0x00007fff5df69f99
16:29:17     INFO -      r15 = 0x000000010243f7a0   rip = 0x0000000105ea66b8
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  93  XUL!XREMain::XRE_main(int, char**, nsXREAppData const*) [nsAppRunner.cpp:02765e63d907 : 4433 + 0x8]
16:29:17     INFO -      rbx = 0x0000000000000000   rbp = 0x00007fff5df69e20
16:29:17     INFO -      rsp = 0x00007fff5df69dc0   r12 = 0x0000000000000001
16:29:17     INFO -      r13 = 0x0000000000000005   r14 = 0x00007fff5df69e30
16:29:17     INFO -      r15 = 0x00007fff5df6a490   rip = 0x0000000105ea70e3
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  94  XUL!XRE_main [nsAppRunner.cpp:02765e63d907 : 4524 + 0x11]
16:29:17     INFO -      rbx = 0x00007fff5df69f58   rbp = 0x00007fff5df69fd0
16:29:17     INFO -      rsp = 0x00007fff5df69e30   r12 = 0x0000000000000005
16:29:17     INFO -      r13 = 0x00007fff5df69e30   r14 = 0x00007fff5df6a040
16:29:17     INFO -      r15 = 0x00007fff5df6a490   rip = 0x0000000105ea7609
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  95  firefox!main [nsBrowserApp.cpp:02765e63d907 : 259 + 0x16]
16:29:17     INFO -      rbx = 0x0000000101f13640   rbp = 0x00007fff5df6a470
16:29:17     INFO -      rsp = 0x00007fff5df69fe0   r12 = 0x00000001023c2ea0
16:29:17     INFO -      r13 = 0x0000000101f13340   r14 = 0x00007fff5df6a000
16:29:17     INFO -      r15 = 0x6800448422e3c062   rip = 0x0000000101c9718e
16:29:17     INFO -      Found by: call frame info
16:29:17     INFO -  96  firefox!start + 0x34
16:29:17     INFO -      rbx = 0x0000000000000000   rbp = 0x00007fff5df6a480
16:29:17     INFO -      rsp = 0x00007fff5df6a480   r12 = 0x0000000000000000
16:29:17     INFO -      r13 = 0x0000000000000000   r14 = 0x0000000000000000
16:29:17     INFO -      r15 = 0x0000000000000000   rip = 0x0000000101c969f4
16:29:17     INFO -      Found by: call frame info
The main message loop calls a JS function; this calls across a cross-compartment wrapper; the target of which enters baseline; which does another call; which enters a second baseline frame; which calls across a second cross-compartment wrapper; which calls Debugger::findScripts, at which point things go south rapidly.

With this already amazing stack, we js::IterateScripts, pushing an AutoEmptyNursery and then FinishGC. For some reason this triggers a COMPARTMENT_REVIVED GC, doesn't collect enough, so does a CC to collect gray. All still fine. The CycleCollector, in its infinite wisdom, uses NotifyObservers to tell everyone about the collection. This apparently allows JS scripts to listen to the cycle collector. Directly. So we call into JS with our AutoEmptyNursery still on the stack and immediately crash.

The worker runtimes always trigger CC from the JSGC_END callback, so I really expected it to work. I guess that it doesn't fire observer events there because it's a worker thread? I expect we'll need to do some way to tell the CC not to run script or some way to only run the CC if it's safe to run script.
Backout by philringnalda@gmail.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/d7bf236adf77
Back out changeset bba47d5c2583 for  isNurseryAllocAllowed() assertion failures in devtools tests
Ah, right, I forgot about that. Maybe the callback could post a runnable to the main thread that would run the CC, so we'd be back to the main event loop again.
That is indeed a fun one!

(In reply to Andrew McCreight [:mccr8] from comment #14)
> Ah, right, I forgot about that. Maybe the callback could post a runnable to
> the main thread that would run the CC, so we'd be back to the main event
> loop again.

I was going to suggest the same thing. That stack reminds me of when the Debugger#onGarbageCollection events were fired directly after GC instead of posted to the event loop... It didn't turn out well there either ;)
Updated to use a Runnable to start the CC. This appears to still work fine locally.
Attachment #8783644 - Attachment is obsolete: true
Attachment #8784479 - Flags: review?(continuation)
Comment on attachment 8784479 [details] [diff] [review]
CC_after_gray_GC-v2.diff

Review of attachment 8784479 [details] [diff] [review]:
-----------------------------------------------------------------

::: js/xpconnect/src/XPCJSRuntime.cpp
@@ +725,5 @@
> +XPCJSRuntime::DoCycleCollectionCallback(JSContext* cx)
> +{
> +    // The GC has detected that a CC at this point would collect a tremendous
> +    // amount of garbage that is being revivified unnecessarily.
> +    class DoCycleCollectionRunnable : public Runnable {

nit: { on next line I think.

@@ +729,5 @@
> +    class DoCycleCollectionRunnable : public Runnable {
> +      public:
> +        NS_IMETHOD Run() override
> +        {
> +            nsCycleCollector_collect(nullptr);

nsJSContext::CycleCollectNow() please.

@@ +733,5 @@
> +            nsCycleCollector_collect(nullptr);
> +            return NS_OK;
> +        }
> +    };
> +    NS_DispatchToMainThread(new DoCycleCollectionRunnable());

You could use the fancier lambda-based thing here instead of creating a new class, NS_NewRunnableFunction().
Attachment #8784479 - Flags: review?(continuation) → review+
Oh, neat! Now it's a one-liner.
https://hg.mozilla.org/integration/mozilla-inbound/rev/bbd6bdd463b1dd991c51b579c6c4d5a27945b2f8
Bug 1296484 - Automatically run a CC if COMPARTMENT_REVIVED GC ends mostly gray; r=jonco,r=mccr8
Terrence, maybe try NS_DispatchToCurrentThread instead of DispatchToMainThread? It looks like that doesn't leak on failure, which can happen late in shut down.
https://hg.mozilla.org/integration/mozilla-inbound/rev/c68fdbfcec39d5121222cfaf343bc4aed5efebb5
Bug 1296484 - Automatically run a CC if COMPARTMENT_REVIVED GC ends mostly gray; r=jonco,r=mccr8
(In reply to Andrew McCreight [:mccr8] from comment #23)
> Terrence, maybe try NS_DispatchToCurrentThread instead of
> DispatchToMainThread? It looks like that doesn't leak on failure, which can
> happen late in shut down.

Thanks for the tip!
Flags: needinfo?(terrence)
https://hg.mozilla.org/mozilla-central/rev/c68fdbfcec39
Status: ASSIGNED → RESOLVED
Closed: 3 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla51
Terrence said this was not actually needed for bug 1237058, so I'm removing the block.
No longer blocks: 1237058
No longer depends on: 1301301
You need to log in before you can comment on or make changes to this bug.