Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Chrome tab crash - 2.9.1 #2795

Closed
4 tasks done
KameshDevarakonda opened this issue Oct 2, 2018 · 9 comments
Closed
4 tasks done

Chrome tab crash - 2.9.1 #2795

KameshDevarakonda opened this issue Oct 2, 2018 · 9 comments

Comments

@KameshDevarakonda
Copy link

Environment
Steps to reproduce
  1. Please provide clear steps to reproduce your problem
    Play the above MPD file in https://reference.dashif.org/dash.js/v2.9.1/samples/dash-if-reference-player/index.html

  2. If the bug is intermittent, give a rough frequency if possible

Observed behaviour

It is causing chrome tab to crash.

Console output

Debug.js:233 [91709][ScheduleController][video] OnFragmentLoadingCompleted - Url: https://dai.google.com/segments/redirect/c/2.mp4?orig=https%3A%2F%2Fr6---sn…6mm%3D31%26mn%3Dsn-ab5szn7d%26ms%3Dau%26mt%3D1538515155%26mv%3Dm%26pl%3D48 , Range: undefined 
Debug.js:233 [91778][ScheduleController][video] OnFragmentLoadingCompleted - Url: https://dai.google.com/segments/redirect/c/3.mp4?orig=https%3A%2F%2Fr6---sn…6mm%3D31%26mn%3Dsn-ab5szn7d%26ms%3Dau%26mt%3D1538515155%26mv%3Dm%26pl%3D48 , Range: undefined 
Debug.js:233 [91890][ScheduleController][video] OnFragmentLoadingCompleted - Url: https://dai.google.com/segments/redirect/c/4.mp4?orig=https%3A%2F%2Fr6---sn…6mm%3D31%26mn%3Dsn-ab5szn7d%26ms%3Dau%26mt%3D1538515155%26mv%3Dm%26pl%3D48 , Range: undefined 
Debug.js:233 [91968][ScheduleController][video] OnFragmentLoadingCompleted - Url: https://dai.google.com/segments/redirect/c/5.mp4?orig=https%3A%2F%2Fr6---sn…6mm%3D31%26mn%3Dsn-ab5szn7d%26ms%3Dau%26mt%3D1538515155%26mv%3Dm%26pl%3D48 , Range: undefined 
Debug.js:233 [91971][AbrController] AbrController (video) switching from throughput to buffer occupancy ABR rule (buffer: 24.847). 
Debug.js:233 [92070][ScheduleController][audio] OnFragmentLoadingCompleted - Url: https://dai.google.com/segments/redirect/c/2.mp4?orig=https%3A%2F%2Fr6---sn…6mm%3D31%26mn%3Dsn-ab5szn7d%26ms%3Dau%26mt%3D1538515155%26mv%3Dm%26pl%3D48 , Range: undefined 
Debug.js:233 [92147][ScheduleController][audio] OnFragmentLoadingCompleted - Url: https://dai.google.com/segments/redirect/c/3.mp4?orig=https%3A%2F%2Fr6---sn…6mm%3D31%26mn%3Dsn-ab5szn7d%26ms%3Dau%26mt%3D1538515155%26mv%3Dm%26pl%3D48 , Range: undefined 
Debug.js:233 [92150][AbrController] AbrController (audio) switching from throughput to buffer occupancy ABR rule (buffer: 29.644). 
Debug.js:233 [96980][AbrController] AbrController (video) switch from 2 to 5/5 (buffer: 19.964) . 
Debug.js:233 [97043][BufferController][video] Init fragment finished loading saving to video's init cache 
Debug.js:233 [97044][ScheduleController][video] OnFragmentLoadingCompleted - Url: https://dai.google.com/segments/redirect/c/init.mp4?orig=https%3A%2F%2Fr6--…6mm%3D31%26mn%3Dsn-ab5szn7d%26ms%3Dau%26mt%3D1538515155%26mv%3Dm%26pl%3D48 , Range: undefined 
Debug.js:233 [97255][ScheduleController][video] OnFragmentLoadingCompleted - Url: https://dai.google.com/segments/redirect/c/3.mp4?orig=https%3A%2F%2Fr6---sn…6mm%3D31%26mn%3Dsn-ab5szn7d%26ms%3Dau%26mt%3D1538515155%26mv%3Dm%26pl%3D48 , Range: undefined 
Debug.js:233 [97419][ScheduleController][video] OnFragmentLoadingCompleted - Url: https://dai.google.com/segments/redirect/c/6.mp4?orig=https%3A%2F%2Fr6---sn…6mm%3D31%26mn%3Dsn-ab5szn7d%26ms%3Dau%26mt%3D1538515155%26mv%3Dm%26pl%3D48 , Range: undefined 
Debug.js:233 [97433][Stream] onBufferingCompleted - can't trigger STREAM_BUFFERING_COMPLETED because streamProcessor audio is not buffering completed 
Debug.js:233 [97433][ScheduleController][video] Stream is complete 
Debug.js:233 [97712][ScheduleController][audio] OnFragmentLoadingCompleted - Url: https://dai.google.com/segments/redirect/c/4.mp4?orig=https%3A%2F%2Fr6---sn…6mm%3D31%26mn%3Dsn-ab5szn7d%26ms%3Dau%26mt%3D1538515155%26mv%3Dm%26pl%3D48 , Range: undefined 
Debug.js:233 [97715][StreamController] [StreamController][onStreamBufferingCompleted] end of period detected 
Debug.js:233 [97717][StreamController] [StreamController][toggleEndPeriodTimer] Going to fire preload in 22215.800000000003 
Debug.js:233 [97717][ScheduleController][audio] Stream is complete 
Debug.js:233 [111854][AbrController] AbrController (video) switching from buffer occupancy to throughput ABR rule (buffer: 9.969). 
Debug.js:233 [112104][AbrController] AbrController (audio) switching from buffer occupancy to throughput ABR rule (buffer: 9.782). 
Debug.js:233 [119934][StreamController] [StreamController][onStreamCanLoadNext] Preloading next stream 
Debug.js:233 [119941][AbrController] AbrController (audio) switch from 0 to 2/2 (buffer: 2.032) . 
Debug.js:233 [119947][Stream] No text data. 
Debug.js:233 [119948][Stream] No fragmentedText data. 
Debug.js:233 [119948][Stream] No embeddedText data. 
Debug.js:233 [119949][Stream] No muxed data. 
Debug.js:233 [119949][Stream] No image data. 
Debug.js:233 [119958][AbrController] AbrController (audio) switch from 2 to 0/2 (buffer: 2.032) . 
Debug.js:233 [120125][BufferController][audio] Init fragment finished loading saving to audio's init cache 
Debug.js:233 [120127][ScheduleController][audio] OnFragmentLoadingCompleted - Url: https://storage.googleapis.com/truman-vod-dash-alpha-test/r6/live/wv-pr/160/audio_init.mp4 , Range: undefined 
Debug.js:233 [120130][BufferController][video] Init fragment finished loading saving to video's init cache 
Debug.js:233 [120131][ScheduleController][video] OnFragmentLoadingCompleted - Url: https://storage.googleapis.com/truman-vod-dash-alpha-test/r6/live/wv-pr/135/video_init.mp4 , Range: undefined 
ProtectionModel_21Jan2015.js:293 It is recommended that a robustness level be specified. Not specifying the robustness level could result in unexpected behavior.
Debug.js:233 [120136][ProtectionController] DRM: KeySystem Access Granted (com.widevine.alpha)!  Selecting key system... 
Debug.js:233 [120136][ScheduleController][audio] Top quality audio index has changed from undefined to 2 
Debug.js:233 [120138][ScheduleController][video] Top quality video index has changed from undefined to 3 
Debug.js:233 [120150][ProtectionController] DRM: Ignoring initData because we have already seen it! 
Debug.js:233 [120298][ScheduleController][audio] OnFragmentLoadingCompleted - Url: https://storage.googleapis.com/truman-vod-dash-alpha-test/r6/live/wv-pr/160/audio_1.m4s , Range: undefined 
Debug.js:233 [120299][ScheduleController][video] OnFragmentLoadingCompleted - Url: https://storage.googleapis.com/truman-vod-dash-alpha-test/r6/live/wv-pr/135/video_1.m4s , Range: undefined 
Debug.js:233 [120467][ScheduleController][video] OnFragmentLoadingCompleted - Url: https://storage.googleapis.com/truman-vod-dash-alpha-test/r6/live/wv-pr/135/video_2.m4s , Range: undefined 
Debug.js:233 [120648][ScheduleController][video] OnFragmentLoadingCompleted - Url: https://storage.googleapis.com/truman-vod-dash-alpha-test/r6/live/wv-pr/135/video_3.m4s , Range: undefined 
Debug.js:233 [120795][ScheduleController][video] OnFragmentLoadingCompleted - Url: https://storage.googleapis.com/truman-vod-dash-alpha-test/r6/live/wv-pr/135/video_4.m4s , Range: undefined 
Debug.js:233 [120803][AbrController] AbrController (audio) switch from 0 to 2/2 (buffer: 3.385) . 
Debug.js:233 [120952][ScheduleController][video] OnFragmentLoadingCompleted - Url: https://storage.googleapis.com/truman-vod-dash-alpha-test/r6/live/wv-pr/135/video_5.m4s , Range: undefined 
Debug.js:233 [120953][BufferController][audio] Init fragment finished loading saving to audio's init cache 
Debug.js:233 [120955][ScheduleController][audio] OnFragmentLoadingCompleted - Url: https://storage.googleapis.com/truman-vod-dash-alpha-test/r6/live/wv-pr/135/audio_init.mp4 , Range: undefined 
Debug.js:233 [120958][ProtectionController] DRM: Ignoring initData because we have already seen it! 
Debug.js:233 [121130][ScheduleController][video] OnFragmentLoadingCompleted - Url: https://storage.googleapis.com/truman-vod-dash-alpha-test/r6/live/wv-pr/135/video_6.m4s , Range: undefined 
Debug.js:233 [121133][ScheduleController][audio] OnFragmentLoadingCompleted - Url: https://storage.googleapis.com/truman-vod-dash-alpha-test/r6/live/wv-pr/135/audio_2.m4s , Range: undefined 
Debug.js:233 [121275][ScheduleController][audio] OnFragmentLoadingCompleted - Url: https://storage.googleapis.com/truman-vod-dash-alpha-test/r6/live/wv-pr/135/audio_3.m4s , Range: undefined 
Debug.js:233 [121405][ScheduleController][video] OnFragmentLoadingCompleted - Url: https://storage.googleapis.com/truman-vod-dash-alpha-test/r6/live/wv-pr/135/video_7.m4s , Range: undefined 
Debug.js:233 [121416][ScheduleController][audio] OnFragmentLoadingCompleted - Url: https://storage.googleapis.com/truman-vod-dash-alpha-test/r6/live/wv-pr/135/audio_4.m4s , Range: undefined 
Debug.js:233 [121418][SwitchHistoryRule] Switch history rule index: 1 samples: 6 drops: 1 
Debug.js:233 [121419][AbrController] AbrController (audio) switch from 2 to 1/2 (buffer: 8.572) . 
Debug.js:233 [121568][BufferController][audio] Init fragment finished loading saving to audio's init cache 
Debug.js:233 [121569][ScheduleController][audio] OnFragmentLoadingCompleted - Url: https://storage.googleapis.com/truman-vod-dash-alpha-test/r6/live/wv-pr/134/audio_init.mp4 , Range: undefined 
Debug.js:233 [121573][ProtectionController] DRM: Ignoring initData because we have already seen it! 
Debug.js:233 [121574][SwitchHistoryRule] Switch history rule index: 1 samples: 7 drops: 2

screenshot from 2018-10-02 17-50-44

@epiclabsDASH
Copy link
Contributor

Some extra info to help to scope this issue: I could reproduce this issue since dash.js v2.8.0. Previous versions neither work (tested from 2.9.1 to 2.6.0) although don't cause chrome tab to crash.

Seems to be an issue with EME (don't want to confirm yet), that mixed with the smooth transition logic for multiperiod added in v2.8.0 could be crashing chrome tab (!).

Tomorrow I will take a further look. @KameshDevarakonda, thanks for reporting!

@damienlevin
Copy link

@epiclabsDASH, any update on this issue ?
Thanks.

@epiclabsDASH epiclabsDASH self-assigned this Oct 16, 2018
@epiclabsDASH
Copy link
Contributor

Not yet @damienlevin. I was working on other priority features (almost done) and will get back to this soon. I will keep you updated.

@epiclabsDASH
Copy link
Contributor

Hey @damienlevin, could you please take a look at this version?
https://blue-eyed-power.surge.sh/samples/dash-if-reference-player/index.html

It has a preliminar fix that takes into account ContentProtection information in period transitions.

Thanks!

@KameshDevarakonda
Copy link
Author

It no longer crashes. Thanks for working on this.

However I observed in this build as well as in the nightly build, that there is some visible picture change (during period transitions). Did you rollback seamless period transition logic or am I missing something here?

@epiclabsDASH
Copy link
Contributor

Disabling seamless period transition just when there are ContentProtection changes (ad without drm -> content with drm), which was the root cause of previous issue. I am currently forcing a MediaSource reset in those scenarios to avoid browser to crash, but will take a look if there is an elegant way of keeping the seamless transition without killing the browser when a EME change is required. This was just a preliminar solution :).

By the way, period transitions in the content ( example: at time position 1' 28'') still are seamless in your test, right?

@KameshDevarakonda
Copy link
Author

Okay that makes sense. Thank you.

Yes, it is a seamless transition at content period boundaries.

@epiclabsDASH
Copy link
Contributor

@KameshDevarakonda, I merged the workaround in development branch so it is part of dash.js v2.9.2 (to be released Wednesday next week). In the meantime I will see if there is something we can do from dash.js to make the transition seamless when that requires a "DRM change" or if that's a limitation of the browser. I will keep you posted.
Thanks

@epiclabsDASH
Copy link
Contributor

Closing this issue and will create a new one for the seamless transition when a DRM change is required.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants