Open
Bug 1254652
Opened 9 years ago
Updated 3 years ago
NS_ENSURE_TRUE(context) failed during nsThread::Shutdown
Categories
(Core :: XPCOM, defect)
Core
XPCOM
Tracking
()
NEW
Tracking | Status | |
---|---|---|
firefox48 | --- | affected |
People
(Reporter: froydnj, Unassigned)
Details
This warning shows up during debug runs:
11:36:04 INFO - [1881] WARNING: NS_ENSURE_TRUE(context) failed: file /builds/slave/m-in-lx-d-00000000000000000000/build/src/xpcom/threads/nsThread.cpp, line 805
I noticed it today in my local build and added NS_ASSERTION:
[11220] ###!!! ASSERTION: ouch!: 'context', file /home/froydnj/src/gecko-dev.git/xpcom/threads/nsThread.cpp, line 805
#01: nsRunnableMethodImpl<nsresult (nsIThread::*)(), true>::Run() (/opt/build/froydnj/build-debug/dist/include/nsThreadUtils.h:873)
#02: nsThread::ProcessNextEvent(bool, bool*) (/home/froydnj/src/gecko-dev.git/xpcom/threads/nsThread.cpp:1000)
#03: NS_ProcessNextEvent(nsIThread*, bool) (/home/froydnj/src/gecko-dev.git/xpcom/glue/nsThreadUtils.cpp:297)
#04: nsThread::Shutdown() (/home/froydnj/src/gecko-dev.git/xpcom/threads/nsThread.cpp:810)
#05: nsRunnableMethodImpl<nsresult (nsIThread::*)(), true>::Run() (/opt/build/froydnj/build-debug/dist/include/nsThreadUtils.h:873)
#06: nsThread::ProcessNextEvent(bool, bool*) (/home/froydnj/src/gecko-dev.git/xpcom/threads/nsThread.cpp:1000)
#07: NS_ProcessNextEvent(nsIThread*, bool) (/home/froydnj/src/gecko-dev.git/xpcom/glue/nsThreadUtils.cpp:297)
#08: nsThread::Shutdown() (/home/froydnj/src/gecko-dev.git/xpcom/threads/nsThread.cpp:810)
#09: nsRunnableMethodImpl<nsresult (nsIThread::*)(), true>::Run() (/opt/build/froydnj/build-debug/dist/include/nsThreadUtils.h:873)
#10: nsThread::ProcessNextEvent(bool, bool*) (/home/froydnj/src/gecko-dev.git/xpcom/threads/nsThread.cpp:1000)
#11: NS_ProcessNextEvent(nsIThread*, bool) (/home/froydnj/src/gecko-dev.git/xpcom/glue/nsThreadUtils.cpp:297)
#12: nsThread::Shutdown() (/home/froydnj/src/gecko-dev.git/xpcom/threads/nsThread.cpp:810)
#13: mozilla::dom::workers::RuntimeService::NoteIdleThread(mozilla::dom::workers::WorkerThread*) (/home/froydnj/src/gecko-dev.git/dom/workers/RuntimeService.cpp:2373)
#14: ~RefPtr (/opt/build/froydnj/build-debug/dist/include/mozilla/RefPtr.h:76)
#15: nsThread::ProcessNextEvent(bool, bool*) (/home/froydnj/src/gecko-dev.git/xpcom/threads/nsThread.cpp:1000)
#16: NS_ProcessNextEvent(nsIThread*, bool) (/home/froydnj/src/gecko-dev.git/xpcom/glue/nsThreadUtils.cpp:297)
#17: nsThread::Shutdown() (/home/froydnj/src/gecko-dev.git/xpcom/threads/nsThread.cpp:810)
#18: mozilla::dom::workers::RuntimeService::NoteIdleThread(mozilla::dom::workers::WorkerThread*) (/home/froydnj/src/gecko-dev.git/dom/workers/RuntimeService.cpp:2373)
#19: ~RefPtr (/opt/build/froydnj/build-debug/dist/include/mozilla/RefPtr.h:76)
#20: nsThread::ProcessNextEvent(bool, bool*) (/home/froydnj/src/gecko-dev.git/xpcom/threads/nsThread.cpp:1000)
#21: NS_ProcessNextEvent(nsIThread*, bool) (/home/froydnj/src/gecko-dev.git/xpcom/glue/nsThreadUtils.cpp:297)
#22: nsThread::Shutdown() (/home/froydnj/src/gecko-dev.git/xpcom/threads/nsThread.cpp:810)
#23: mozilla::dom::workers::RuntimeService::NoteIdleThread(mozilla::dom::workers::WorkerThread*) (/home/froydnj/src/gecko-dev.git/dom/workers/RuntimeService.cpp:2373)
#24: ~RefPtr (/opt/build/froydnj/build-debug/dist/include/mozilla/RefPtr.h:76)
#25: nsThread::ProcessNextEvent(bool, bool*) (/home/froydnj/src/gecko-dev.git/xpcom/threads/nsThread.cpp:1000)
#26: NS_ProcessNextEvent(nsIThread*, bool) (/home/froydnj/src/gecko-dev.git/xpcom/glue/nsThreadUtils.cpp:297)
#27: nsThread::Shutdown() (/home/froydnj/src/gecko-dev.git/xpcom/threads/nsThread.cpp:810)
#28: nsTArray_base<nsTArrayInfallibleAllocator, nsTArray_CopyWithMemutils>::Length() const (/opt/build/froydnj/build-debug/dist/include/nsTArray.h:361)
#29: nsTArray_base<nsTArrayInfallibleAllocator, nsTArray_CopyWithMemutils>::Length() const (/opt/build/froydnj/build-debug/dist/include/nsTArray.h:361)
#30: nsTHashtable<nsObserverList>::GetEntry(char const*) const (/opt/build/froydnj/build-debug/dist/include/nsTHashtable.h:134)
#31: mozilla::ShutdownXPCOM(nsIServiceManager*) (/home/froydnj/src/gecko-dev.git/xpcom/build/XPCOMInit.cpp:868)
#32: ~nsCOMPtr (/opt/build/froydnj/build-debug/dist/include/nsCOMPtr.h:403)
#33: operator delete (/opt/build/froydnj/build-debug/dist/include/mozilla/mozalloc.h:210)
#34: XRE_main (/home/froydnj/src/gecko-dev.git/toolkit/xre/nsAppRunner.cpp:4516)
#35: do_main (/home/froydnj/src/gecko-dev.git/browser/app/nsBrowserApp.cpp:212)
#36: main (/home/froydnj/src/gecko-dev.git/browser/app/nsBrowserApp.cpp:360)
#37: __libc_start_main (/build/glibc-I9DIZl/glibc-2.19/csu/libc-start.c:321)
#38: _start (/opt/build/froydnj/build-debug/dist/bin/firefox)
#39: ??? (???:???)
We are draining event queues via nested event loops? Seems not so great.
ni? to khuey for thoughts and also maybe an explanation of what's going on with the worker stuff in there?
Flags: needinfo?(khuey)
This warning appears if
a) We call shutdown on a thread from that thread.
b) We call shutdown twice on the same thread.
In both cases the shutdown call that warns becomes a no-op. I guess before we didn't warn in case b, we could restore that behavior if you care. http://hg.mozilla.org/mozilla-central/rev/6bb087e3ec08#l4.136
Flags: needinfo?(khuey)
Updated•3 years ago
|
Severity: normal → S3
You need to log in
before you can comment on or make changes to this bug.
Description
•