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)

x86_64
Windows 8.1
defect
Not set
critical

Tracking

()

RESOLVED DUPLICATE of bug 1002404

People

(Reporter: geeknik, Unassigned)

References

(Blocks 1 open bug)

Details

(Keywords: hang)

Attachments

(1 file)

Attached file windbg log file
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.
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.
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?
(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.
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.
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.
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
(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?
Thanks for testing. That sounds like bug 1002404.
Can you please indicate if you're still experiencing this issue ?
I'm unable to provide that information, so please close/resolve as necessary.
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.

Attachment

General

Created:
Updated:
Size: