Closed Bug 914939 Opened 12 years ago Closed 12 years ago

Intermittent mochitest-a11y Exited with code -2147483645 during test run | application crashed [@ nsXPCWrappedJSClass::CallQueryInterfaceOnJSObject(JSContext *,JSObject *,nsID const &)] after "Assertion failure: JS_IsExceptionPending(cx)"

Categories

(Core :: XPConnect, defect)

defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla27
Tracking Status
firefox25 --- unaffected
firefox26 --- fixed
firefox27 --- fixed
firefox-esr24 --- unaffected

People

(Reporter: RyanVM, Assigned: bholley)

References

Details

(Keywords: assertion, crash, intermittent-failure)

Attachments

(1 file)

https://tbpl.mozilla.org/php/getParsedLog.php?id=27652409&tree=Fx-Team Windows XP 32-bit fx-team debug test mochitest-other on 2013-09-10 10:33:30 PDT for push 2ea8259f7e39 slave: t-xp32-ix-074 10:55:01 INFO - 1650 INFO TEST-START | chrome://mochitests/content/a11y/accessible/tests/mochitest/bounds/test_zoom_text.html 10:55:01 INFO - ++DOMWINDOW == 88 (13ACB9C8) [serial = 91] [outer = 0C47C3A0] 10:55:01 INFO - ++DOCSHELL 13D74AF0 == 16 [id = 16] 10:55:01 INFO - ++DOMWINDOW == 89 (138E79F8) [serial = 92] [outer = 00000000] 10:55:01 INFO - ++DOMWINDOW == 90 (138F9758) [serial = 93] [outer = 138E79F8] 10:55:01 INFO - WARNING: NS_ENSURE_TRUE(lastNodeWithCaret) failed: file e:/builds/moz2_slave/fx-team-w32-d-0000000000000000/build/accessible/src/base/SelectionManager.cpp, line 232 10:55:01 INFO - ++DOCSHELL 13E184B8 == 17 [id = 17] 10:55:01 INFO - ++DOMWINDOW == 91 (13E18D30) [serial = 94] [outer = 00000000] 10:55:01 INFO - ++DOCSHELL 13E1AF28 == 18 [id = 18] 10:55:01 INFO - ++DOMWINDOW == 92 (13E1B860) [serial = 95] [outer = 00000000] 10:55:01 INFO - ++DOCSHELL 13ED6D80 == 19 [id = 19] 10:55:01 INFO - ++DOMWINDOW == 93 (13ED7760) [serial = 96] [outer = 00000000] 10:55:01 INFO - ++DOMWINDOW == 94 (13E763E8) [serial = 97] [outer = 13ED7760] 10:55:01 INFO - WARNING: NS_ENSURE_TRUE(NS_SUCCEEDED(rv) && subjPrincipal) failed: file e:/builds/moz2_slave/fx-team-w32-d-0000000000000000/build/docshell/base/nsDocShell.cpp, line 8444 10:55:01 INFO - WARNING: Subdocument container has no frame: file e:/builds/moz2_slave/fx-team-w32-d-0000000000000000/build/layout/base/nsDocumentViewer.cpp, line 2339 10:55:01 INFO - ++DOMWINDOW == 95 (13F3B6E0) [serial = 98] [outer = 13E18D30] 10:55:01 INFO - WARNING: Subdocument container has no frame: file e:/builds/moz2_slave/fx-team-w32-d-0000000000000000/build/layout/base/nsDocumentViewer.cpp, line 2339 10:55:01 INFO - ++DOMWINDOW == 96 (13F659F0) [serial = 99] [outer = 13E1B860] 10:55:01 INFO - WARNING: NS_ENSURE_TRUE(hWnd) failed: file e:/builds/moz2_slave/fx-team-w32-d-0000000000000000/build/accessible/src/windows/msaa/AccessibleWrap.cpp, line 1646 10:55:01 INFO - WARNING: Unable to retrieve the tooltip node document.: file e:/builds/moz2_slave/fx-team-w32-d-0000000000000000/build/layout/xul/base/src/nsXULTooltipListener.cpp, line 563 10:55:01 INFO - WARNING: Subdocument container has no frame: file e:/builds/moz2_slave/fx-team-w32-d-0000000000000000/build/layout/base/nsDocumentViewer.cpp, line 2339 10:55:01 INFO - WARNING: Subdocument container has no frame: file e:/builds/moz2_slave/fx-team-w32-d-0000000000000000/build/layout/base/nsDocumentViewer.cpp, line 2339 10:55:01 INFO - ++DOMWINDOW == 97 (13F32DC8) [serial = 100] [outer = 13E1B860] 10:55:01 INFO - ++DOMWINDOW == 98 (13F80368) [serial = 101] [outer = 13ED7760] 10:55:01 INFO - WARNING: NS_ENSURE_TRUE(mMutable) failed: file e:/builds/moz2_slave/fx-team-w32-d-0000000000000000/build/netwerk/base/src/nsSimpleURI.cpp, line 266 10:55:02 INFO - Assertion failure: JS_IsExceptionPending(cx) (JS failed without setting an exception!), at e:/builds/moz2_slave/fx-team-w32-d-0000000000000000/build/js/xpconnect/src/XPCWrappedJSClass.cpp:258 10:55:02 INFO - nsStringStats 10:55:02 INFO - => mAllocCount: 96935 10:55:02 INFO - => mReallocCount: 8824 10:55:02 INFO - => mFreeCount: 63687 -- LEAKED 33248 !!! 10:55:02 INFO - => mShareCount: 159650 10:55:02 INFO - => mAdoptCount: 7634 10:55:02 INFO - => mAdoptFreeCount: 7631 -- LEAKED 3 !!! 10:55:02 WARNING - TEST-UNEXPECTED-FAIL | chrome://mochitests/content/a11y/accessible/tests/mochitest/bounds/test_zoom_text.html | Exited with code -2147483645 during test run 10:55:02 INFO - INFO | automation.py | Application ran for: 0:00:24.935000 10:55:02 INFO - INFO | zombiecheck | Reading PID log: c:\docume~1\cltbld~1.t-x\locals~1\temp\tmptuvvtbpidlog 10:55:09 WARNING - PROCESS-CRASH | chrome://mochitests/content/a11y/accessible/tests/mochitest/bounds/test_zoom_text.html | application crashed [@ nsXPCWrappedJSClass::CallQueryInterfaceOnJSObject(JSContext *,JSObject *,nsID const &)] 10:55:09 INFO - Crash dump filename: c:\docume~1\cltbld~1.t-x\locals~1\temp\tmppmmvgq\minidumps\fab6d0dd-82cf-44f8-95e4-adaedac9ed2a.dmp 10:55:09 INFO - Operating system: Windows NT 10:55:09 INFO - 5.1.2600 Service Pack 3 10:55:09 INFO - CPU: x86 10:55:09 INFO - GenuineIntel family 6 model 30 stepping 5 10:55:09 INFO - 8 CPUs 10:55:09 INFO - Crash reason: EXCEPTION_BREAKPOINT 10:55:09 INFO - Crash address: 0x2dbeedc 10:55:09 INFO - Thread 0 (crashed) 10:55:09 INFO - 0 xul.dll!nsXPCWrappedJSClass::CallQueryInterfaceOnJSObject(JSContext *,JSObject *,nsID const &) [XPCWrappedJSClass.cpp:2ea8259f7e39 : 258 + 0x23] 10:55:09 INFO - eip = 0x02dbeedc esp = 0x0012eafc ebp = 0x0012ebdc ebx = 0x00000000 10:55:09 INFO - esi = 0x138e7e38 edi = 0x00d78560 eax = 0x00000000 ecx = 0xfffd4f9f 10:55:09 INFO - edx = 0x10361f48 efl = 0x00000206 10:55:09 INFO - Found by: given as instruction pointer in context 10:55:09 INFO - 1 xul.dll!nsXPCWrappedJSClass::DelegatedQueryInterface(nsXPCWrappedJS *,nsID const &,void * *) [XPCWrappedJSClass.cpp:2ea8259f7e39 : 714 + 0x58] 10:55:09 INFO - eip = 0x02dbf85f esp = 0x0012ebe4 ebp = 0x0012ed48 10:55:09 INFO - Found by: call frame info 10:55:09 INFO - 2 xul.dll!nsXPCWrappedJS::AggregatedQueryInterface(nsID const &,void * *) [XPCWrappedJS.cpp:2ea8259f7e39 : 92 + 0x12] 10:55:09 INFO - eip = 0x02dbb820 esp = 0x0012ed50 ebp = 0x0012ed64 10:55:09 INFO - Found by: call frame info 10:55:09 INFO - 3 xul.dll!nsBindingManager::GetBindingImplementation(nsIContent *,nsID const &,void * *) [nsBindingManager.cpp:2ea8259f7e39 : 709 + 0x1c] 10:55:09 INFO - eip = 0x029bde47 esp = 0x0012ed6c ebp = 0x0012ede8 10:55:09 INFO - Found by: call frame info 10:55:09 INFO - 4 xul.dll!mozilla::dom::Element::QueryInterface(nsID const &,void * *) [Element.cpp:2ea8259f7e39 : 146 + 0x1c] 10:55:09 INFO - eip = 0x0271aa22 esp = 0x0012edf0 ebp = 0x0012ee00 10:55:09 INFO - Found by: call frame info 10:55:09 INFO - 5 xul.dll!nsXULElement::QueryInterface(nsID const &,void * *) [nsXULElement.cpp:2ea8259f7e39 : 350 + 0xe] 10:55:09 INFO - eip = 0x02cb264d esp = 0x0012ee08 ebp = 0x0012ee20 10:55:09 INFO - Found by: call frame info 10:55:09 INFO - 6 xul.dll!nsQueryInterface::operator()(nsID const &,void * *) [nsCOMPtr.cpp:2ea8259f7e39 : 14 + 0x8] 10:55:09 INFO - eip = 0x0361a59c esp = 0x0012ee28 ebp = 0x0012ee34 10:55:09 INFO - Found by: call frame info 10:55:09 INFO - 7 xul.dll!nsCOMPtr<nsIDOMXULSelectControlElement>::assign_from_qi(nsQueryInterface,nsID const &) [nsCOMPtr.h:2ea8259f7e39 : 1199 + 0x11] 10:55:09 INFO - eip = 0x02294b9c esp = 0x0012ee3c ebp = 0x0012ee44 10:55:09 INFO - Found by: call frame info 10:55:09 INFO - 8 xul.dll!mozilla::a11y::XULSelectControlAccessible::XULSelectControlAccessible(nsIContent *,mozilla::a11y::DocAccessible *) [XULSelectControlAccessible.cpp:2ea8259f7e39 : 35 + 0x5e] 10:55:09 INFO - eip = 0x022cbea3 esp = 0x0012ee4c ebp = 0x0012ee58 10:55:09 INFO - Found by: call frame info
Summary: Intermittent test_zoom_text.html | Exited with code -2147483645 during test run | application crashed [@ nsXPCWrappedJSClass::CallQueryInterfaceOnJSObject(JSContext *,JSObject *,nsID const &)] after "Assertion failure: JS_IsExceptionPending(cx)" → Intermittent mochitest-a11y Exited with code -2147483645 during test run | application crashed [@ nsXPCWrappedJSClass::CallQueryInterfaceOnJSObject(JSContext *,JSObject *,nsID const &)] after "Assertion failure: JS_IsExceptionPending(cx)"
https://tbpl.mozilla.org/php/getParsedLog.php?id=27882275&tree=Mozilla-Inbound Trev or Alexander, any idea what might be going on here? This appears to only affect mochitest-a11y.
Flags: needinfo?(trev.saunders)
Flags: needinfo?(surkov.alexander)
It doesn't seem like a11y problem since it crashes when we try to query DOM element so we need someobody from content/js to look at it. Looks like a11y just reveals a content problem.
Flags: needinfo?(surkov.alexander)
cc'ing Olli for ideas
This is really more bholley's area.
The assertion isn't technically valid, because JS _can_ fail without setting an exception. In general, it means we either OOMed or were killed by the slow script dialog. We should probably remove the assert, but if the QI hook is OOMing the test will probably just start failing in some other way. Alexander, is the a scripted QI implementation here that might be allocating tons of memory?
> We should probably remove the assert, but if the QI hook is OOMing the test > will probably just start failing in some other way. Alexander, is the a > scripted QI implementation here that might be allocating tons of memory? I don't think there is one here
Flags: needinfo?(trev.saunders)
Comment on attachment 806052 [details] [diff] [review] Don't assert against OOM in XPCWrappedJS QI hooks. v1 Review of attachment 806052 [details] [diff] [review]: ----------------------------------------------------------------- The JS function could have thrown undefined or null, which would also get us here, so I agree with the removal of the assertion. My problem is that if the JS function throws something then we report it, but if it throws accidentally undefined, we swallow the OOM and just do a warning instead. I find this a bit inconsistent, is there a way to report OOM instead?
Attachment #806052 - Flags: review?(gkrizsanits) → review-
Comment on attachment 806052 [details] [diff] [review] Don't assert against OOM in XPCWrappedJS QI hooks. v1 (In reply to Gabor Krizsanits [:krizsa :gabor] from comment #20) > The JS function could have thrown undefined or null, which would also get us > here, so I agree with the removal of the assertion. Huh? |throw undefined| will cause JS_IsPendingException to be true. The JS engine tracks |throwing| and |exception| as separate pieces of state. > My problem is that if the JS function throws something then we report it, > but if it throws accidentally undefined, we swallow the OOM and just do a > warning instead. As noted above, this isn't the case. > I find this a bit inconsistent, is there a way to report > OOM instead? The JS engine signals OOM by returning false without setting |throwing| to true. It doesn't get 'reported' per se.
Attachment #806052 - Flags: review- → review+
Comment on attachment 806052 [details] [diff] [review] Don't assert against OOM in XPCWrappedJS QI hooks. v1 err, I meant to reflag for review.
Attachment #806052 - Flags: review+ → review?(gkrizsanits)
Comment on attachment 806052 [details] [diff] [review] Don't assert against OOM in XPCWrappedJS QI hooks. v1 Review of attachment 806052 [details] [diff] [review]: ----------------------------------------------------------------- Ehh, sorry. I cannot imagine how can this test fail then. OOM is not very likely, cleared or not propagated exception from another context maybe?
Attachment #806052 - Flags: review?(gkrizsanits) → review+
(In reply to Gabor Krizsanits [:krizsa :gabor] from comment #26) > Comment on attachment 806052 [details] [diff] [review] > Don't assert against OOM in XPCWrappedJS QI hooks. v1 > > Review of attachment 806052 [details] [diff] [review]: > ----------------------------------------------------------------- > > Ehh, sorry. I cannot imagine how can this test fail then. OOM is not very > likely, cleared or not propagated exception from another context maybe? Yeah, probably something like that. This looks hard to track down though, so it's easier to just fix our incorrect API usage here and propagate the error here. Hopefully the test handles that and doesn't just end up going orange somewhere else. :-) https://hg.mozilla.org/integration/mozilla-inbound/rev/3e12fb5e831b
Thanks! (Drive-by nit: "QI hook ran OOMed" took me a bit to parse. I guess you don't need 'ed'.)
Status: NEW → RESOLVED
Closed: 12 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla27
Bobby, can you please request Aurora approval for this when you get a chance? Thanks :)
Assignee: nobody → bobbyholley+bmo
Comment on attachment 806052 [details] [diff] [review] Don't assert against OOM in XPCWrappedJS QI hooks. v1 [Approval Request Comment] Bug caused by (feature/regressing bug #): unknown User impact if declined: more intermittent oranges for sheriffs to star. Possible null deref crashes in the wild. Testing completed (on m-c, etc.): just landed on m-c. Risk to taking this patch (and alternatives if risky): Extremely low risk. String or IDL/UUID changes made by this patch: None
Attachment #806052 - Flags: approval-mozilla-aurora?
Attachment #806052 - Flags: approval-mozilla-aurora? → approval-mozilla-aurora+
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: