Open Bug 1545037 Opened 6 years ago Updated 3 years ago

Decoding does not recover after crashing RDD process

Categories

(Core :: Audio/Video: Playback, enhancement, P3)

66 Branch
enhancement

Tracking

()

People

(Reporter: achronop, Unassigned)

Details

While testing the crash on Bug 1540830 I get the following behavior. When the error was reproduced, and the RDD process crashed, the content process shows the "not support icon". Refreshing the tab continues showing the same message/icon. If the video was loaded on more than one tabs, any attempt to playback on any tab which video is loaded would fail with that message.

It would be nice if we had a mechanism to detect that the RDD process has crashed and to trigger a new one, maybe after refresh. I am not aware of the details so I will mark this bug as an enhancement.

Also, during shutdown I am getting the following crash in the content process:

[Child 22549, Main Thread] ###!!! ABORT: file /home/achronop/myrepos/mozilla/firefox/dom/media/MediaShutdownManager.cpp, line 75
Hit MOZ_CRASH() at /home/achronop/myrepos/mozilla/firefox/memory/mozalloc/mozalloc_abort.cpp:33

Program /home/achronop/myrepos/mozilla/firefox/obj-firefox-debug-opt/dist/bin/firefox (pid = 22549) received signal 11.
Stack:

#0  0x00007f362e240570 in __GI___nanosleep (requested_time=requested_time@entry=0x7ffc6a8e2840, remaining=remaining@entry=0x7ffc6a8e2840) at ../sysdeps/unix/sysv/linux/nanosleep.c:27
#1  0x00007f362e24047a in __sleep (seconds=0) at ../sysdeps/posix/sleep.c:55
#2  0x00007f361ef929cc in ah_crap_handler(int) (signum=11) at /home/achronop/myrepos/mozilla/firefox/toolkit/xre/nsSigHandlers.cpp:95
#3  0x00007f361ef92aa5 in child_ah_crap_handler(int) (signum=11) at /home/achronop/myrepos/mozilla/firefox/toolkit/xre/nsSigHandlers.cpp:105
#4  0x00007f361fe74ca7 in WasmTrapHandler(int, siginfo_t*, void*) (signum=11, info=0x7ffc6a8e2a70, context=<optimized out>) at /home/achronop/myrepos/mozilla/firefox/js/src/wasm/WasmSignalHandlers.cpp:962
#5  0x00007f362f0331c0 in <signal handler called> () at /lib64/libpthread.so.0
#6  0x0000564e5c3d2d76 in mozalloc_abort(char const*) (msg=<optimized out>) at /home/achronop/myrepos/mozilla/firefox/memory/mozalloc/mozalloc_abort.cpp:33
#7  0x00007f361b0e1a9e in Abort(char const*) (aMsg=<optimized out>) at /home/achronop/myrepos/mozilla/firefox/xpcom/base/nsDebugImpl.cpp:439
#8  0x00007f361b0e1a9e in NS_DebugBreak(uint32_t, char const*, char const*, char const*, int32_t) (aSeverity=<optimized out>, aStr=0x0, aExpr=0x0, aFile=0x7f360477e060 "/home/achronop/myrepos/mozilla/firefox/dom/media/MediaShutdownManager.cpp", aLine=75) at /home/achronop/myrepos/mozilla/firefox/xpcom/base/nsDebugImpl.cpp:429
#9  0x00007f361b0e1b26 in nsDebugImpl::Abort(char const*, int) (this=<optimized out>, aFile=0x564e5c401950 <gMozCrashReason> "\272\374>\\NV", aLine=777189520)
    at /home/achronop/myrepos/mozilla/firefox/xpcom/base/nsDebugImpl.cpp:133
#10 0x00007f361b1cfc2e in NS_InvokeByIndex () at /home/achronop/myrepos/mozilla/firefox/xpcom/reflect/xptcall/md/unix/xptcinvoke_asm_x86_64_unix.S:129
#11 0x00007f361bc69430 in CallMethodHelper::Invoke() (this=<optimized out>) at /home/achronop/myrepos/mozilla/firefox/js/xpconnect/src/XPCWrappedNative.cpp:1624
#12 0x00007f361bc69430 in CallMethodHelper::Call() (this=0x7ffc6a8e3440) at /home/achronop/myrepos/mozilla/firefox/js/xpconnect/src/XPCWrappedNative.cpp:1171
#13 0x00007f361bc5987b in XPCWrappedNative::CallMethod(XPCCallContext&, XPCWrappedNative::CallMode) (ccx=..., mode=<optimized out>)
    at /home/achronop/myrepos/mozilla/firefox/js/xpconnect/src/XPCWrappedNative.cpp:1137
#14 0x00007f361bc5a98b in XPC_WN_CallMethod(JSContext*, unsigned int, JS::Value*) (cx=<optimized out>, argc=<optimized out>, vp=<optimized out>)
    at /home/achronop/myrepos/mozilla/firefox/js/xpconnect/src/XPCWrappedNativeJSOps.cpp:942
#15 0x00007f361f0b7115 in CallJSNative(JSContext*, bool (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&) (cx=0x7f3610324000, native=0x7f361bc5a702 <XPC_WN_CallMethod(JSContext*, unsigned int, JS::Value*)>, args=...) at /home/achronop/myrepos/mozilla/firefox/js/src/vm/Interpreter.cpp:442
#16 0x00007f361f0a715f in js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct) (cx=0x7f3610324000, args=..., construct=js::NO_CONSTRUCT)
    at /home/achronop/myrepos/mozilla/firefox/js/src/vm/Interpreter.cpp:534
#17 0x00007f361f09ce73 in js::CallFromStack(JSContext*, JS::CallArgs const&) (cx=0x7f3610324000, args=...) at /home/achronop/myrepos/mozilla/firefox/js/src/vm/Interpreter.cpp:593
#18 0x00007f361f09ce73 in Interpret(JSContext*, js::RunState&) (cx=<optimized out>, state=...) at /home/achronop/myrepos/mozilla/firefox/js/src/vm/Interpreter.cpp:3072
#19 0x00007f361f093bcd in js::RunScript(JSContext*, js::RunState&) (cx=0x7f3610324000, state=...) at /home/achronop/myrepos/mozilla/firefox/js/src/vm/Interpreter.cpp:422
#20 0x00007f361f0a70d7 in js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct) (cx=0x7f3610324000, args=..., construct=js::NO_CONSTRUCT)
    at /home/achronop/myrepos/mozilla/firefox/js/src/vm/Interpreter.cpp:562
#21 0x00007f361f0a7d6d in js::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, js::AnyInvokeArgs const&, JS::MutableHandle<JS::Value>) (cx=0x7f362e52e660 <_IO_2_1_stderr_>, fval=..., thisv=..., args=..., rval=...) at /home/achronop/myrepos/mozilla/firefox/js/src/vm/Interpreter.cpp:605
#22 0x00007f361f17907c in js::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, JS::Handle<JS::Value>, JS::MutableHandle<JS::Value>) (cx=0x7f3610324000, fval=..., thisv=..., arg0=..., rval=...)
    at /home/achronop/myrepos/mozilla/firefox/js/src/vm/Interpreter.h:98
#23 0x00007f361f16e5ed in PromiseReactionJob(JSContext*, unsigned int, JS::Value*) (cx=0x7f3610324000, argc=<optimized out>, vp=<optimized out>)
    at /home/achronop/myrepos/mozilla/firefox/js/src/builtin/Promise.cpp:1702
#24 0x00007f361f0b7115 in CallJSNative(JSContext*, bool (*)(JSContext*, unsigned int, JS::Value*), JS::CallArgs const&) (cx=0x7f3610324000, native=0x7f361f16d650 <PromiseReactionJob(JSContext*, unsigned int, JS::Value*)>, args=...) at /home/achronop/myrepos/mozilla/firefox/js/src/vm/Interpreter.cpp:442
#25 0x00007f361f0a715f in js::InternalCallOrConstruct(JSContext*, JS::CallArgs const&, js::MaybeConstruct) (cx=0x7f3610324000, args=..., construct=js::NO_CONSTRUCT)
    at /home/achronop/myrepos/mozilla/firefox/js/src/vm/Interpreter.cpp:534
#26 0x00007f361f0a7d6d in js::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, js::AnyInvokeArgs const&, JS::MutableHandle<JS::Value>) (cx=0x7f362e52e660 <_IO_2_1_stderr_>, fval=..., thisv=..., args=..., rval=...) at /home/achronop/myrepos/mozilla/firefox/js/src/vm/Interpreter.cpp:605
#27 0x00007f361f690274 in JS::Call(JSContext*, JS::Handle<JS::Value>, JS::Handle<JS::Value>, JS::HandleValueArray const&, JS::MutableHandle<JS::Value>) (cx=0x7f3610324000, thisv=..., fval=..., args=..., rval=...) at /home/achronop/myrepos/mozilla/firefox/js/src/jsapi.cpp:2620
#28 0x00007f361c7df970 in mozilla::dom::PromiseJobCallback::Call(JSContext*, JS::Handle<JS::Value>, mozilla::ErrorResult&) (this=<optimized out>, cx=0x7f362e52e660 <_IO_2_1_stderr_>, aThisVal=..., aRv=...)
    at /home/achronop/myrepos/mozilla/firefox/obj-firefox-debug-opt/dom/bindings/PromiseBinding.cpp:26
#29 0x00007f361b0f6032 in mozilla::dom::PromiseJobCallback::Call(mozilla::ErrorResult&, char const*, mozilla::dom::CallbackObject::ExceptionHandling, JS::Realm*) (this=
    0x7f3604705100, aRv=..., aExecutionReason=<optimized out>, aExceptionHandling=<optimized out>, aRealm=<optimized out>)
    at /home/achronop/myrepos/mozilla/firefox/obj-firefox-debug-opt/dist/include/mozilla/dom/PromiseBinding.h:91
#30 0x00007f361b0f517d in mozilla::dom::PromiseJobCallback::Call(char const*) (this=0x7f3604705100, aExecutionReason=0x0)
    at /home/achronop/myrepos/mozilla/firefox/obj-firefox-debug-opt/dist/include/mozilla/dom/PromiseBinding.h:104
#31 0x00007f361b0f517d in mozilla::PromiseJobRunnable::Run(mozilla::AutoSlowOperation&) (this=<optimized out>, aAso=...) at /home/achronop/myrepos/mozilla/firefox/xpcom/base/CycleCollectedJSContext.cpp:236
#32 0x00007f361b0e3190 in mozilla::CycleCollectedJSContext::PerformMicroTaskCheckPoint(bool) (this=0x7f361041e000, aForce=<optimized out>)

(In reply to Alex Chronopoulos [:achronop] from comment #0)

While testing the crash on Bug 1540830 I get the following behavior. When the error was reproduced, and the RDD process crashed, the content process shows the "not support icon". Refreshing the tab will continue showing the same message/icon. If the video was loaded on more than one tabs, any attempt to playback on any tab which video is loaded would fail with that message.

It would be nice if we had a mechanism to detect that the RDD process has crashed and to trigger a new one, maybe after refresh. I am not aware of the details so I will mark this bug as an enhancement.

Typically, the RDD process does relaunch with a refresh, so I'm curious what is different in this case.

Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.