Closed Bug 1677817 Opened 4 years ago Closed 4 years ago

GMPParent::Init() crash due to Preferences::GetBool() call off main thread

Categories

(Core :: Audio/Video: GMP, defect, P1)

ARM64
macOS
defect

Tracking

()

VERIFIED FIXED
85 Branch
Tracking Status
firefox-esr78 --- unaffected
firefox82 --- unaffected
firefox83 --- unaffected
firefox84 + verified
firefox85 + verified

People

(Reporter: haik, Assigned: haik)

Details

Attachments

(1 file)

GMPParent::Init() calls Preferences::GetBool() call off main thread which causes the assertion failure below and is likely to be causing _pthread_join crashes: https://crash-stats.mozilla.org/report/index/ee5b5933-e37e-4ccb-971e-1d0d60201117

Assertion failure: sInServoTraversal || NS_IsMainThread(), at /Users/haftandilian/r/mc/obj-db.noindex/dist/include/mozilla/ServoUtils.h:33
#01: mozilla::IsInServoTraversal() (.cold.1)[/Users/haftandilian/r/mc/obj-db.noindex/toolkit/library/build/XUL +0x83740e0]
#02: AddAccessCount(nsTSubstring<char> const&)[/Users/haftandilian/r/mc/obj-db.noindex/toolkit/library/build/XUL +0x272a40]
#03: mozilla::ServoStyleSet::IsInServoTraversal()[/Users/haftandilian/r/mc/obj-db.noindex/toolkit/library/build/XUL +0x21d698]
#04: mozilla::Preferences::InitStaticMembers()[/Users/haftandilian/r/mc/obj-db.noindex/toolkit/library/build/XUL +0x224fd8]
#05: nsresult mozilla::Internals::GetPrefValue<bool*>(char const*, bool*&&, mozilla::PrefValueKind)[/Users/haftandilian/r/mc/obj-db.noindex/toolkit/library/build/XUL +0x27e9f0]
#06: bool mozilla::Internals::GetPref<bool>(char const*, bool, mozilla::PrefValueKind)[/Users/haftandilian/r/mc/obj-db.noindex/toolkit/library/build/XUL +0x26a264]
#07: mozilla::Preferences::GetBool(char const*, bool, mozilla::PrefValueKind)[/Users/haftandilian/r/mc/obj-db.noindex/toolkit/library/build/XUL +0x26a22c]
#08: mozilla::gmp::GMPParent::Init(mozilla::gmp::GeckoMediaPluginServiceParent*, nsIFile*)[/Users/haftandilian/r/mc/obj-db.noindex/toolkit/library/build/XUL +0x2f32238]
#09: mozilla::gmp::GeckoMediaPluginServiceParent::AddOnGMPThread(nsTString<char16_t>)[/Users/haftandilian/r/mc/obj-db.noindex/toolkit/library/build/XUL +0x2f6b28c]
#10: decltype(*(fp).*fp0(Get<0ul>(fp1).PassAsParameter())) mozilla::detail::RunnableMethodArguments<StoreCopyPassByRRef<nsTString<char16_t> > >::applyImpl<mozilla::gmp::GeckoMediaPluginServiceParent, RefPtr<mozilla::MozPromise<bool, nsresult, true> > (mozilla:[/Users/haftandilian/r/mc/obj-db.noindex/toolkit/library/build/XUL +0x2f8e86c]
#11: _ZN7mozilla6detail23RunnableMethodArgumentsIJ19StoreCopyPassByRRefI9nsTStringIDsEEEE5applyINS_3gmp29GeckoMediaPluginServiceParentEMS9_F6RefPtrINS_10MozPromiseIb8nsresultLb1EEEES4_EEEDTcl9applyImplfp_fp0_dtdefpT10mArgumentstlNSt3__116integer_sequenceImJLm0[/Users/haftandilian/r/mc/obj-db.noindex/toolkit/library/build/XUL +0x2f8e800]
#12: mozilla::detail::MethodCall<mozilla::MozPromise<bool, nsresult, true>, RefPtr<mozilla::MozPromise<bool, nsresult, true> > (mozilla::gmp::GeckoMediaPluginServiceParent::*)(nsTString<char16_t>), mozilla::gmp::GeckoMediaPluginServiceParent, StoreCopyPassByRR[/Users/haftandilian/r/mc/obj-db.noindex/toolkit/library/build/XUL +0x2f8e778]
#13: mozilla::detail::ProxyRunnable<mozilla::MozPromise<bool, nsresult, true>, RefPtr<mozilla::MozPromise<bool, nsresult, true> > (mozilla::gmp::GeckoMediaPluginServiceParent::*)(nsTString<char16_t>), mozilla::gmp::GeckoMediaPluginServiceParent, StoreCopyPassB[/Users/haftandilian/r/mc/obj-db.noindex/toolkit/library/build/XUL +0x2f8e584]
#14: nsThread::ProcessNextEvent(bool, bool*)[/Users/haftandilian/r/mc/obj-db.noindex/toolkit/library/build/XUL +0x1c59cc]
#15: NS_ProcessNextEvent(nsIThread*, bool)[/Users/haftandilian/r/mc/obj-db.noindex/toolkit/library/build/XUL +0x1ca3b0]
#16: mozilla::ipc::MessagePumpForNonMainThreads::Run(base::MessagePump::Delegate*)[/Users/haftandilian/r/mc/obj-db.noindex/toolkit/library/build/XUL +0xa229b0]
#17: MessageLoop::RunInternal()[/Users/haftandilian/r/mc/obj-db.noindex/toolkit/library/build/XUL +0x9a9464]
#18: MessageLoop::RunHandler()[/Users/haftandilian/r/mc/obj-db.noindex/toolkit/library/build/XUL +0x9a93e0]
#19: MessageLoop::Run()[/Users/haftandilian/r/mc/obj-db.noindex/toolkit/library/build/XUL +0x9a938c]
#20: nsThread::ThreadFunc(void*)[/Users/haftandilian/r/mc/obj-db.noindex/toolkit/library/build/XUL +0x1c31b4]
#21: _pt_root[/Users/haftandilian/r/mc/obj-db.noindex/dist/NightlyDebug.app/Contents/MacOS/libnss3.dylib +0xd70f4]
#22: _pthread_start[/usr/lib/system/libsystem_pthread.dylib +0x706c]
[RDD 57523, Main Thread] WARNING: Shutting down RDD process early due to a crash!: file /Users/haftandilian/r/mc/dom/media/ipc/RDDParent.cpp:236
Exiting due to channel error.
Exiting due to channel error.
Exiting due to channel error.
Crash Annotation GraphicsCriticalError: |[C0][GFX1-]: Receive IPC close with reason=AbnormalShutdown (t=101.531) [Socket 57512, Main Thread] WARNING: Shutting down Socket process early due to a crash!: file /Users/haftandilian/r/mc/netwerk/ipc/SocketProcessChild.cpp:158
Crash Annotation GraphicsCriticalError: |[C0][GFX1-]: Receive IPC close with reason=AbnormalShutdown (t=104.026) [GFX1-]: Receive IPC close with reason=AbnormalShutdown
Exiting due to channel error.
Assignee: nobody → haftandilian
Severity: -- → S1

Use static prefs for the Rosetta GMP plugin checks to allow them to be safely accessed off the main thread.

[Tracking Requested - why for this release]: Crash when disabling autoplay.

Priority: -- → P1
Pushed by haftandilian@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/4881cfa8b043
GMPParent::Init() crash due to Preferences::GetBool() call off main thread r=spohl,bryce

Comment on attachment 9188420 [details]
Bug 1677817 - GMPParent::Init() crash due to Preferences::GetBool() call off main thread r?spohl!,bryce!

Beta/Release Uplift Approval Request

  • User impact if declined: Users running Beta 84 on Apple Silicon devices may experience crashes while watching video.
  • Is this code covered by automated tests?: No
  • Has the fix been verified in Nightly?: No
  • Needs manual test from QE?: Yes
  • If yes, steps to reproduce: Test videos such as https://edition.cnn.com/videos and ensure the browser does not crash or have unexpected behavior.
  • List of other uplifts needed: None
  • Risk to taking this patch: Low
  • Why is the change risky/not risky? (and alternatives if risky): The changes only apply to the new Apple Silicon machines which are shipping this week which will make up a very small percentage of users.
  • String changes made/needed:
Attachment #9188420 - Flags: approval-mozilla-beta?
Flags: qe-verify+
Status: NEW → RESOLVED
Closed: 4 years ago
Resolution: --- → FIXED
Target Milestone: --- → 85 Branch
QA Whiteboard: [qa-triaged]

Comment on attachment 9188420 [details]
Bug 1677817 - GMPParent::Init() crash due to Preferences::GetBool() call off main thread r?spohl!,bryce!

Approved for 84.0b3.

Attachment #9188420 - Flags: approval-mozilla-beta? → approval-mozilla-beta+

I tried to reproduce this bug in order to verify it, but I couldn't manage to reproduce it. I tested this on Windows 10 x64, Ubunutu 20.04 and on MacOS 10.15 on Firefox Nightly 85.0a1 (2020-11-17) I did't encounter any crash or have unexpected behavior.
How often did it occur? On what OS should we focus on?
Thanks.

Flags: needinfo?(haftandilian)

Oh i just saw that this was happening on Apple Silicon devices.
My bad.

Flags: needinfo?(haftandilian)

Verified-fixed on the latest Firefox Beta 84.0 RC and Nightly (2020-12-10) on miniMac: MacOS Big Sur 11.0.1, Mac mini (M1, 2020), Chip: Apple M1, display 27-inch (2560x1440), with Rosetta installed. There were no crashes encountered during exploratory testing on audio/video sites.

Status: RESOLVED → VERIFIED
QA Whiteboard: [qa-triaged]
Flags: qe-verify+
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: