Closed
Bug 1188364
Opened 9 years ago
Closed 8 years ago
Intermittent test_Range-insertNode.html,test_Range-surroundContents.html | application crashed [@ nsWrapperCache::UpdateWrapper(JSObject*, JSObject const*)] (Assertion failure: mWrapper == aOldObject, at nsWrapperCache.h:143)
Categories
(Core :: DOM: Core & HTML, defect)
Tracking
()
RESOLVED
FIXED
mozilla47
People
(Reporter: RyanVM, Assigned: jonco)
References
Details
(Keywords: assertion, crash, intermittent-failure)
Attachments
(1 file)
10.31 KB,
patch
|
terrence
:
review+
|
Details | Diff | Splinter Review |
15:16:21 INFO - 879 INFO TEST-START | dom/imptests/html/dom/ranges/test_Range-insertNode.html 15:16:34 INFO - Assertion failure: mWrapper == aOldObject, at /builds/slave/fx-team-lx-d-00000000000000000/build/src/dom/base/nsWrapperCache.h:143 15:16:58 INFO - #01: nsWrapperCache::UpdateWrapper(JSObject*, JSObject const*) [dom/base/nsWrapperCache.h:143] 15:16:58 INFO - #02: mozilla::dom::HTMLHtmlElementBinding::_objectMoved [dom/bindings/BindingUtils.h:1290] 15:16:58 INFO - #03: RelocateCell [js/src/jsgc.cpp:2037] 15:16:58 INFO - #04: RelocateArena [js/src/jsgc.cpp:2068] 15:16:58 INFO - #05: js::gc::ArenaList::relocateArenas(js::gc::ArenaHeader*, js::gc::ArenaHeader*, js::SliceBudget&, js::gcstats::Statistics&) [js/src/jsgc.cpp:2102] 15:16:58 INFO - #06: js::gc::ArenaLists::relocateArenas(js::gc::ArenaHeader*&, JS::gcreason::Reason, js::SliceBudget&, js::gcstats::Statistics&) [js/src/jsgc.cpp:2175] 15:16:58 INFO - #07: js::gc::GCRuntime::relocateArenas(JS::Zone*, JS::gcreason::Reason, js::SliceBudget&) [js/src/jsgc.cpp:2200] 15:16:58 INFO - #08: js::gc::GCRuntime::compactPhase(JS::gcreason::Reason, js::SliceBudget&) [js/src/jsgc.cpp:5439] 15:16:58 INFO - #09: js::gc::GCRuntime::incrementalCollectSlice(js::SliceBudget&, JS::gcreason::Reason) [js/src/jsgc.cpp:5881] 15:16:58 INFO - #10: js::gc::GCRuntime::gcCycle(bool, js::SliceBudget&, JS::gcreason::Reason) [js/src/jsgc.cpp:6050] 15:16:58 INFO - #11: js::gc::GCRuntime::collect(bool, js::SliceBudget, JS::gcreason::Reason) [js/src/jsgc.cpp:6161] 15:16:58 INFO - #12: js::gc::GCRuntime::gcSlice(JS::gcreason::Reason, long long) [js/src/jsgc.cpp:6238] 15:16:58 INFO - #13: js::gc::GCRuntime::gcIfRequested(JSContext*) [js/src/jsgc.cpp:6468] 15:16:58 INFO - #14: js::gc::GCRuntime::gcIfNeededPerAllocation(JSContext*) [js/src/gc/Allocator.cpp:39] 15:16:58 INFO - #15: JSObject* js::Allocate<JSObject, (js::AllowGC)1>(js::ExclusiveContext*, js::gc::AllocKind, unsigned int, js::gc::InitialHeap, js::Class const*) [js/src/gc/Allocator.cpp:55] 15:16:58 INFO - #16: JSObject::create(js::ExclusiveContext*, js::gc::AllocKind, js::gc::InitialHeap, JS::Handle<js::Shape*>, JS::Handle<js::ObjectGroup*>) [js/src/jsobjinlines.h:315] 15:16:58 INFO - #17: NewObject [js/src/jsobj.cpp:686] 15:16:58 INFO - #18: js::NewObjectWithGivenTaggedProto(js::ExclusiveContext*, js::Class const*, JS::Handle<js::TaggedProto>, js::gc::AllocKind, js::NewObjectKind, unsigned int) [js/public/RootingAPI.h:648] 15:16:58 INFO - #19: js::ProxyObject::New(JSContext*, js::BaseProxyHandler const*, JS::Handle<JS::Value>, js::TaggedProto, js::ProxyOptions const&) [js/public/RootingAPI.h:649] 15:16:58 INFO - #20: js::NewProxyObject(JSContext*, js::BaseProxyHandler const*, JS::Handle<JS::Value>, JSObject*, js::ProxyOptions const&) [js/src/proxy/Proxy.cpp:743] 15:16:58 INFO - #21: js::Wrapper::New(JSContext*, JSObject*, js::Wrapper const*, js::WrapperOptions const&) [js/src/proxy/Wrapper.cpp:40] 15:16:58 INFO - #22: xpc::WrapperFactory::Rewrap(JSContext*, JS::Handle<JSObject*>, JS::Handle<JSObject*>) [js/src/jswrapper.h:22] 15:16:58 INFO - #23: JSCompartment::wrap(JSContext*, JS::MutableHandle<JSObject*>, JS::Handle<JSObject*>) [js/src/jscompartment.cpp:459] 15:16:58 INFO - #24: JS_WrapObject(JSContext*, JS::MutableHandle<JSObject*>) [js/src/jscntxt.cpp:1194] 15:16:58 INFO - #25: JS_TransplantObject(JSContext*, JS::Handle<JSObject*>, JS::Handle<JSObject*>) [js/src/jsapi.cpp:1127] 15:16:58 INFO - #26: xpc::TransplantObject(JSContext*, JS::Handle<JSObject*>, JS::Handle<JSObject*>) [js/xpconnect/wrappers/WrapperFactory.cpp:609] 15:16:58 INFO - #27: mozilla::dom::ReparentWrapper(JSContext*, JS::Handle<JSObject*>) [dom/bindings/BindingUtils.cpp:1906] 15:16:58 INFO - #28: nsNodeUtils::CloneAndAdopt(nsINode*, bool, bool, nsNodeInfoManager*, JS::Handle<JSObject*>, nsCOMArray<nsINode>&, nsINode*, nsINode**) [dom/base/nsNodeUtils.cpp:568] 15:16:58 INFO - #29: nsIDocument::AdoptNode(nsINode&, mozilla::ErrorResult&) [dom/base/nsNodeUtils.h:200] 15:16:58 INFO - #30: nsDocument::AdoptNode(nsIDOMNode*, nsIDOMNode**) [dom/base/nsDocument.cpp:7698] 15:16:58 INFO - #31: AdoptNodeIntoOwnerDoc [dom/base/nsINode.cpp:1483] 15:16:58 INFO - #32: nsINode::ReplaceOrInsertBefore(bool, nsINode*, nsINode*, mozilla::ErrorResult&) [dom/bindings/ErrorResult.h:151] 15:16:58 INFO - #33: mozilla::dom::NodeBinding::appendChild [obj-firefox/dom/bindings/NodeBinding.cpp:621] 15:16:58 INFO - #34: mozilla::dom::GenericBindingMethod(JSContext*, unsigned int, JS::Value*) [dom/bindings/BindingUtils.cpp:2595] 15:16:58 INFO - #35: js::CallJSNative(JSContext*, bool (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&) [js/src/jscntxtinlines.h:236] 15:16:58 INFO - #36: js::Invoke(JSContext*, JS::CallArgs, js::MaybeConstruct) [js/src/vm/Interpreter.cpp:720] 15:16:58 INFO - #37: js::Invoke(JSContext*, JS::Value const&, JS::Value const&, unsigned int, JS::Value const*, JS::MutableHandle<JS::Value>) [js/src/vm/Interpreter.cpp:775] 15:16:58 INFO - #38: js::DirectProxyHandler::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) const [js/src/proxy/DirectProxyHandler.cpp:77] 15:16:58 INFO - #39: js::CrossCompartmentWrapper::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) const [js/src/proxy/CrossCompartmentWrapper.cpp:289] 15:16:58 INFO - #40: js::Proxy::call(JSContext*, JS::Handle<JSObject*>, JS::CallArgs const&) [js/src/proxy/Proxy.cpp:391] 15:16:58 INFO - #41: js::proxy_Call(JSContext*, unsigned int, JS::Value*) [js/src/proxy/Proxy.cpp:697] 15:16:58 INFO - #42: js::CallJSNative(JSContext*, bool (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&) [js/src/jscntxtinlines.h:236] 15:16:58 INFO - #43: js::Invoke(JSContext*, JS::CallArgs, js::MaybeConstruct) [js/src/vm/Interpreter.cpp:708] 15:16:58 INFO - #44: js::Invoke(JSContext*, JS::Value const&, JS::Value const&, unsigned int, JS::Value const*, JS::MutableHandle<JS::Value>) [js/src/vm/Interpreter.cpp:775] 15:16:58 INFO - #45: js::jit::InvokeFunction(JSContext*, JS::Handle<JSObject*>, bool, unsigned int, JS::Value*, JS::MutableHandle<JS::Value>) [mfbt/GuardObjects.h:119] 15:16:58 INFO - #46: ??? (???:???) 15:16:58 INFO - #47: ??? (???:???) 15:16:58 INFO - ###!!! [Parent][MessageChannel] Error: (msgtype=0x200081,name=PBrowser::Msg_Destroy) Channel error: cannot send/recv 15:22:28 INFO - 880 INFO TEST-PASS | dom/imptests/html/dom/ranges/test_Range-insertNode.html | Range.insertNode() tests - Range.insertNode() tests: Elided 100 passes or known failures. 15:22:28 INFO - 881 INFO TEST-PASS | dom/imptests/html/dom/ranges/test_Range-insertNode.html | 2,5: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node detachedPara1 - 2,5: resulting range position for range [paras[0].firstChild, 2, paras[0].firstChild, 8], node detachedPara1 15:22:28 INFO - 882 INFO TEST-PASS | dom/imptests/html/dom/ranges/test_Range-insertNode.html | Range.insertNode() tests - Range.insertNode() tests: Elided 100 passes or known failures. 15:22:28 INFO - 883 INFO TEST-PASS | dom/imptests/html/dom/ranges/test_Range-insertNode.html | 4,11: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node xmlDoc - 4,11: resulting range position for range [paras[1].firstChild, 0, paras[1].firstChild, 0], node xmlDoc 15:22:28 INFO - 884 INFO TEST-PASS | dom/imptests/html/dom/ranges/test_Range-insertNode.html | Range.insertNode() tests - Range.insertNode() tests: Elided 100 passes or known failures. 15:22:28 INFO - 885 INFO TEST-PASS | dom/imptests/html/dom/ranges/test_Range-insertNode.html | 6,17: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node comment - 6,17: resulting range position for range [detachedPara1.firstChild, 0, detachedPara1.firstChild, 0], node comment 15:22:28 INFO - 886 INFO TEST-PASS | dom/imptests/html/dom/ranges/test_Range-insertNode.html | Range.insertNode() tests - Range.insertNode() tests: Elided 100 passes or known failures. 15:22:28 INFO - 887 INFO TEST-PASS | dom/imptests/html/dom/ranges/test_Range-insertNode.html | 9,1: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node paras[0].firstChild - 9,1: resulting range position for range [foreignPara1.firstChild, 2, foreignPara1.firstChild, 8], node paras[0].firstChild 15:22:28 INFO - 888 INFO TEST-PASS | dom/imptests/html/dom/ranges/test_Range-insertNode.html | Range.insertNode() tests - Range.insertNode() tests: Elided 100 passes or known failures. 15:22:28 INFO - 889 INFO TEST-PASS | dom/imptests/html/dom/ranges/test_Range-insertNode.html | 11,7: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node document - 11,7: resulting range position for range [document.documentElement, 0, document.documentElement, 2], node document 15:22:28 INFO - 890 INFO TEST-PASS | dom/imptests/html/dom/ranges/test_Range-insertNode.html | Range.insertNode() tests - Range.insertNode() tests: Elided 100 passes or known failures. 15:22:28 INFO - 891 INFO TEST-PASS | dom/imptests/html/dom/ranges/test_Range-insertNode.html | 13,13: resulting range position for range [document.head, 1, document.head, 1], node detachedTextNode - 13,13: resulting range position for range [document.head, 1, document.head, 1], node detachedTextNode 15:22:28 INFO - 892 INFO TEST-PASS | dom/imptests/html/dom/ranges/test_Range-insertNode.html | Range.insertNode() tests - Range.insertNode() tests: Elided 100 passes or known failures. 15:22:28 INFO - 893 INFO TEST-PASS | dom/imptests/html/dom/ranges/test_Range-insertNode.html | 15,19: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node docfrag - 15,19: resulting range position for range [foreignDoc.documentElement, 0, foreignDoc.documentElement, 1], node docfrag 15:22:28 INFO - 894 INFO TEST-PASS | dom/imptests/html/dom/ranges/test_Range-insertNode.html | Range.insertNode() tests - Range.insertNode() tests: Elided 100 passes or known failures. 15:22:28 INFO - 895 INFO TEST-PASS | dom/imptests/html/dom/ranges/test_Range-insertNode.html | 18,3: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node foreignPara1 - 18,3: resulting range position for range [paras[0].firstChild, 0, paras[1].firstChild, 0], node foreignPara1 15:22:28 INFO - 896 INFO TEST-PASS | dom/imptests/html/dom/ranges/test_Range-insertNode.html | Range.insertNode() tests - Range.insertNode() tests: Elided 100 passes or known failures. 15:22:28 INFO - 897 INFO TEST-PASS | dom/imptests/html/dom/ranges/test_Range-insertNode.html | 20,9: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node foreignDoc - 20,9: resulting range position for range [paras[0].firstChild, 3, paras[3], 1], node foreignDoc 15:22:28 INFO - 898 INFO TEST-PASS | dom/imptests/html/dom/ranges/test_Range-insertNode.html | Range.insertNode() tests - Range.insertNode() tests: Elided 100 passes or known failures. 15:22:28 INFO - 899 INFO TEST-PASS | dom/imptests/html/dom/ranges/test_Range-insertNode.html | 22,15: resulting range position for range [testDiv, 2, paras[4], 1], node processingInstruction - 22,15: resulting range position for range [testDiv, 2, paras[4], 1], node processingInstruction 15:22:28 INFO - 900 INFO TEST-PASS | dom/imptests/html/dom/ranges/test_Range-insertNode.html | Range.insertNode() tests - Range.insertNode() tests: Elided 100 passes or known failures. 15:22:28 INFO - 901 INFO TEST-PASS | dom/imptests/html/dom/ranges/test_Range-insertNode.html | 24,21: resulting range position for range [document, 0, document, 2], node foreignDoctype - 24,21: resulting range position for range [document, 0, document, 2], node foreignDoctype 15:22:28 INFO - 902 INFO TEST-PASS | dom/imptests/html/dom/ranges/test_Range-insertNode.html | Range.insertNode() tests - Range.insertNode() tests: Elided 100 passes or known failures. 15:22:28 INFO - 903 INFO TEST-PASS | dom/imptests/html/dom/ranges/test_Range-insertNode.html | 27,5: resulting range position for range [foreignDoc, 1, foreignComment, 2], node detachedPara1 - 27,5: resulting range position for range [foreignDoc, 1, foreignComment, 2], node detachedPara1 15:22:28 INFO - 904 INFO TEST-PASS | dom/imptests/html/dom/ranges/test_Range-insertNode.html | Range.insertNode() tests - Range.insertNode() tests: Elided 100 passes or known failures. 15:22:28 INFO - 905 INFO TEST-PASS | dom/imptests/html/dom/ranges/test_Range-insertNode.html | 29,11: resulting range position for range [xmlDoc, 1, xmlComment, 0], node xmlDoc - 29,11: resulting range position for range [xmlDoc, 1, xmlComment, 0], node xmlDoc 15:22:28 INFO - 906 INFO TEST-PASS | dom/imptests/html/dom/ranges/test_Range-insertNode.html | Range.insertNode() tests - Range.insertNode() tests: Elided 100 passes or known failures. 15:22:28 INFO - 907 INFO TEST-PASS | dom/imptests/html/dom/ranges/test_Range-insertNode.html | 31,17: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node comment - 31,17: resulting range position for range [detachedForeignTextNode, 0, detachedForeignTextNode, 8], node comment 15:22:28 WARNING - TEST-UNEXPECTED-TIMEOUT | dom/imptests/html/dom/ranges/test_Range-insertNode.html | application timed out after 330 seconds with no output 15:22:29 INFO - Failed to start /builds/slave/test/build/tests/bin/screentopng for screenshot: No such file or directory 15:22:29 INFO - TEST-INFO | Main app process: killed by SIGIOT 15:22:29 WARNING - TEST-UNEXPECTED-FAIL | dom/imptests/html/dom/ranges/test_Range-insertNode.html | application terminated with exit code 6 15:22:29 INFO - runtests.py | Application ran for: 0:18:44.112959 15:22:29 INFO - zombiecheck | Reading PID log: /tmp/tmpUtHR8Ppidlog 15:22:29 INFO - ==> process 1921 launched child process 1976 15:22:29 INFO - zombiecheck | Checking for orphan process with PID: 1976 15:22:43 INFO - mozcrash Saved minidump as /builds/slave/test/build/blobber_upload_dir/277e9f48-4492-2eb4-2e84d864-5f46e283.dmp 15:22:43 INFO - mozcrash Saved app info as /builds/slave/test/build/blobber_upload_dir/277e9f48-4492-2eb4-2e84d864-5f46e283.extra 15:22:43 WARNING - PROCESS-CRASH | dom/imptests/html/dom/ranges/test_Range-insertNode.html | application crashed [@ linux-gate.so + 0x424] 15:22:56 WARNING - PROCESS-CRASH | dom/imptests/html/dom/ranges/test_Range-insertNode.html | application crashed [@ nsWrapperCache::UpdateWrapper(JSObject*, JSObject const*)] 15:22:56 INFO - Crash dump filename: /tmp/tmp9q5uWW.mozrunner/minidumps/659303ea-e865-e87e-563ab1f5-02acc893.dmp 15:22:56 INFO - Operating system: Linux 15:22:56 INFO - 0.0.0 Linux 3.2.0-76-generic-pae #111-Ubuntu SMP Tue Jan 13 22:34:29 UTC 2015 i686 15:22:56 INFO - CPU: x86 15:22:56 INFO - GenuineIntel family 6 model 62 stepping 4 15:22:56 INFO - 1 CPU 15:22:56 INFO - Crash reason: SIGSEGV 15:22:56 INFO - Crash address: 0x0 15:22:56 INFO - Thread 0 (crashed) 15:22:56 INFO - 0 libxul.so!nsWrapperCache::UpdateWrapper(JSObject*, JSObject const*) [nsWrapperCache.h:da4b14a3178a : 143 + 0x1d] 15:22:56 INFO - eip = 0xb339e8bb esp = 0xbf9a1890 ebp = 0xbf9a18a8 ebx = 0xb7631624 15:22:56 INFO - esi = 0x9797a8e0 edi = 0xbf9a18dc eax = 0x00000000 ecx = 0xb233a8ac 15:22:56 INFO - edx = 0x00000000 efl = 0x00010282 15:22:56 INFO - Found by: given as instruction pointer in context 15:22:56 INFO - 1 libxul.so!mozilla::dom::HTMLHtmlElementBinding::_objectMoved [BindingUtils.h:da4b14a3178a : 1290 + 0x6] 15:22:56 INFO - eip = 0xb38c7aac esp = 0xbf9a18b0 ebp = 0xbf9a18f8 ebx = 0xb7631624 15:22:56 INFO - esi = 0x97969640 edi = 0xbf9a18dc 15:22:56 INFO - Found by: call frame info 15:22:56 INFO - 2 libxul.so!RelocateCell [jsgc.cpp:da4b14a3178a : 2037 + 0xe] 15:22:56 INFO - eip = 0xb545fa51 esp = 0xbf9a1900 ebp = 0xbf9a1958 ebx = 0xb7631624 15:22:56 INFO - esi = 0x9797a8e0 edi = 0x9797a8e0 15:22:56 INFO - Found by: call frame info 15:22:56 INFO - 3 libxul.so!RelocateArena [jsgc.cpp:da4b14a3178a : 2068 + 0x13] 15:22:56 INFO - eip = 0xb545fe38 esp = 0xbf9a1960 ebp = 0xbf9a19f8 ebx = 0xb7631624 15:22:56 INFO - esi = 0x00000002 edi = 0xbf9a1da8 15:22:56 INFO - Found by: call frame info 15:22:56 INFO - 4 libxul.so!js::gc::ArenaList::relocateArenas(js::gc::ArenaHeader*, js::gc::ArenaHeader*, js::SliceBudget&, js::gcstats::Statistics&) [jsgc.cpp:da4b14a3178a : 2100 + 0x7] 15:22:56 INFO - eip = 0xb54603aa esp = 0xbf9a1a00 ebp = 0xbf9a1a28 ebx = 0xb7631624 15:22:56 INFO - esi = 0x9797a000 edi = 0x97f4c000 15:22:56 INFO - Found by: call frame info 15:22:56 INFO - 5 libxul.so!js::gc::ArenaLists::relocateArenas(js::gc::ArenaHeader*&, JS::gcreason::Reason, js::SliceBudget&, js::gcstats::Statistics&) [jsgc.cpp:da4b14a3178a : 2175 + 0x28] 15:22:56 INFO - eip = 0xb54605a5 esp = 0xbf9a1a30 ebp = 0xbf9a1b08 ebx = 0xb7631624 15:22:56 INFO - esi = 0x97f58000 edi = 0x00000002 15:22:56 INFO - Found by: call frame info 15:22:56 INFO - 6 libxul.so!js::gc::GCRuntime::relocateArenas(JS::Zone*, JS::gcreason::Reason, js::SliceBudget&) [jsgc.cpp:da4b14a3178a : 2200 + 0x28] 15:22:56 INFO - eip = 0xb546087d esp = 0xbf9a1b10 ebp = 0xbf9a1b98 ebx = 0xb7631624 15:22:56 INFO - esi = 0xa7c12800 edi = 0xad9053e0 15:22:56 INFO - Found by: call frame info 15:22:56 INFO - 7 libxul.so!js::gc::GCRuntime::compactPhase(JS::gcreason::Reason, js::SliceBudget&) [jsgc.cpp:da4b14a3178a : 5439 + 0x1c] 15:22:56 INFO - eip = 0xb5460db0 esp = 0xbf9a1ba0 ebp = 0xbf9a1be8 ebx = 0xb7631624 15:22:56 INFO - esi = 0xad90703c edi = 0xa7c12800 15:22:56 INFO - Found by: call frame info 15:22:56 INFO - 8 libxul.so!js::gc::GCRuntime::incrementalCollectSlice(js::SliceBudget&, JS::gcreason::Reason) [jsgc.cpp:da4b14a3178a : 5881 + 0x15] 15:22:56 INFO - eip = 0xb5461339 esp = 0xbf9a1bf0 ebp = 0xbf9a1c48 ebx = 0xb7631624 15:22:56 INFO - esi = 0xad9011b0 edi = 0x00000000 15:22:56 INFO - Found by: call frame info 15:22:56 INFO - 9 libxul.so!js::gc::GCRuntime::gcCycle(bool, js::SliceBudget&, JS::gcreason::Reason) [jsgc.cpp:da4b14a3178a : 6047 + 0x15] 15:22:56 INFO - eip = 0xb546227e esp = 0xbf9a1c50 ebp = 0xbf9a1cb8 ebx = 0xb7631624 15:22:56 INFO - esi = 0xbf9a1c90 edi = 0xad9011b0 15:22:56 INFO - Found by: call frame info 15:22:56 INFO - 10 libxul.so!js::gc::GCRuntime::collect(bool, js::SliceBudget, JS::gcreason::Reason) [jsgc.cpp:da4b14a3178a : 6161 + 0x1a] 15:22:56 INFO - eip = 0xb546260d esp = 0xbf9a1cc0 ebp = 0xbf9a1d98 ebx = 0xb7631624 15:22:56 INFO - esi = 0xad9011b0 edi = 0x00000008 15:22:56 INFO - Found by: call frame info
Comment hidden (Legacy TBPL/Treeherder Robot) |
Reporter | ||
Updated•9 years ago
|
Summary: Intermittent test_Range-insertNode.html | application crashed [@ nsWrapperCache::UpdateWrapper(JSObject*, JSObject const*)] (Assertion failure: mWrapper == aOldObject, at nsWrapperCache.h:143) → Intermittent test_Range-insertNode.html,test_Range-surroundContents.html | application crashed [@ nsWrapperCache::UpdateWrapper(JSObject*, JSObject const*)] (Assertion failure: mWrapper == aOldObject, at nsWrapperCache.h:143)
Comment hidden (Legacy TBPL/Treeherder Robot) |
Comment hidden (Legacy TBPL/Treeherder Robot) |
Comment hidden (Legacy TBPL/Treeherder Robot) |
Comment hidden (Legacy TBPL/Treeherder Robot) |
Comment hidden (Legacy TBPL/Treeherder Robot) |
Comment hidden (Intermittent Failures Robot) |
Comment 8•8 years ago
|
||
This seems to happen rarely, though a bit more often recently. I wonder if the events-in-nursery change, or some other GC related change has made this more common. But the bug is old anyhow.
Flags: needinfo?(terrence)
Flags: needinfo?(jcoppeard)
Comment hidden (Intermittent Failures Robot) |
Assignee | ||
Comment 10•8 years ago
|
||
I didn't immediately notice that the crash is happening if we compact while inside JS_TransplantObject(). Wrappers created by the DOM can have a pointer to a native object in one of their slots. What's happening here is that a compacting GC is observing an intermediate state where some object has been moved but its wrappers have not been updated to point to the new location. I think disabling compacting GC while we are transplanting would be a very good thing. The patch adds an AutoDisableCompactingGC to this path and updates the class to also finish any incremental compacting GC that is in progress. I removed some now unneeded braces. I also made js::RemapWrapper() infallible rather than always returning true, and added a missing return value check after adding a wrapper to the map.
Assignee: nobody → jcoppeard
Flags: needinfo?(jcoppeard)
Attachment #8718830 -
Flags: review?(terrence)
Comment 11•8 years ago
|
||
Comment on attachment 8718830 [details] [diff] [review] bug1188364-gc-in-transplant Review of attachment 8718830 [details] [diff] [review]: ----------------------------------------------------------------- ::: js/src/proxy/CrossCompartmentWrapper.cpp @@ +553,5 @@ > // Update the entry in the compartment's wrapper map to point to the old > // wrapper, which has now been updated (via reuse or swap). > MOZ_ASSERT(wobj->is<WrapperObject>()); > + if (!wcompartment->putWrapper(cx, CrossCompartmentKey(newTarget), ObjectValue(*wobj))) > + MOZ_CRASH(); Oh, wow, we really should be much, much more aggressive with our use of MOZ_WARN_UNUSED_RESULT.
Attachment #8718830 -
Flags: review?(terrence) → review+
Comment hidden (Intermittent Failures Robot) |
Comment 14•8 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/49868bdea8c8
Status: NEW → RESOLVED
Closed: 8 years ago
status-firefox47:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla47
Comment 15•8 years ago
|
||
Filed bug 1248681 to add MOZ_WARN_UNUSED_RESULT annotations.
Flags: needinfo?(terrence)
Reporter | ||
Updated•8 years ago
|
status-firefox45:
--- → wontfix
status-firefox46:
--- → affected
status-firefox-esr45:
--- → affected
Reporter | ||
Updated•8 years ago
|
Updated•5 years ago
|
Component: DOM → DOM: Core & HTML
You need to log in
before you can comment on or make changes to this bug.
Description
•