Closed
Bug 1039884
Opened 10 years ago
Closed 10 years ago
Intermittent test_dataChannel_basicAudio.html | Main app process exited normally | application crashed [@ mozilla::MediaStreamGraphImpl::AppendMessage(mozilla::ControlMessage*)] with Assertion failure: mCanRunMessagesSynchronously, at MediaStreamGraph.cpp
Categories
(Core :: WebRTC, defect)
Tracking
()
RESOLVED
FIXED
mozilla37
Tracking | Status | |
---|---|---|
firefox32 | --- | wontfix |
firefox33 | --- | wontfix |
firefox34 | --- | wontfix |
firefox35 | --- | wontfix |
firefox36 | --- | fixed |
firefox37 | --- | fixed |
firefox-esr24 | --- | unaffected |
firefox-esr31 | --- | unaffected |
b2g-v1.4 | --- | unaffected |
b2g-v2.0 | --- | wontfix |
b2g-v2.0M | --- | wontfix |
b2g-v2.1 | --- | fixed |
b2g-v2.1S | --- | fixed |
b2g-v2.2 | --- | fixed |
People
(Reporter: KWierso, Assigned: pehrsons)
References
Details
(Keywords: crash, intermittent-failure)
Crash Data
Attachments
(1 file, 2 obsolete files)
(deleted),
patch
|
roc
:
review+
karlt
:
review+
Sylvestre
:
approval-mozilla-aurora+
bajaj
:
approval-mozilla-b2g34+
|
Details | Diff | Splinter Review |
https://tbpl.mozilla.org/php/getParsedLog.php?id=43965707&tree=Fx-Team
Ubuntu VM 12.04 x64 fx-team debug test mochitest-3 on 2014-07-16 13:42:18 PDT for push dcad44d79eee
slave: tst-linux64-spot-194
13:49:40 INFO - (stun/INFO) Skipping SOURCE-ADDRESS
13:49:40 INFO - (stun/INFO) Skipping CHANGED-ADDRESS
13:49:40 INFO - (stun/INFO) Translating obsolete XOR-MAPPED-ADDRESS type
13:49:40 INFO - -1815087360[7ff5a6443a40]: NrIceCtx(PC:1405543780171587 (id=420 url=http://mochi.test:8888/tests/dom/media/tests/mochitest/test_dataChannel_basicAudio.html)): trickling candidate candidate:1 1 UDP 1686110207 63.245.214.82 59097 typ srflx raddr 10.134.57.32 rport 50196
13:49:40 INFO - (stun/INFO) Skipping SOURCE-ADDRESS
13:49:40 INFO - (stun/INFO) Skipping CHANGED-ADDRESS
13:49:40 INFO - (stun/INFO) Translating obsolete XOR-MAPPED-ADDRESS type
13:49:40 INFO - -1815087360[7ff5a6443a40]: NrIceCtx(PC:1405543780171587 (id=420 url=http://mochi.test:8888/tests/dom/media/tests/mochitest/test_dataChannel_basicAudio.html)): trickling candidate candidate:1 2 UDP 1686110206 63.245.214.82 58730 typ srflx raddr 10.134.57.32 rport 33407
13:49:40 INFO - Assertion failure: mCanRunMessagesSynchronously, at /builds/slave/fx-team-l64-d-0000000000000000/build/content/media/MediaStreamGraph.cpp:1761
13:50:17 INFO - mozilla::dom::HTMLMediaElement::Pause(mozilla::ErrorResult&) [content/html/content/src/HTMLMediaElement.cpp:1636]
13:50:17 INFO - mozilla::dom::HTMLMediaElement::Pause() [content/html/content/src/HTMLMediaElement.cpp:1645]
13:50:17 INFO - mozilla::dom::HTMLMediaElement::PlaybackEnded() [content/html/content/src/HTMLMediaElement.cpp:3043]
13:50:17 INFO - mozilla::dom::HTMLMediaElement::StreamListener::DoNotifyFinished() [content/html/content/src/HTMLMediaElement.cpp:2715]
13:50:17 INFO - nsRunnableMethodImpl<void (mozilla::dom::HTMLMediaElement::StreamListener::*)(), void, true>::Run() [obj-firefox/dist/include/nsThreadUtils.h:394]
13:50:17 INFO - mozilla::MediaStreamGraphImpl::RunInStableState() [obj-firefox/dist/include/nsTArray.h:323]
13:50:17 INFO - mozilla::::MediaStreamGraphStableStateRunnable::Run [content/media/MediaStreamGraph.cpp:1567]
13:50:17 INFO - nsThread::ProcessNextEvent(bool, bool*) [xpcom/threads/nsThread.cpp:766]
13:50:17 INFO - NS_ProcessNextEvent(nsIThread*, bool) [xpcom/glue/nsThreadUtils.cpp:265]
13:50:17 INFO - nsThread::Shutdown() [xpcom/threads/nsThread.cpp:597]
13:50:17 INFO - mozilla::MediaManager::Observe(nsISupports*, char const*, char16_t const*) [obj-firefox/dist/include/nsCOMPtr.h:1172]
13:50:17 INFO - nsObserverList::NotifyObservers(nsISupports*, char const*, char16_t const*) [obj-firefox/dist/include/nsTArray.h:323]
13:50:17 INFO - nsObserverService::NotifyObservers(nsISupports*, char const*, char16_t const*) [xpcom/ds/nsObserverService.cpp:333]
13:50:17 INFO - mozilla::ShutdownXPCOM(nsIServiceManager*) [xpcom/build/nsXPComInit.cpp:811]
13:50:17 INFO - XRE_TermEmbedding [toolkit/xre/nsEmbedFunctions.cpp:192]
13:50:17 INFO - mozilla::ipc::ScopedXREEmbed::Stop() [ipc/glue/ScopedXREEmbed.cpp:111]
13:50:17 INFO - XRE_InitChildProcess [toolkit/xre/nsEmbedFunctions.cpp:535]
13:50:17 INFO - main [ipc/app/MozillaRuntimeMain.cpp:152]
13:50:17 INFO - libc.so.6 + 0x2176d
LATER
13:50:19 INFO - 654 INFO TEST-INFO | MEMORY STAT vsize after test: 1315360768
13:50:19 INFO - 655 INFO TEST-INFO | MEMORY STAT residentFast after test: 326967296
13:50:19 INFO - [Parent 1789] WARNING: MediaPipeline Transport failed. This is not properly cleaned up yet: file /builds/slave/fx-team-l64-d-0000000000000000/build/media/webrtc/signaling/src/mediapipeline/MediaPipeline.cpp, line 290
13:50:19 INFO - [Parent 1789] WARNING: MediaPipeline Transport failed. This is not properly cleaned up yet: file /builds/slave/fx-team-l64-d-0000000000000000/build/media/webrtc/signaling/src/mediapipeline/MediaPipeline.cpp, line 290
13:50:19 INFO - 656 INFO TEST-INFO | MEMORY STAT heapAllocated after test: 98948000
13:50:19 INFO - -1482991808[7ff5a6443380]: Deleting DataChannelConnection 7ff56ca5aba0
13:50:19 INFO - -1482991808[7ff5a6443380]: [main|def] ccapi_call.c:57: SIPCC-SIP_CC_PROV: CCAPI_Call_releaseCallInfo: ref=0x7ff56c738800: count=1
13:50:19 INFO - -1482991808[7ff5a6443380]: [main|def] ccapi_call.c:57: SIPCC-SIP_CC_PROV: CCAPI_Call_releaseCallInfo: ref=0x7ff57512ec00: count=1
13:50:19 INFO - 657 ERROR TEST-UNEXPECTED-FAIL | /tests/dom/media/tests/mochitest/test_dataChannel_basicAudio.html | This test left crash dumps behind, but we weren't expecting it to!
13:50:19 INFO - 658 INFO TEST-INFO | Found unexpected crash dump file /tmp/tmpFT2aGk.mozrunner/minidumps/4e691af6-a78a-4b07-670144e9-5727a3a8.dmp.
13:50:19 INFO - 659 INFO TEST-INFO | Found unexpected crash dump file /tmp/tmpFT2aGk.mozrunner/minidumps/4e691af6-a78a-4b07-670144e9-5727a3a8.extra.
13:50:19 INFO - 660 INFO TEST-END | /tests/dom/media/tests/mochitest/test_dataChannel_basicAudio.html | finished in 40170ms
13:50:19 INFO - ++DOMWINDOW == 24 (0x7ff576aa8400) [pid = 1789] [serial = 421] [outer = 0x7ff5788acc00]
13:50:19 INFO - -1482991808[7ff5a6443380]: [main|PeerConnectionImpl] PeerConnectionImpl.cpp:1675: CloseInt: Closing PeerConnectionImpl 9299afb5c3256a7a; ending call
13:50:19 INFO - -1832073472[7ff575e20260]: [CCAPP Task|def] ccapi.c:1446: SIPCC-CC_API: 1/11, cc_int_onhook: UI -> GSM: ONHOOK
13:50:19 INFO - -1832073472[7ff575e20260]: [CCAPP Task|def] ccapi.c:1448: (1/11) On-hook called from /builds/slave/fx-team-l64-d-0000000000000000/build/media/webrtc/signaling/src/sipcc/core/ccapp/ccprovider.c:657
13:50:19 INFO - -1832663296[7ff5753af700]: [GSM Task|def] dcsm.c:532: SIPCC-DCSM: dcsm_process_event: DCSM 11 :(DCSM_READY:ONHOOK )
13:50:19 INFO - -1482991808[7ff5a6443380]: [main|PeerConnectionImpl] PeerConnectionImpl.cpp:1675: CloseInt: Closing PeerConnectionImpl e96bd76fe9633829; ending call
13:50:19 INFO - -1832073472[7ff575e20260]: [CCAPP Task|def] ccapi.c:1446: SIPCC-CC_API: 1/12, cc_int_onhook: UI -> GSM: ONHOOK
13:50:19 INFO - -1832073472[7ff575e20260]: [CCAPP Task|def] ccapi.c:1448: (1/12) On-hook called from /builds/slave/fx-team-l64-d-0000000000000000/build/media/webrtc/signaling/src/sipcc/core/ccapp/ccprovider.c:657
13:50:19 INFO - -1832663296[7ff5753af700]: [GSM Task|def] dcsm.c:532: SIPCC-DCSM: dcsm_process_event: DCSM 11 :(DCSM_READY:ONHOOK )
13:50:20 INFO - 661 INFO TEST-START | /tests/dom/media/tests/mochitest/test_dataChannel_basicAudioVideo.html
LATER
14:09:02 INFO - INFO | zombiecheck | Checking for orphan process with PID: 1835
14:09:02 INFO - INFO | zombiecheck | Checking for orphan process with PID: 1865
14:09:02 INFO - INFO | zombiecheck | Checking for orphan process with PID: 1888
14:09:02 INFO - INFO | zombiecheck | Checking for orphan process with PID: 1909
14:09:02 INFO - INFO | zombiecheck | Checking for orphan process with PID: 1930
14:09:02 INFO - INFO | zombiecheck | Checking for orphan process with PID: 1944
14:09:02 INFO - INFO | zombiecheck | Checking for orphan process with PID: 2030
14:09:02 INFO - INFO | zombiecheck | Checking for orphan process with PID: 2445
14:09:02 INFO - INFO | zombiecheck | Checking for orphan process with PID: 2449
14:09:02 INFO - INFO | zombiecheck | Checking for orphan process with PID: 2454
14:09:02 INFO - INFO | zombiecheck | Checking for orphan process with PID: 2458
14:09:02 INFO - INFO | zombiecheck | Checking for orphan process with PID: 2463
14:09:02 INFO - INFO | zombiecheck | Checking for orphan process with PID: 2467
14:09:02 INFO - INFO | zombiecheck | Checking for orphan process with PID: 2473
14:09:02 INFO - INFO | zombiecheck | Checking for orphan process with PID: 2477
14:09:02 INFO - INFO | zombiecheck | Checking for orphan process with PID: 2485
14:09:10 WARNING - PROCESS-CRASH | Main app process exited normally | application crashed [@ mozilla::MediaStreamGraphImpl::AppendMessage(mozilla::ControlMessage*)]
14:09:10 INFO - Crash dump filename: /tmp/tmpFT2aGk.mozrunner/minidumps/4e691af6-a78a-4b07-670144e9-5727a3a8.dmp
14:09:10 INFO - Operating system: Linux
14:09:10 INFO - 0.0.0 Linux 3.2.0-23-generic #36-Ubuntu SMP Tue Apr 10 20:39:51 UTC 2012 x86_64
14:09:10 INFO - CPU: amd64
14:09:10 INFO - family 6 model 45 stepping 7
14:09:10 INFO - 1 CPU
14:09:10 INFO - Crash reason: SIGSEGV
14:09:10 INFO - Crash address: 0x0
14:09:10 INFO - Thread 0 (crashed)
14:09:10 INFO - 0 libxul.so!mozilla::MediaStreamGraphImpl::AppendMessage(mozilla::ControlMessage*) [MediaStreamGraph.cpp:dcad44d79eee : 1761 + 0x18]
14:09:10 INFO - rbx = 0x00007fd3839cabc0 r12 = 0x00007fd3635324a0
14:09:10 INFO - r13 = 0x00000000ffffffff r14 = 0x00007fffb8342f01
14:09:10 INFO - r15 = 0xffffffffffffffff rip = 0x00007fd398b0bd41
14:09:10 INFO - rsp = 0x00007fffb8342ca0 rbp = 0x00007fffb8342cc0
14:09:10 INFO - Found by: given as instruction pointer in context
14:09:10 INFO - 1 libxul.so!mozilla::dom::HTMLMediaElement::Pause(mozilla::ErrorResult&) [HTMLMediaElement.cpp:dcad44d79eee : 1633 + 0xd]
14:09:10 INFO - rbx = 0x00007fd37f638c00 r12 = 0x0000000000000000
14:09:10 INFO - r13 = 0x00000000ffffffff r14 = 0x00007fffb8342f01
14:09:10 INFO - r15 = 0xffffffffffffffff rip = 0x00007fd398a8961f
14:09:10 INFO - rsp = 0x00007fffb8342cd0 rbp = 0x00007fffb8342cf0
14:09:10 INFO - Found by: call frame info
14:09:10 INFO - 2 libxul.so!mozilla::dom::HTMLMediaElement::Pause() [HTMLMediaElement.cpp:dcad44d79eee : 1644 + 0x4]
14:09:10 INFO - rbx = 0x00007fd37f638c00 r12 = 0x0000000000000000
14:09:10 INFO - r13 = 0x00000000ffffffff r14 = 0x00007fffb8342f01
14:09:10 INFO - r15 = 0xffffffffffffffff rip = 0x00007fd398a8967b
14:09:10 INFO - rsp = 0x00007fffb8342d00 rbp = 0x00007fffb8342d30
14:09:10 INFO - Found by: call frame info
14:09:10 INFO - 3 libxul.so!mozilla::dom::HTMLMediaElement::PlaybackEnded() [HTMLMediaElement.cpp:dcad44d79eee : 3041 + 0x8]
14:09:10 INFO - rbx = 0x00007fd37f638c00 r12 = 0x0000000000000000
14:09:10 INFO - r13 = 0x00000000ffffffff r14 = 0x00007fffb8342f01
14:09:10 INFO - r15 = 0xffffffffffffffff rip = 0x00007fd398a89490
14:09:10 INFO - rsp = 0x00007fffb8342d40 rbp = 0x00007fffb8342d90
14:09:10 INFO - Found by: call frame info
14:09:10 INFO - 4 libxul.so!mozilla::dom::HTMLMediaElement::StreamListener::DoNotifyFinished() [HTMLMediaElement.cpp:dcad44d79eee : 2715 + 0x8]
14:09:10 INFO - rbx = 0x00007fd373590d40 r12 = 0x0000000000000001
14:09:10 INFO - r13 = 0x00007fd361fff098 r14 = 0x00007fffb8342f01
14:09:10 INFO - r15 = 0x0000000000000001 rip = 0x00007fd398a89543
14:09:10 INFO - rsp = 0x00007fffb8342da0 rbp = 0x00007fffb8342dc0
14:09:10 INFO - Found by: call frame info
Comment hidden (Legacy TBPL/Treeherder Robot) |
Comment hidden (Legacy TBPL/Treeherder Robot) |
Comment hidden (Legacy TBPL/Treeherder Robot) |
Updated•10 years ago
|
status-b2g-v2.0:
--- → affected
status-b2g-v2.1:
--- → affected
status-firefox32:
--- → wontfix
status-firefox33:
--- → affected
status-firefox34:
--- → affected
status-firefox-esr24:
--- → unaffected
status-firefox-esr31:
--- → unaffected
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 9•10 years ago
|
||
Andreas, does this one interest you by chance?
status-b2g-v1.4:
--- → unaffected
status-b2g-v2.0M:
--- → wontfix
status-b2g-v2.2:
--- → affected
status-firefox35:
--- → affected
status-firefox36:
--- → affected
status-firefox37:
--- → affected
Flags: needinfo?(pehrsons)
Assignee | ||
Comment 10•10 years ago
|
||
Findings so far, for the last stack trace by TBPL Robot (only one still around).
Log at: http://ftp.mozilla.org/pub/mozilla.org/firefox/tinderbox-builds/mozilla-inbound-linux64-debug/1418763733/mozilla-inbound_ubuntu64_vm-debug_test-mochitest-3-bm113-tests1-linux64-build424.txt.gz
Stack trace leading to failure is:
14:01:51 INFO - Assertion failure: mCanRunMessagesSynchronously, at /builds/slave/m-in-l64-d-0000000000000000000/build/src/dom/media/MediaStreamGraph.cpp:1776
14:02:13 INFO - #01: mozilla::dom::HTMLMediaElement::Pause(mozilla::ErrorResult&) [dom/html/HTMLMediaElement.cpp:1617]
14:02:13 INFO - #02: mozilla::dom::HTMLMediaElement::Pause() [dom/html/HTMLMediaElement.cpp:1626]
14:02:13 INFO - #03: mozilla::dom::HTMLMediaElement::PlaybackEnded() [dom/html/HTMLMediaElement.cpp:3033]
14:02:13 INFO - #04: mozilla::dom::HTMLMediaElement::StreamListener::DoNotifyFinished() [dom/html/HTMLMediaElement.cpp:2726]
14:02:13 INFO - #05: nsRunnableMethodImpl<void (mozilla::dom::HTMLMediaElement::StreamListener::*)(), void, true>::Run() [xpcom/glue/nsThreadUtils.h:391]
14:02:13 INFO - #06: mozilla::MediaStreamGraphImpl::RunInStableState(bool) [xpcom/glue/nsTArray.h:330]
14:02:13 INFO - #07: mozilla::::MediaStreamGraphStableStateRunnable::Run [dom/media/MediaStreamGraph.cpp:1539]
14:02:13 INFO - #08: nsThread::ProcessNextEvent(bool, bool*) [xpcom/threads/nsThread.cpp:835]
14:02:13 INFO - #09: NS_ProcessNextEvent(nsIThread*, bool) [xpcom/glue/nsThreadUtils.cpp:265]
14:02:13 INFO - #10: nsThread::Shutdown() [xpcom/threads/nsThread.cpp:641]
14:02:13 INFO - #11: mozilla::MediaEngineWebRTC::Shutdown() [xpcom/glue/nsCOMPtr.h:1031]
14:02:13 INFO - #12: mozilla::MediaEngineWebRTC::~MediaEngineWebRTC() [xpcom/base/StaticPtr.h:137]
14:02:13 INFO - #13: mozilla::MediaEngineWebRTC::~MediaEngineWebRTC() [memory/mozalloc/mozalloc.h:234]
14:02:13 INFO - #14: mozilla::MediaEngine::Release() [dom/media/webrtc/MediaEngine.h:55]
14:02:13 INFO - #15: mozilla::MediaManager::Observe(nsISupports*, char const*, char16_t const*) [dom/media/MediaManager.cpp:2028]
14:02:13 INFO - #16: nsObserverList::NotifyObservers(nsISupports*, char const*, char16_t const*) [xpcom/glue/nsTArray.h:330]
14:02:13 INFO - #17: nsObserverService::NotifyObservers(nsISupports*, char const*, char16_t const*) [xpcom/ds/nsObserverService.cpp:333]
14:02:13 INFO - #18: mozilla::ShutdownXPCOM(nsIServiceManager*) [xpcom/build/XPCOMInit.cpp:842]
14:02:13 INFO - #19: XRE_TermEmbedding [toolkit/xre/nsEmbedFunctions.cpp:207]
14:02:13 INFO - #20: mozilla::ipc::ScopedXREEmbed::Stop() [ipc/glue/ScopedXREEmbed.cpp:116]
14:02:13 INFO - #21: XRE_InitChildProcess [toolkit/xre/nsEmbedFunctions.cpp:576]
14:02:13 INFO - #22: content_process_main(int, char**) [ipc/contentproc/plugin-container.cpp:214]
14:02:13 INFO - #23: libc.so.6 + 0x2176d
14:02:13 INFO - #24: _start
Some facts that might or might not help:
* We're on the main thread, shutting down another thread (I noted "AudioGUM" from MediaEngineWebRTC, but not sure if it's relevant)
* While waiting for shutdown ack from "AudioGUM" we're processing main thread events - in the fail cases it's MediaStreamGraphStableStateRunnable.
* mCanRunMessagesSynchronously is set to false from two places (except on init), both on the main thread.
One is reset to true in the same scope so it can't be that one.
The other is at: http://dxr.mozilla.org/mozilla-central/source/dom/media/MediaStreamGraph.cpp#1722
> mCanRunMessagesSynchronously = mDetectedNotRunning &&
> mLifecycleState >= LIFECYCLE_WAITING_FOR_THREAD_SHUTDOWN;
* The condition for hitting the assert is:
http://dxr.mozilla.org/mozilla-central/source/dom/media/MediaStreamGraph.cpp#1776
> if (mDetectedNotRunning &&
> mLifecycleState > LIFECYCLE_WAITING_FOR_MAIN_THREAD_CLEANUP) {
> // The graph control loop is not running and main thread cleanup has
> // happened. From now on we can't append messages to mCurrentTaskMessageQueue,
> // because that will never be processed again, so just RunDuringShutdown
> // this message.
> // This should only happen during forced shutdown, or after a non-realtime
> // graph has finished processing.
> #ifdef DEBUG
> MOZ_ASSERT(mCanRunMessagesSynchronously);
* Life cycle state looks like:
http://dxr.mozilla.org/mozilla-central/source/dom/media/MediaStreamGraphImpl.h#578
> enum LifecycleState {
> // The graph thread hasn't started yet.
> LIFECYCLE_THREAD_NOT_STARTED,
> // RunThread() is running normally.
> LIFECYCLE_RUNNING,
> // In the following states, the graph thread is not running so
> // all "graph thread only" state in this class can be used safely
> // on the main thread.
> // RunThread() has exited and we're waiting for the next
> // RunInStableState(), at which point we can clean up the main-thread
> // side of the graph.
> LIFECYCLE_WAITING_FOR_MAIN_THREAD_CLEANUP,
> // RunInStableState() posted a ShutdownRunnable, and we're waiting for it
> // to shut down the graph thread(s).
> LIFECYCLE_WAITING_FOR_THREAD_SHUTDOWN,
> // Graph threads have shut down but we're waiting for remaining streams
> // to be destroyed. Only happens during application shutdown and on
> // completed non-realtime graphs, since normally we'd only shut down a
> // realtime graph when it has no streams.
> LIFECYCLE_WAITING_FOR_STREAM_DESTRUCTION
> };
* mDetectedNotRunning must have gone from false to true OR mLifecycleState from < LIFECYCLE_WAITING_FOR_THREAD_SHUTDOWN to >= LIFECYCLE_WAITING_FOR_THREAD_SHUTDOWN after setting mCanRunMessagesSynchronously but before the assert. Hmm. I can't find any cases where this would hold if the cycle finishes, but if we hit the assert before mCanRunMessagesSynchronously is set at all, it could work.
* The previous holds here:
http://dxr.mozilla.org/mozilla-central/source/dom/media/MediaStreamGraph.cpp#1689
> if ((mForceShutDown || !mRealtime) &&
> mLifecycleState == LIFECYCLE_WAITING_FOR_MAIN_THREAD_CLEANUP) {
> // Defer calls to RunDuringShutdown() to happen while mMonitor is not held.
> for (uint32_t i = 0; i < mBackMessageQueue.Length(); ++i) {
> MessageBlock& mb = mBackMessageQueue[i];
> controlMessagesToRunDuringShutdown.MoveElementsFrom(mb.mMessages);
> }
> mBackMessageQueue.Clear();
> MOZ_ASSERT(mCurrentTaskMessageQueue.IsEmpty());
> // Stop MediaStreamGraph threads. Do not clear gGraph since
> // we have outstanding DOM objects that may need it.
> --> mLifecycleState = LIFECYCLE_WAITING_FOR_THREAD_SHUTDOWN;
> nsCOMPtr<nsIRunnable> event = new MediaStreamGraphShutDownRunnable(this);
> NS_DispatchToMainThread(event);
> }
>
> --> mDetectedNotRunning = mLifecycleState > LIFECYCLE_RUNNING;
(...)
> for (uint32_t i = 0; i < controlMessagesToRunDuringShutdown.Length(); ++i) {
> --> controlMessagesToRunDuringShutdown[i]->RunDuringShutdown(); <-- ASSERT
> }
(...)
> mCanRunMessagesSynchronously = mDetectedNotRunning &&
> mLifecycleState >= LIFECYCLE_WAITING_FOR_THREAD_SHUTDOWN;
Ok, I must say that it looked damn hard to reproduce and debug at first, but I think I got BINGO on the analysis.
Assignee: nobody → pehrsons
Status: NEW → ASSIGNED
Flags: needinfo?(pehrsons)
Assignee | ||
Comment 11•10 years ago
|
||
Bug 1020411 is related, though I don't have access to it so I can't follow its discussion - would have been nice :/
(Also couldn't set it as 'See Also' due to not being authorized...)
Comment 12•10 years ago
|
||
You can now :)
Assignee | ||
Comment 13•10 years ago
|
||
Thanks!
(In reply to Andreas Pehrson [:pehrsons] (Telenor) from comment #10)
> > for (uint32_t i = 0; i < controlMessagesToRunDuringShutdown.Length(); ++i) {
> > --> controlMessagesToRunDuringShutdown[i]->RunDuringShutdown(); <-- ASSERT
Oh, this is wrong. DoNotifyOutput is an NS_NewRunnableMethod:
http://dxr.mozilla.org/mozilla-central/source/dom/html/HTMLMediaElement.cpp#2806
And NS_NewRunnableMethod doesn't have any RunDuringShutdown() override:
http://dxr.mozilla.org/mozilla-central/source/xpcom/glue/nsThreadUtils.h#408
Instead, the assert must be happening here:
http://dxr.mozilla.org/mozilla-central/source/dom/media/MediaStreamGraph.cpp#1715
> for (uint32_t i = 0; i < runnables.Length(); ++i) {
> runnables[i]->Run();
> }
(Which is obvious from the stack trace in comment 10 as well...)
Assignee | ||
Updated•10 years ago
|
Assignee | ||
Comment 14•10 years ago
|
||
Here's a candidate patch. I'm not completely sure this is allowed yet, but well.. try will tell if it's really bad at least :-p
https://treeherder.mozilla.org/#/jobs?repo=try&revision=eac1130afa18
Assignee | ||
Comment 15•10 years ago
|
||
(In reply to Andreas Pehrson [:pehrsons] (Telenor) from comment #14)
> Created attachment 8537965 [details] [diff] [review]
> Make sure mCanRunMessagesSynchronously is in sync with mDetectedNotRunning
>
> Here's a candidate patch. I'm not completely sure this is allowed yet, but
> well.. try will tell if it's really bad at least :-p
Having had another look I do think this patch is bad, because it would make ControlMessages appear out of order. I'll work on a proper fix tomorrow.
Comment 16•10 years ago
|
||
roc: you may want to look at this (roc wrote most of the shutdown code)
Flags: needinfo?(roc)
Comment hidden (Legacy TBPL/Treeherder Robot) |
Assignee | ||
Comment 18•10 years ago
|
||
I think this is a more appropriate patch. Since the update runnables are allowed to append messages we need to take care of them and run them in order with existing ControlMessages.
roc, what do you think of this approach? Could it be done simpler?
https://treeherder.mozilla.org/#/jobs?repo=try&revision=25bfbb12006e
Attachment #8537965 -
Attachment is obsolete: true
Attachment #8539264 -
Flags: feedback?(roc)
Comment on attachment 8539264 [details] [diff] [review]
Handle ControlMessages appended by update runnables during MSG shutdown initialisation
Review of attachment 8539264 [details] [diff] [review]:
-----------------------------------------------------------------
Looks good but MSG shutdown is tricky so requesting additional review from Karl.
Attachment #8539264 -
Flags: review?(karlt)
Attachment #8539264 -
Flags: feedback?(roc)
Attachment #8539264 -
Flags: feedback+
Comment 20•10 years ago
|
||
Comment on attachment 8539264 [details] [diff] [review]
Handle ControlMessages appended by update runnables during MSG shutdown initialisation
The goal of mCanRunMessagesSynchronously was to ensure that ControlMessages
(from AppendMessage()) ran in order, which can be particularly important
because they have only a raw pointer to their MediaStream.
Here it seems that an nsIRunnable from
mUpdateRunnables/DispatchToMainThreadAfterStreamStateUpdate() is calling
AppendMessage(), something that I unfortunately did not consider in bug
1020411. The assertion failure here may not be so bad in this particular situation because the ControlMessage is not from
MediaStream::Destroy(), but ControlMessages should still run in order, which
is what is being fixed here.
I wonder whether this could be simpler if there was just a reordering of the handling of runnables and controlMessagesToRunDuringShutdown so that
mCanRunMessagesSynchronously is updated after
controlMessagesToRunDuringShutdown are RunDuringShutdown() but before runnables are Run()?
I'm not aware of any reason that DispatchToMainThreadAfterStreamStateUpdate()
should ensure a runnable runs before any ControlMessages.
Removing review request for now, but please re-request if you still think this is the right approach.
Attachment #8539264 -
Flags: review?(karlt)
Comment hidden (Legacy TBPL/Treeherder Robot) |
I agree, reordering the code so the mUpdateRunnables run after the controlMessagesToRunDuringShutdown should work and be simpler.
Comment on attachment 8539264 [details] [diff] [review]
Handle ControlMessages appended by update runnables during MSG shutdown initialisation
Review of attachment 8539264 [details] [diff] [review]:
-----------------------------------------------------------------
changed status per above comments
Attachment #8539264 -
Flags: feedback+ → feedback-
Assignee | ||
Comment 24•10 years ago
|
||
All right, thanks for the reviews guys. This is a new patch per Karl's suggestion.
Looking good on try so far: https://treeherder.mozilla.org/ui/#/jobs?repo=try&revision=9d20ee878999
Attachment #8539264 -
Attachment is obsolete: true
Flags: needinfo?(roc)
Attachment #8545921 -
Flags: review?(roc)
Attachment #8545921 -
Flags: review?(karlt)
Updated•10 years ago
|
Attachment #8545921 -
Flags: review?(karlt) → review+
Attachment #8545921 -
Flags: review?(roc) → review+
Assignee | ||
Updated•10 years ago
|
Keywords: checkin-needed
Comment 25•10 years ago
|
||
Keywords: checkin-needed
Comment 26•10 years ago
|
||
Status: ASSIGNED → RESOLVED
Closed: 10 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla37
Comment 27•10 years ago
|
||
I think we're going to need Aurora36 and b2g34 approval requests on this :)
Flags: needinfo?(pehrsons)
Assignee | ||
Comment 28•10 years ago
|
||
Comment on attachment 8545921 [details] [diff] [review]
Let ControlMessages added by runnables in stable state be run during shutdown
[Approval Request Comment]
Bug caused by (feature/regressing bug #): MediaStreamGraph shutdown sequence (bug 1020411 related but not a cause)
User impact if declined: MediaStreamGraph ControlMessages could be run out of order, most likely without impact but possibly with unexpected behavior, e.g., crashes.
Testing completed: All tests using MediaStreams cover the patched code
Risk to taking this patch (and alternatives if risky): Low
String or UUID changes made by this patch: none
Flags: needinfo?(pehrsons)
Attachment #8545921 -
Flags: approval-mozilla-b2g34?
Attachment #8545921 -
Flags: approval-mozilla-aurora?
Updated•10 years ago
|
Attachment #8545921 -
Flags: approval-mozilla-aurora? → approval-mozilla-aurora+
Comment 29•10 years ago
|
||
Updated•10 years ago
|
Attachment #8545921 -
Flags: approval-mozilla-b2g34? → approval-mozilla-b2g34+
Comment 30•10 years ago
|
||
Comment 31•10 years ago
|
||
status-b2g-v2.1S:
--- → fixed
Updated•10 years ago
|
Flags: qe-verify-
You need to log in
before you can comment on or make changes to this bug.
Description
•