diff -up firefox-92.0/dom/media/gmp/GMPChild.cpp.1725828 firefox-92.0/dom/media/gmp/GMPChild.cpp --- firefox-92.0/dom/media/gmp/GMPChild.cpp.1725828 2021-09-01 19:14:40.000000000 +0200 +++ firefox-92.0/dom/media/gmp/GMPChild.cpp 2021-09-13 17:32:01.606739188 +0200 @@ -232,8 +232,14 @@ mozilla::ipc::IPCResult GMPChild::RecvPr } #elif defined(XP_LINUX) constexpr static const char* whitelist[] = { + // NSS libraries used by clearkey. "libfreeblpriv3.so", "libsoftokn3.so", + // glibc libraries merged into libc.so.6; see bug 1725828 and + // the corresponding code in GMPParent.cpp. + "libdl.so.2", + "libpthread.so.0", + "librt.so.1", }; nsTArray libs; @@ -256,7 +262,7 @@ mozilla::ipc::IPCResult GMPChild::RecvPr } // End bug 1698718 logging. - MOZ_CRASH("Couldn't load lib needed by NSS"); + MOZ_CRASH("Couldn't load lib needed by media plugin"); } } } diff -up firefox-92.0/dom/media/gmp/GMPParent.cpp.1725828 firefox-92.0/dom/media/gmp/GMPParent.cpp --- firefox-92.0/dom/media/gmp/GMPParent.cpp.1725828 2021-09-13 17:32:01.606739188 +0200 +++ firefox-92.0/dom/media/gmp/GMPParent.cpp 2021-09-13 17:55:54.902965506 +0200 @@ -873,8 +873,21 @@ RefPtr GMPParent::ParseC return GenericPromise::CreateAndReject(NS_ERROR_FAILURE, __func__); } - GMPCapability video; +#ifdef XP_LINUX + // These glibc libraries were merged into libc.so.6 as of glibc + // 2.34; they now exist only as stub libraries for compatibility and + // newly linked code won't depend on them, so we need to ensure + // they're loaded for plugins that may have been linked against a + // different version of glibc. (See also bug 1725828.) + if (!mDisplayName.EqualsASCII("clearkey")) { + if (!mLibs.IsEmpty()) { + mLibs.AppendLiteral(", "); + } + mLibs.AppendLiteral("libdl.so.2, libpthread.so.0, librt.so.1"); + } +#endif + GMPCapability video; nsCString codecsString = NS_ConvertUTF16toUTF8(m.mX_cdm_codecs); nsTArray codecs; SplitAt(",", codecsString, codecs);