Closed Bug 1333178 Opened 7 years ago Closed 7 years ago

Installing Widevine for first time viewing hangs browser

Categories

(Core :: Audio/Video: Playback, defect)

53 Branch
Unspecified
macOS
defect
Not set
major

Tracking

()

RESOLVED DUPLICATE of bug 1323566
Tracking Status
firefox52 --- affected

People

(Reporter: haik, Unassigned)

Details

This is reproducible for me on Mac on Nightly/53 and Aurora/52.

On a fresh profile, when I attempt to watch a streaming video on Amazon.com, the banner comes up to indicate that something is being installed ("Nightly is installing components needed to play the audio or video on this page..."), but it never goes away and the browser appears to be hung.

The main thread in the content process is blocked here.

(lldb) bt
* thread #1: tid = 0x4a77ea, 0x00007fffc3699cb6 libsystem_kernel.dylib`__psynch_mutexwait + 10, stop reason = signal SIGSTOP
  * frame #0 libsystem_kernel.dylib`__psynch_mutexwait() 
    frame #1 libsystem_pthread.dylib`_pthread_mutex_lock_wait() 
    frame #2 libnss3.dylib`PR_Lock() at ptsynch.c:177
    frame #3 XUL`mozilla::gmp::GeckoMediaPluginServiceChild::HasPluginForAPI() at Mutex.h:164
    frame #4 XUL`mozilla::gmp::GeckoMediaPluginServiceChild::HasPluginForAPI() at Mutex.h:161
    frame #5 XUL`mozilla::gmp::GeckoMediaPluginServiceChild::HasPluginForAPI() at GMPServiceChild.cpp:229
    frame #6 XUL`mozilla::HaveGMPFor() at GMPUtils.cpp:222
    frame #7 XUL`mozilla::dom::EnsureCDMInstalled() at MediaKeySystemAccess.cpp:103
    frame #8 XUL`mozilla::dom::EnsureCDMInstalled() at MediaKeySystemAccess.cpp:118
    frame #9 XUL`mozilla::dom::MediaKeySystemAccess::GetKeySystemStatus() at MediaKeySystemAccess.cpp:167
    frame #10 XUL`mozilla::dom::MediaKeySystemAccessManager::Observe() at MediaKeySystemAccessManager.cpp:277
    frame #11 XUL`nsObserverService::NotifyObservers() at nsObserverList.cpp:112
    frame #12 XUL`nsObserverService::NotifyObservers() at nsObserverService.cpp:281
    frame #13 XUL`mozilla::gmp::GeckoMediaPluginServiceChild::UpdateGMPCapabilities() at GMPServiceChild.cpp:220
    frame #14 XUL`mozilla::dom::ContentChild::RecvGMPsChanged() at ContentChild.cpp:1187
    frame #15 XUL`mozilla::dom::PContentChild::OnMessageReceived() at PContentChild.cpp:8831
    frame #16 XUL`mozilla::ipc::MessageChannel::DispatchAsyncMessage() at MessageChannel.cpp:1743
    frame #17 XUL`mozilla::ipc::MessageChannel::DispatchMessage() at MessageChannel.cpp:1681
    frame #18 XUL`mozilla::ipc::MessageChannel::MessageTask::Run() at MessageChannel.cpp:1597
    frame #19 XUL`nsThread::ProcessNextEvent() at nsThread.cpp:1216
    frame #20 XUL`NS_ProcessPendingEvents() at nsThreadUtils.cpp:303
    frame #21 XUL`nsBaseAppShell::NativeEventCallback() at nsBaseAppShell.cpp:97
    frame #22 XUL`nsAppShell::ProcessGeckoEvents() at nsAppShell.mm:392
    frame #23 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__() 
    frame #24 CoreFoundation`__CFRunLoopDoSources0() 
    frame #25 CoreFoundation`__CFRunLoopRun() 
    frame #26 CoreFoundation`CFRunLoopRunSpecific() 
    frame #27 HIToolbox`RunCurrentEventLoopInMode() 
    frame #28 HIToolbox`ReceiveNextEventCommon() 
    frame #29 HIToolbox`_BlockUntilNextEventMatchingListInModeWithFilter() 
    frame #30 AppKit`_DPSNextEvent() 
    frame #31 AppKit`-[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:]() 
    frame #32 XUL`::-[GeckoNSApplication nextEventMatchingMask:untilDate:inMode:dequeue:](NSEventMask, NSDate *, NSString *, BOOL)() at nsAppShell.mm:128
    frame #33 AppKit`-[NSApplication run]() 
    frame #34 XUL`nsAppShell::Run() at nsAppShell.mm:666
    frame #35 XUL`::XRE_RunAppShell()() at nsEmbedFunctions.cpp:869
    frame #36 XUL`MessageLoop::Run() at message_loop.cc:232
    frame #37 XUL`MessageLoop::Run() at message_loop.cc:225
    frame #38 XUL`MessageLoop::Run() at message_loop.cc:205
    frame #39 XUL`::XRE_InitChildProcess(int, char **, const XREChildData *)() at nsEmbedFunctions.cpp:701
    frame #40 plugin-container`content_process_main() at plugin-container.cpp:197
    frame #41 plugin-container`start()
This is the same recursive mutex enter hang discussed on Bug 1323566 - "Incorrect index usage in MediaKeySystemAccessManager::Observe()" in comment 4.

I tested the fix for 1323566 (which drops the lock earlier in GeckoMediaPluginServiceChild::UpdateGMPCapabilities() to avoid the recursive mutex entry) and that appeared to fix the problem for me on 52.

After re-testing on Nightly/53, I found the problem was not in fact reproducible for me on 53 after all.

Closing this as a dupe of 1323566. Need uplift of 1323566 to 52.
Status: NEW → RESOLVED
Closed: 7 years ago
Resolution: --- → DUPLICATE
You need to log in before you can comment on or make changes to this bug.