Open Bug 1843683 Opened 10 months ago Updated 10 months ago

libwidevinecdm.so requires libgcc_s.so even if Firefox does not

Categories

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

Firefox 115
defect

Tracking

()

UNCONFIRMED

People

(Reporter: juippis, Assigned: jld)

Details

Steps to reproduce:

Try to play DRM content on a system with no GCC installed.

This seems to be a problem in systems with no GCC installed. Like Alpine Linux, or Gentoo with systemwide llvm/clang.
Downstream bug with some additional information:
https://bugs.gentoo.org/910309

$ scanelf -n libwidevinecdm.so 
 TYPE   NEEDED FILE 
ET_DYN libdl.so.2,libpthread.so.0,libm.so.6,libgcc_s.so.1,libc.so.6,ld-linux-x86-64.so.2 libwidevinecdm.so 

Actual results:

WidevineCdm plugin crashes.

Expected results:

DRM content should play.

The Bugbug bot thinks this bug should belong to the 'Core::Audio/Video: Playback' component, and is moving the bug to that component. Please correct in case you think the bot is wrong.

Component: Untriaged → Audio/Video: Playback
Product: Firefox → Core

In my case (as the reporter of the downstream gentoo bug), I do have GCC and glibc installed, so there's possibly another part to this as well, in that when used on a system compiled with clang (but with libgcc_s.so.1 available), the sandbox prevents widevine from accessing libgcc_s.so.1 - when using MOZ_DISABLE_GMP_SANDBOX=1 this seems to work OK.

This seems similar to both #1276420 and #1356038.

I can confirm that on a system predominantly linked using libc++ rather than glibc, adding the solution mentioned in #1356038 works (adding a dlopen call in SetMediaPluginSandbox).

Sounds sandbox related. Gian-Carlo, thoughts?

Flags: needinfo?(gpascutto)

(In reply to Jim Mathies [:jimm] from comment #4)

Sounds sandbox related. Gian-Carlo, thoughts?

I think it's multiple issues - on a system with glibc installed it's sandbox related and so can be fixed with the dlopen call as per the linked bug, but on a system without glibc and just libc++ widevine won't work at all, this would need a rebuild of widevine on a libc++ system, and since widevine is proprietary would need google to produce a build.

on a system with glibc installed it's sandbox related and so can be fixed with the dlopen call as per the linked bug,

You mean https://bugzilla.mozilla.org/show_bug.cgi?id=1356038#c12 I assume (the other bug is about macOS X, which works completely differently even if it seems superficially similar), specifically you hit the case outlined here https://bugzilla.mozilla.org/show_bug.cgi?id=1356038#c4 but not due to static linking, but due to a libc mismatch.

I think it's likely fine to take your patch (https://910309.bugs.gentoo.org/attachment.cgi?id=865541) upstream.

Assignee: nobody → jld
Severity: -- → S4
Flags: needinfo?(gpascutto)
Priority: -- → P3
Summary: libwidevinecdm.so requires glibc and gcc → libwidevinecdm.so requires libgcc_s.so even if Firefox does not

(In reply to Gian-Carlo Pascutto [:gcp] from comment #6)

on a system with glibc installed it's sandbox related and so can be fixed with the dlopen call as per the linked bug,

You mean https://bugzilla.mozilla.org/show_bug.cgi?id=1356038#c12 I assume (the other bug is about macOS X, which works completely differently even if it seems superficially similar), specifically you hit the case outlined here https://bugzilla.mozilla.org/show_bug.cgi?id=1356038#c4 but not due to static linking, but due to a libc mismatch.

I think it's likely fine to take your patch (https://910309.bugs.gentoo.org/attachment.cgi?id=865541) upstream.

Yes, sorry! I mean the 135608 bug, rather than the Mac OS X one. Happy for the patch to be used upstream.

(In reply to Gian-Carlo Pascutto [:gcp] from comment #6)

I think it's likely fine to take your patch (https://910309.bugs.gentoo.org/attachment.cgi?id=865541) upstream.

We already have some library preloading for plugins, and we've previously added some libraries that Widevine needed and Firefox itself might not, so this could added there instead.

You need to log in before you can comment on or make changes to this bug.