Closed
Bug 1002019
Opened 11 years ago
Closed 11 years ago
YouTube DASH player causes Nightly to hang when playing MP4
Categories
(Core :: Audio/Video, defect)
Tracking
()
RESOLVED
DUPLICATE
of bug 1002404
People
(Reporter: geeknik, Unassigned)
References
(Blocks 1 open bug)
Details
(Keywords: hang)
Attachments
(1 file)
74.38 KB,
application/x-zip-compressed
|
Details |
Like the summary says, if you enable Youtube's HTML5 player while having media.mediasource.enabled set to true, x64 Nightly for Windows freezes, quits responding, has to be force closed. Useful information taken from WinDbg:
0 Id: 1e54.78 Suspend: 1 Teb: 00007ff7`961ce000 Unfrozen
Child-SP RetAddr Call Site
00000000`00ccc500 00007fff`dd264f6b xul!mozilla::GetEstimatedBufferedTimeRanges(class mozilla::MediaResource * aStream = 0x00000000`455fde08, int64 aDurationUsecs = 1043898624, class mozilla::dom::TimeRanges * aOutBuffered = 0x00000000`512df300)+0x10b [c:\builds\moz2_slave\m-cen-w64-ntly-000000000000000\build\content\media\videoutils.cpp @ 96]
00000000`00ccc550 00007fff`dd2833cc xul!mozilla::MediaDecoderReader::GetBuffered(class mozilla::dom::TimeRanges * aBuffered = 0x00000000`4f219980, int64 aStartTime = 13420016)+0x6b [c:\builds\moz2_slave\m-cen-w64-ntly-000000000000000\build\content\media\mediadecoderreader.cpp @ 351]
00000000`00ccc580 00007fff`dcd2f4f8 xul!mozilla::dom::SourceBuffer::GetBuffered(class mozilla::ErrorResult * aRv = 0x00000000`3b4a3570)+0xc8 [c:\builds\moz2_slave\m-cen-w64-ntly-000000000000000\build\content\media\mediasource\sourcebuffer.cpp @ 192]
00000000`00ccc5d0 00007fff`dcdccf49 xul!mozilla::dom::SourceBufferBinding::get_buffered(struct JSContext * cx = 0x00000000`00cccc08, class JS::Handle<JSObject *> obj = class JS::Handle<JSObject *>, class mozilla::dom::SourceBuffer * self = 0x00000000`08f0e360, class JSJitGetterCallArgs args = class JSJitGetterCallArgs)+0x30 [c:\builds\moz2_slave\m-cen-w64-ntly-000000000000000\build\obj-firefox\dom\bindings\sourcebufferbinding.cpp @ 132]
00000000`00ccc620 00007fff`e8834eb5 xul!mozilla::dom::GenericBindingGetter(struct JSContext * cx = 0x00000000`00000000, unsigned int argc = 0xdcdccd9c, class JS::Value * vp = 0x00000000`4f219980)+0x1ad [c:\builds\moz2_slave\m-cen-w64-ntly-000000000000000\build\dom\bindings\bindingutils.cpp @ 2239]
00000000`00ccc6a0 00007fff`e8835297 mozjs!js::Invoke(struct JSContext * cx = 0x00000000`00cccc39, class JS::CallArgs * args = 0x00000000`00000000, js::MaybeConstruct construct = NO_CONSTRUCT (0))+0x2a5 [c:\builds\moz2_slave\m-cen-w64-ntly-000000000000000\build\js\src\vm\interpreter.cpp @ 475]
00000000`00cccb80 00007fff`e88358f2 mozjs!js::Invoke(struct JSContext * cx = 0xfffb8000`4b787980, class JS::Value * thisv = 0x00000000`3b4a3570, class JS::Value * fval = 0x00000000`00cccd10, unsigned int argc = 0xe8827585, class JS::Value * argv = 0x00000000`00000000, class JS::MutableHandle<JS::Value> rval = class JS::MutableHandle<JS::Value>)+0x217 [c:\builds\moz2_slave\m-cen-w64-ntly-000000000000000\build\js\src\vm\interpreter.cpp @ 531]
00000000`00cccc90 00007fff`e8771ca3 mozjs!js::InvokeGetterOrSetter(struct JSContext * cx = 0xfffb8000`4b752e80, class JSObject * obj = 0x00000000`3b4a3570, class JS::Value fval = class JS::Value, unsigned int argc = 0x3b4a3570, class JS::Value * argv = 0x00000000`00000000, class JS::MutableHandle<JS::Value> rval = class JS::MutableHandle<JS::Value>)+0x92 [c:\builds\moz2_slave\m-cen-w64-ntly-000000000000000\build\js\src\vm\interpreter.cpp @ 604]
00000000`00ccccd0 00007fff`e87a6239 mozjs!js::Shape::get(struct JSContext * cx = 0x00000000`3b4a3570, class JS::Handle<JSObject *> receiver = class JS::Handle<JSObject *>, class JSObject * obj = 0x00000000`091990b8, class JSObject * pobj = 0x00000000`4b7e6130, class JS::MutableHandle<JS::Value> vp = class JS::MutableHandle<JS::Value>)+0x73 [c:\builds\moz2_slave\m-cen-w64-ntly-000000000000000\build\js\src\vm\shape-inl.h @ 51]
00000000`00cccd60 00007fff`e883ec02 mozjs!js::baseops::GetProperty(struct JSContext * cx = 0x00000000`3b4a3570, class JS::Handle<JSObject *> obj = class JS::Handle<JSObject *>, class JS::Handle<JSObject *> receiver = class JS::Handle<JSObject *>, class JS::Handle<jsid> id = class JS::Handle<jsid>, class JS::MutableHandle<JS::Value> vp = class JS::MutableHandle<JS::Value>)+0xa59 [c:\builds\moz2_slave\m-cen-w64-ntly-000000000000000\build\js\src\jsobj.cpp @ 4507]
00000000`00cccee0 00007fff`e8845c75 mozjs!GetPropertyOperation(struct JSContext * cx = 0x00000000`3b4a3570, class js::InterpreterFrame * fp = 0x00000000`09199021, class JS::Handle<JSScript *> script = class JS::Handle<JSScript *>, unsigned char * pc = 0x00000000`00000000 "", class JS::MutableHandle<JS::Value> lval = class JS::MutableHandle<JS::Value>, class JS::MutableHandle<JS::Value> vp = class JS::MutableHandle<JS::Value>)+0x292 [c:\builds\moz2_slave\m-cen-w64-ntly-000000000000000\build\js\src\vm\interpreter.cpp @ 265]
00000000`00cccfa0 00007fff`e8829f16 mozjs!Interpret(struct JSContext * cx = 0x00000000`3b4a3570, class js::RunState * state = 0x00000000`00000001)+0x34a5 [c:\builds\moz2_slave\m-cen-w64-ntly-000000000000000\build\js\src\vm\interpreter.cpp @ 2415]
00000000`00ccdc80 00007fff`e883503e mozjs!js::RunScript(struct JSContext * cx = 0x00000000`00cce278, class js::RunState * state = 0x00007fff`ffffffff)+0x156 [c:\builds\moz2_slave\m-cen-w64-ntly-000000000000000\build\js\src\vm\interpreter.cpp @ 422]
00000000`00ccdcc0 00007fff`e8785776 mozjs!js::Invoke(struct JSContext * cx = 0x00000000`00cce2a0, class JS::CallArgs * args = 0x00000000`00000000, js::MaybeConstruct construct = NO_CONSTRUCT (0))+0x42e [c:\builds\moz2_slave\m-cen-w64-ntly-000000000000000\build\js\src\vm\interpreter.cpp @ 497]
00000000`00cce1a0 00007fff`e8834eb5 mozjs!js::CallOrConstructBoundFunction(struct JSContext * cx = 0x00000000`3b4a3570, unsigned int argc = 0, class JS::Value * vp = 0x00000000`00cce3e1)+0x256 [c:\builds\moz2_slave\m-cen-w64-ntly-000000000000000\build\js\src\jsfun.cpp @ 1282]
00000000`00cce2e0 00007fff`e8835297 mozjs!js::Invoke(struct JSContext * cx = 0x00000000`00cce879, class JS::CallArgs * args = 0x00000000`00cce9e8, js::MaybeConstruct construct = 1 (No matching enumerant))+0x2a5 [c:\builds\moz2_slave\m-cen-w64-ntly-000000000000000\build\js\src\vm\interpreter.cpp @ 475]
00000000`00cce7c0 00007fff`e8749091 mozjs!js::Invoke(struct JSContext * cx = 0x00000000`00cce998, class JS::Value * thisv = 0x00000000`00cce998, class JS::Value * fval = 0x00000000`00000001, unsigned int argc = 0xdcc25784, class JS::Value * argv = 0x00000000`00cce9e8, class JS::MutableHandle<JS::Value> rval = class JS::MutableHandle<JS::Value>)+0x217 [c:\builds\moz2_slave\m-cen-w64-ntly-000000000000000\build\js\src\vm\interpreter.cpp @ 531]
00000000`00cce8d0 00007fff`dcba713d mozjs!JS::Call(struct JSContext * cx = 0x00000000`00cceca0, class JS::Handle<JS::Value> thisv = class JS::Handle<JS::Value>, class JS::Handle<JS::Value> fval = class JS::Handle<JS::Value>, class JS::HandleValueArray * args = 0x00000000`3b4a35d0, class JS::MutableHandle<JS::Value> rval = class JS::MutableHandle<JS::Value>)+0x51 [c:\builds\moz2_slave\m-cen-w64-ntly-000000000000000\build\js\src\jsapi.cpp @ 5061]
00000000`00cce920 00007fff`dcfd17e7 xul!mozilla::dom::EventListener::HandleEvent(struct JSContext * cx = 0x00000000`00cceac0, class JS::Handle<JS::Value> aThisVal = class JS::Handle<JS::Value>, class mozilla::dom::Event * event = 0x00000000`00000000, class mozilla::ErrorResult * aRv = 0x00000000`00cceca0)+0x191 [c:\builds\moz2_slave\m-cen-w64-ntly-000000000000000\build\obj-firefox\dom\bindings\eventlistenerbinding.cpp @ 46]
00000000`00ccea80 00007fff`dcfd1b60 xul!mozilla::dom::EventListener::HandleEvent<mozilla::dom::EventTarget * __ptr64>(class mozilla::dom::EventTarget ** thisObjPtr = 0x00007fff`f6546f80, class mozilla::dom::Event * event = 0x00000000`00d803c0, class mozilla::ErrorResult * aRv = 0x00000000`45b664d0, mozilla::dom::CallbackObject::ExceptionHandling aExceptionHandling = eReportExceptions (0))+0x197 [c:\builds\moz2_slave\m-cen-w64-ntly-000000000000000\build\obj-firefox\dist\include\mozilla\dom\eventlistenerbinding.h @ 53]
Full WinDbg log attached. If I disable the HTML5 player on Youtube, videos work just fine, Nightly doesn't hang, quit responding, etc.
Comment 1•11 years ago
|
||
From the stack trace it looks like it's instantiating Windows Media Foundation stuff so maybe it's trying to use the OS MP4 decoders. I suspect that combination does not currently work with MSE.
Comment 2•11 years ago
|
||
Did you also set media.mediasource.ignore_codecs to true? Can you please include a link to a video you're seeing the bug with?
Reporter | ||
Comment 3•11 years ago
|
||
(In reply to Matthew Gregan [:kinetik] from comment #2)
> Did you also set media.mediasource.ignore_codecs to true? Can you please
> include a link to a video you're seeing the bug with?
No, and every video on YouTube. I did go ahead and set media.mediasource.ignore_codecs to true, and I got the same behavior. Firefox hangs and is completely unresponsive and has to be killed.
Comment 4•11 years ago
|
||
I tested with a 32-bit build of Win 8.1 and was served WebM (with no hang), but the stack trace you provided suggests the MP4 decoding stack is involved, so please provide a link to a specific YouTube video that produces the hang shown by the stack attached in the bug's initial comment.
Reporter | ||
Comment 5•11 years ago
|
||
Comment 6•11 years ago
|
||
Thanks. So that video is offered with DASH but only with MP4:
From youtube-dl -F -s:
format code extension resolution note
139 m4a audio only DASH audio 50k , audio@ 48k (22050Hz), 11.64MiB (worst)
140 m4a audio only DASH audio 129k , audio@128k (44100Hz), 31.09MiB
141 m4a audio only DASH audio 257k , audio@256k (44100Hz), 62.41MiB
160 mp4 256x144 DASH video 117k , video only, 26.76MiB
133 mp4 426x240 DASH video 265k , video only, 59.73MiB
134 mp4 640x360 DASH video 614k , video only, 132.86MiB
135 mp4 854x480 DASH video 1129k , video only, 250.50MiB
136 mp4 1280x720 DASH video 2251k , video only, 497.85MiB
137 mp4 1920x1080 DASH video 4348k , video only, 935.74MiB
17 3gp 176x144
36 3gp 320x240
5 flv 400x240
18 mp4 640x360
43 webm 640x360
22 mp4 1280x720 (best)
...the only WebM is non-DASH 360p.
The codec whitelist change (to include only WebM for MSE) I just landed in bug 1000686 should stop this being hit, and you should see YouTube fall back to non-DASH playback for this video. I'll leave this bug open to deal with the actual hang, but anything MP4 related is lower priority than other MSE bugs right now.
Updated•11 years ago
|
Summary: Enabling Youtube's HTML5 player w/ media.mediasource.enabled = true causes Nightly to freeze, hang, quit responding → YouTube DASH player causes Nightly to hang when playing MP4
Reporter | ||
Comment 7•11 years ago
|
||
(In reply to Matthew Gregan [:kinetik] from comment #6)
> The codec whitelist change (to include only WebM for MSE) I just landed in
> bug 1000686 should stop this being hit, and you should see YouTube fall back
> to non-DASH playback for this video. I'll leave this bug open to deal with
> the actual hang, but anything MP4 related is lower priority than other MSE
> bugs right now.
So I'm running an hourly build with your codec whitelist change in it, and now when I set media.mediasource.enabled to true and enable the HTML5 player on YouTube, the videos are just black. I can hear audio, but there is no video. Example: https://www.youtube.com/watch?v=XoE-0-X03Qo.
Should I file a new bug or is this something else?
Comment 8•11 years ago
|
||
Thanks for testing. That sounds like bug 1002404.
Comment 9•11 years ago
|
||
Can you please indicate if you're still experiencing this issue ?
Reporter | ||
Comment 10•11 years ago
|
||
I'm unable to provide that information, so please close/resolve as necessary.
Updated•11 years ago
|
Status: NEW → RESOLVED
Closed: 11 years ago
Resolution: --- → DUPLICATE
You need to log in
before you can comment on or make changes to this bug.
Description
•