Closed Bug 1375708 Opened 7 years ago Closed 7 years ago

Netflix broken on Linux in Firefox 54

Categories

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

55 Branch
defect

Tracking

()

VERIFIED FIXED
mozilla56
Tracking Status
firefox-esr52 55+ fixed
firefox54 + verified
firefox55 + fixed
firefox56 + verified

People

(Reporter: cpearce, Assigned: cpearce)

Details

Attachments

(1 file)

Netflix reported that on June 6 at 5:30pm PST they started to see a spike of failures on Linux. This was observed on 32 and 64bit Linux, with both Fedora and Ubuntu distro builds affected. Firefox versions 49-53 show up in Netflix's logs as failing.

I believe I have narrowed this down to how we're handling timestamps in our CDM harness code. I'm waiting on Netflix to see if they can corroborate this.
I think we should do a 54 dot release for this, or at least ride along in another dot release, as this affects Netflix on Linux.

If this is indeed the timestamp issue I believe it is, it should already be fixed in 55.
Track 54+ as this is a huge impact for users. We plan to have a 54 dot release next week. We definitely will include this one.
Comment on attachment 8880692 [details]
Bug 1375708 - Use base::Time() instead of time(0) in WidevineDecryptor::GetCurrentWallTime().

https://reviewboard.mozilla.org/r/152050/#review157010

::: commit-message-b1b91:5
(Diff revision 1)
> +Bug 1375708 - Use base::Time() instead of time(0) in WidevineDecryptor::GetCurrentWallTime(). r?gerald
> +
> +On Linux some implementations of time(0) appear to be suffering from integer
> +overflow and giving us the wrong dates. This causes the time we expose to the
> +CDM to be wrong, and so licenses pass to the CDM are failing to authenticate,

"pass" -> "passed"?

::: commit-message-b1b91:14
(Diff revision 1)
> +the WidevineDecryptor to talk to the CDM. In 55 (in beta) and later we use the
> +PChromiumCDM protocol to talk to the CDM. This doesn't use time(0) to get a
> +time for the CDM, so it's immune to the problem here.
> +
> +So this patch makes the GetCurrentWallTime() implementation in
> +WidevineDecryptor matches the code currently being used on Nightly and Beta in

"matches" -> "match"
Attachment #8880692 - Flags: review?(gsquelart) → review+
Pushed by cpearce@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/510532c5129c
Use base::Time() instead of time(0) in WidevineDecryptor::GetCurrentWallTime(). r=gerald
This is also the same function that Chrome uses to generate a timestamp to pass to the CDM:
https://cs.chromium.org/chromium/src/media/cdm/cdm_adapter.cc?l=733&rcl=f11d62080a80c7de948ec4c4d7e9c1673becb257
https://hg.mozilla.org/mozilla-central/rev/510532c5129c
Status: NEW → RESOLVED
Closed: 7 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla56
Please request Beta and Release approval on this when you get a chance.
Flags: needinfo?(cpearce)
Steps to Reproduce:
(On Linux 32 bit (I repro'd on i686 Ubuntu 16.04, 64bit Ubuntu seems to not repro)
1. Set pref media.eme.chromium-api.enabled=false and restart Firefox
2. Load Netflix, try to play a video
3. Observe failure.
Verified fixed in Linux Nightly.
Status: RESOLVED → VERIFIED
Comment on attachment 8880692 [details]
Bug 1375708 - Use base::Time() instead of time(0) in WidevineDecryptor::GetCurrentWallTime().

(Beta) Approval Request Comment
[Feature/Bug causing the regression]: EME video playback
[User impact if declined]: Netflix and other DRM streaming providers will fail on many Linux systems.
[Is this code covered by automated tests?]: No; we aren't able to test interactions with the third party CDM easily.
[Has the fix been verified in Nightly?]: Yes.
[Needs manual test from QE? If yes, steps to reproduce]: Probably a good idea. STR in comment #10.
[List of other uplifts needed for the feature/fix]: Just this one.
[Is the change risky?]: No.
[Why is the change risky/not risky?]: We are already running the same code as this change makes in Beta and Nightly (which is using a different IPC protocol to talk to the CDM). So we've effectively been running with this change in beta/nightly for a while.
[String changes made/needed]: None.



(ESR) [Approval Request Comment]
If this is not a sec:{high,crit} bug, please state case for ESR consideration:
User impact if declined: Netflix won't work on many Linux distros.
Fix Landed on Version: Nightly.
Risk to taking this patch (and alternatives if risky): Low risk, as we've been using equivalent code in Nightly/Beta for a while.
String or UUID changes made by this patch: None.

See https://wiki.mozilla.org/Release_Management/ESR_Landing_Process for more info.



(Release) Approval Request Comment
[Feature/Bug causing the regression]: EME video playback
[User impact if declined]: Netflix and other DRM streaming providers will fail on many Linux systems.
[Is this code covered by automated tests?]: No; we aren't able to test interactions with the third party CDM easily.
[Has the fix been verified in Nightly?]: Yes.
[Needs manual test from QE? If yes, steps to reproduce]: Probably a good idea. STR in comment #10.
[List of other uplifts needed for the feature/fix]: Just this one.
[Is the change risky?]: No.
[Why is the change risky/not risky?]: We are already running the same code as this change makes in Beta and Nightly (which is using a different IPC protocol to talk to the CDM). So we've effectively been running with this change in beta/nightly for a while.
[String changes made/needed]: None.
Flags: needinfo?(cpearce)
Attachment #8880692 - Flags: approval-mozilla-release?
Attachment #8880692 - Flags: approval-mozilla-esr52?
Attachment #8880692 - Flags: approval-mozilla-beta?
Comment on attachment 8880692 [details]
Bug 1375708 - Use base::Time() instead of time(0) in WidevineDecryptor::GetCurrentWallTime().

fix an issue with cdm on linux, beta55+
Attachment #8880692 - Flags: approval-mozilla-beta? → approval-mozilla-beta+
Flags: qe-verify+
Comment on attachment 8880692 [details]
Bug 1375708 - Use base::Time() instead of time(0) in WidevineDecryptor::GetCurrentWallTime().

Fix a Netflix issue on Linux. Release54+ & ESR52+. Should be in 54.0.1.
Attachment #8880692 - Flags: approval-mozilla-release?
Attachment #8880692 - Flags: approval-mozilla-release+
Attachment #8880692 - Flags: approval-mozilla-esr52?
Attachment #8880692 - Flags: approval-mozilla-esr52+
[Tracking Requested - why for this release]: It would be good if we could clarify whether this is intended for the ESR 52.2.1 dot release as well or just 52.3. I've only landed it on default for 52.3 for now.

https://hg.mozilla.org/releases/mozilla-esr52/rev/0f59191c605e
Tracked for ESR52.3, this is not something urgent that needs to be included in esr52.2.1
Reproduced the initial issue using steps from comment 10, Fx 54.0 RC and Ubuntu 16.04 64bit, verified as fixed on Firefox 54.0.1.
Flags: qe-verify+
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: