Aw,Snap occured when scrolling through vimeo.com web page on JB devices. |
||||||||||||||||||||||||||||
Issue descriptionApplication Version (from "Chrome Settings > About Chrome"):51.0.2704.54 Android Build Number (from "Android Settings > About Phone/Tablet"): 4.3.0 Device: Sony Xperia Z (C6602) Steps to reproduce: 1. Start Chrome. 2. Visit 'http://www.vimeo.com' 3. Quickly scroll down and then up on the web page. Observed behavior: Aw, Snap Expected behavior: Scrolling should not result in tab crash. Frequency: 5/5 times Additional comments: Not able to repro with Chrome stable '50.0.2661.89' 05-17 22:58:54.785 I/chromium( 3434): [INFO:CONSOLE(0)] "Deferred long-running timer task(s) to improve scrolling smoothness. See crbug.com/574343 .", source: https://vimeo.com/ (0) 05-17 22:58:54.785 W/qdhwcomposer( 319): Excessive delay reading vsync: took 517 ms
,
May 18 2016
Will biset later.
,
May 18 2016
,
May 18 2016
What is a "JS device"?
,
May 18 2016
Android with 4.3.0 OS.
,
May 19 2016
,
May 19 2016
Bisect info: Good build: 51.0.2694.0 Bad build: 51.0.2695.0
,
May 19 2016
ramine@ you said you were not able to find a crash report for this crash?
,
May 19 2016
liberato@, i see I/dalvikvm(29093): Could not find method android.media.MediaCodecInfo$CodecCapabilities.isFeatureSupported, referenced from method org.chromium.media.MediaCodecUtil.codecSupportsAdaptivePlayback W/dalvikvm(29093): VFY: unable to resolve virtual method 1431: Landroid/media/MediaCodecInfo$CodecCapabilities;.isFeatureSupported (Ljava/lang/String;)Z in the logcat before the renderer process died. is that something cautionable?
,
May 19 2016
thanks for forwarding. indeed, that sounds like a problem. inspection of MediaCodecUtils.java shows a path to call isFeatureSupported that avoids the api level check. this can affect all spitzer and all MSE non-spitzer playback. i'll fix.
,
May 19 2016
actually, i'm wrong -- i don't know how old the code that i was looking at was. codecSupportsAdaptivePlayback does properly check the API version in m51 (https://code.google.com/p/chromium/codesearch#chromium/src/media/base/android/java/src/org/chromium/media/MediaCodecUtil.java&l=293) un-assigning myself. i'll flash JB onto something local to see if i can repro it. i don't have an Xperia, though.
,
May 19 2016
#11, I think i have the phone the crash happens. i'll first repro and do bisect for the CL range Good build: 51.0.2694.0 Bad build: 51.0.2695.0 I think this may oom because the tester said there's no crash report
,
May 19 2016
No crash report was generated when test was performed.
,
May 19 2016
liberato@, attached is a logcat i got from 51.0.2704.55. Note the following logcat 05-19 17:31:12.143 E/OMX-VDEC-1080P( 308): ERROR in allocating MV buffers 05-19 17:31:12.143 E/OMXNodeInstance( 308): OMX_UseBuffer failed with error -2147479552 (0x80001000) 05-19 17:31:12.143 E/ACodec ( 6165): registering GraphicBuffer 0 with OMX IL component failed: -2147483648 05-19 17:31:12.143 E/ACodec ( 6165): Failed to allocate buffers after transitioning to IDLE state (error 0x80000000) 05-19 17:31:12.143 E/MediaCodec( 6165): Codec reported an error. (omx error 0x80001001, internalError -2147483648) 05-19 17:31:12.143 E/cr_media( 6165): Cannot start the media codec 05-19 17:31:12.143 E/cr_media( 6165): java.lang.IllegalStateException: start failed 05-19 17:31:12.143 E/cr_media( 6165): at android.media.MediaCodec.start(Native Method) 05-19 17:31:12.143 E/cr_media( 6165): at org.chromium.media.MediaCodecBridge.start(MediaCodecBridge.java:245) 05-19 17:31:12.143 E/cr_media( 6165): at dalvik.system.NativeStart.run(Native Method) 05-19 17:31:12.143 W/cr_media( 6165): calling MediaCodec.release() 05-19 17:31:12.143 E/OMX-VDEC-1080P( 308): 05-19 17:31:12.143 E/OMX-VDEC-1080P( 308): Error in ioctl read next msg 05-19 17:31:12.143 E/ ( 308): 05-19 17:31:12.143 E/ ( 308): Destroy C2D instance 05-19 17:31:12.143 E/ ( 308): 05-19 17:31:12.143 E/ ( 308): Destroy C2D instance 05-19 17:31:12.143 I/ActivityManager( 761): Process com.google.android.music:main (pid 10034) has died. 05-19 17:31:12.153 W/Adreno-ES20( 6165): <oglLinkEGLImage2GLTexture:1954>: GL_INVALID_OPERATION 05-19 17:31:12.153 E/chromium( 6165): [ERROR:gles2_cmd_decoder.cc(2167)] [.CommandBufferContext.RenderWorker-0x756aa800]GL ERROR :GL_INVALID_OPERATION : GLES2DecoderImpl::DoBindTexImage2DCHROMIUM: <- error from previous GL command 05-19 17:31:12.223 D/dalvikvm(10916): GC_CONCURRENT freed 2863K, 25% free 11346K/14956K, paused 6ms+78ms, total 228ms 05-19 17:31:12.703 E/chromium(10949): [ERROR:render_media_log.cc(23)] MediaEvent: PIPELINE_ERROR decoder: not supported 05-19 17:31:12.723 E/chromium(10949): [ERROR:render_media_log.cc(23)] MediaEvent: PIPELINE_ERROR decoder: not supported 05-19 17:31:12.723 E/chromium(10949): [ERROR:render_media_log.cc(23)] MediaEvent: PIPELINE_ERROR decoder: not supported 05-19 17:31:12.823 I/ActivityManager( 761): Process com.android.chrome:privileged_process0 (pid 9577) has died. Also I want to point out that chrome was barely usable after I ran a couple of test runs this morning. I'm not even able to open the "vimeo" from the bookmark. It crashed before vimeo page loaded... Until ramine@ factory restored the phone, i was able to proceed and get the attached logcat
,
May 19 2016
from the full log, starting at line 1891 there are about 72 instances where it fails to create a media codec. above that, there are quite a few errors that i've never seen before that aren't related to chrome, such as: 05-19 17:31:04.195 D/PfOMXComponent( 308): OMX_GoogleAndroidIndexEnableAndroidNativeBuffers enable=1 05-19 17:31:04.295 I/ActivityManager( 761): Process com.sonyericsson.extras.liveware (pid 8202) has died. 05-19 17:31:04.355 I/ActivityManager( 761): Process com.sonyericsson.album (pid 5752) has died. 05-19 17:31:04.365 I/PeopleContactsSync(10916): CP2 sync: diff=PeopleSyncDiffs: circlesSync disabled; evergreenSync disabled; unchanged [a547e6b9] 05-19 17:31:04.395 I/ActivityManager( 761): Process com.google.android.gm (pid 11634) has died. 05-19 17:31:04.435 I/PeopleContactsSync(10916): Syncing people to contacts: PeopleSyncDiffs: circlesSync disabled; evergreenSync disabled; unchanged [a547e6b9] 05-19 17:31:04.435 I/ActivityManager( 761): Process com.google.android.play.games.ui (pid 11773) has died. 05-19 17:31:04.495 I/ActivityManager( 761): Process com.google.android.partnersetup (pid 5772) has died. 05-19 17:31:04.535 I/ActivityManager( 761): Process com.sonymobile.xperialink (pid 8293) has died. 05-19 17:31:04.615 I/ActivityManager( 761): Process com.android.keychain (pid 8186) has died. 05-19 17:31:04.675 I/ActivityManager( 761): Process com.android.providers.partnerbookmarks (pid 9796) has died. 05-19 17:31:04.695 I/ActivityManager( 761): Process com.android.defcontainer (pid 7906) has died. 05-19 17:31:04.715 D/dalvikvm(10916): GC_CONCURRENT freed 2717K, 23% free 11352K/14692K, paused 8ms+5ms, total 157ms how much free memory is on this device before chrome starts?
,
May 19 2016
,
May 19 2016
MemTotal: 1839868 kB MemFree: 263268 kB After start of Chrome: MemTotal: 1839868 kB MemFree: 247460 kB
,
May 20 2016
liberato@ should i assign this bug to you?
,
May 20 2016
sure, though until i get an xperia i'm not going to be able to do much locally. since we're not shipping spitzer for M51, let's see if about://flags 'disable unified media pipeline' still has the problem. if not, then it's not RBS.
,
May 20 2016
#19, given the fact that there're a lot of gpu bugs, I think it's a very justified reason to buy some of the devices yourself and expense it. :) So that you have a small inventory there to help work locally on some of the devices This is the one http://www.amazon.com/Sony-Unlocked-Quad-Core-Processor--U-S-Warranty/dp/B00C7ATZMK/ref=sr_1_1?s=wireless&ie=UTF8&qid=1463779428&sr=1-1&keywords=sony+xperia+z+c6602
,
May 20 2016
Tested latest '51.0.2704.56' having spitzer 9enable-unified-media-pipeline) on or off will generate tab crash.
,
May 20 2016
... with a delivery date in 1-2 months.. ouch! i'll see if i can find a faster source. caleb, do we have an Sony Xperia Z (C6602) in the av lab? if not, do you have contact info for the android compat lab in MTV that you could send to me?
,
May 20 2016
,
May 20 2016
Frank, We don't have that device in the lab. :( Are you talking about https://sites.google.com/a/google.com/android-cts/ ? I can set up an email thread if you would like an introduction.
,
May 20 2016
This is on JellyBean, Spitzer is not enabled on JellyBean for M51 (or at all on M51 anymore); so this is a crash related to the old media player framework. timav@, qinmin@ can you help take a look? Even if it's the old framework it's odd that the renderer process is crashing. This might be related to the issue qinmin@ fixed where we are accidentally calling MediaCodec APIs without the right permissions. See issue 568104. I'm also not sure how we're seeing MediaCodec logs for this device, it should be using MediaPlayer as Vimeo does not use MSE.
,
May 20 2016
I got Sony Xperia
,
May 20 2016
thanks tima!
,
May 21 2016
c#25: could you please clarify whether we disabled Spitzer on all JellyBeans or just for level 16 and 17? This device is level 18 (Android 4.3.0) and on main branch I see the crash in Spitzer: 05-21 00:47:12.213 16378 16394 V timav : [16378/16394] 00:47:12.222 Destroy 05-21 00:47:12.213 16378 16401 E chromium: [ERROR:node_controller.cc(906)] Could not be introduced to peer B748D768AF9C50D4.82E5BADAE6F3FF2E 05-21 00:47:12.213 16378 16401 E chromium: [ERROR:node_controller.cc(906)] Could not be introduced to peer B748D768AF9C50D4.82E5BADAE6F3FF2E 05-21 00:47:12.213 16378 16394 W Adreno-ES20: <oglLinkEGLImage2GLTexture:1954>: GL_INVALID_OPERATION 05-21 00:47:12.233 16378 16394 F chromium: [FATAL:android_deferred_rendering_backing_strategy.cc(381)] Check failed: static_cast<GLenum>(0x0) == ::gfx::g_current_gl_context_tls->Get()->glGetErrorFn() (0 vs. 1282)
,
May 21 2016
For both pipelines I see GPU process keeps dying and being recreated in a loop.
,
May 21 2016
in M51 (branch 2704), spitzer is off by default for all versions starting yesterday: https://codereview.chromium.org/1997783002/ at ToT, i think that it's still enabled. can you test a current M51? it should work fine, and we can remove RBS. i'll try to build a current M51 also, since i think that it doesn't build cleanly without some edits. as an aside, we decided today that we're removing CopySurfaceTextureToPictures. it also leaks fds sometimes due to (we think) broken gl implementations.
,
May 21 2016
,
May 21 2016
I tested this build, it behaves very similar to the ToT build if I hardcode unified_pipeline=false.
Chrome does not crash with "Aw, snap!", but the screen start blinking erratically and sometimes Chrome disappears, e.g.
05-21 21:48:23.509 800 811 W ActivityManager: Force removing ActivityRecord{418c1af8 u0 org.chromium.chrome/.browser.ChromeTabbedActivity}: app died, no saved state
The first thing that happens though is that GPU process dies and gets recreated over and over. When it happens first time I do not see any error conditions in the log, i.e.
05-21 21:47:42.089 3331 3689 I ExtendedCodec: Smoothstreaming Enabled
05-21 21:47:42.089 3331 3689 I ExtendedCodec: Enabling timestamp reordering
[...]
05-21 21:47:42.339 336 6008 E OMXNodeInstance: !!! Observer died. Quickly, do something, ... anything...
05-21 21:47:42.339 3248 3248 W cr_ChildProcessConnect: onServiceDisconnected (crash or killed by oom): pid=3331
05-21 21:47:42.339 800 1343 I ActivityManager: Process org.chromium.chrome:privileged_process0 (pid 3331) has died.
[...]
05-21 21:47:42.389 800 1386 I ActivityManager: Start proc org.chromium.chrome:privileged_process1 for service org.chromium.chrome/org.chromium.content.app.PrivilegedProcessService1: pid=3722 uid=10199 gids={50199, 3002, 3001, 3003, 1015, 1028}
After the creation of the second GPU process I get
05-21 21:47:42.619 3722 3739 E libEGL : validate_display:257 error 3008 (EGL_BAD_DISPLAY)
and maky errors like
05-21 21:47:42.920 3722 3739 E chromium: [ERROR:gles2_cmd_decoder.cc(14683)] [.CommandBufferContext.DisplayCompositor-0x7c503dd8]GL ERROR :GL_INVALID_OPERATION : glCreateAndConsumeTextureCHROMIUM: invalid mailbox name
05-21 21:47:42.930 3722 3739 E chromium: [ERROR:gles2_cmd_decoder.cc(7857)] [.CommandBufferContext.DisplayCompositor-0x7c503dd8]RENDER WARNING: texture bound to texture unit 0 is not renderable. It maybe non-power-of-2 and have incompatible texture filtering.
and eventually
05-21 21:47:43.490 800 1385 I ActivityManager: Process org.chromium.chrome:privileged_process1 (pid 3722) has died.
Attaching complete log just in case. It shows that several processes died, not only ours.
Any ideas?
,
May 23 2016
i started going through diffs from 2694 to 2695 per c#7. not much changed in any of the areas of the tree that i'd expect to impact this. will do a more careful search tomorrow. maybe i've grabbed the wrong revision range or something.
,
May 23 2016
i think that my diff command was broken. the new one is: git diff 51.0.2694.0 51.0.2695.0 . based on c#12: > Good build: 51.0.2694.0 > Bad build: 51.0.2695.0 there still aren't too many changes that would affect both WMPI and WMPA, that also seem at all related: 2f48766b1 - [merged] Use actual audio channel count in MediaSourcePlayer (interesting because it changes buffering amounts, though only for audio) 9268401fe - Make Android StreamTexture implement GLStreamTextureImage (interesting because it unifies how the SurfaceTexture texture matrix is handled between WMPI and WMPA) note that i did this via looking at the diff in various directories (gpu/ media/base/android/ mostly).
,
May 23 2016
I'm not quite positive the bad build and good build in #7 though, because I downloaded 51.0.2695.0 but i don't see it crashes.
,
May 23 2016
#32: Everything started working for me after I rebooted the device. Namely, the latest M51 Beta 51.0.2704.60 seemed to work fine, which is expected as Spitzer should be disabled there by default. According to mariakhomenko@ the fact that device reboot helps indicates a memory leak in Android OS. Please retest with the latest build.
,
May 25 2016
ramine@ can you please test this ASAP?
,
May 25 2016
The site is now using MSE. Scrolling creates new video elements, and we do not seem to destroy them as they go out of the view. With the onld pipeline (MediaCodecPlayer in this case) I easily created 37 MediaCodecPlayer objects and only 2 were destroyed. With the old pipeline the Android's MediaCodec creation is postponed till a user presses Play. If in Spitzer we create MediaCodec and start decoding right away we should probably limit the number of active <video> elements otherwise we will exhaust resources.
,
May 26 2016
Hmm, these should be destroyed after a few seconds of idle activity. How long did you wait?
,
May 26 2016
I need to rerun the experiment to see. There is no apparent problem in the old pipeline, I was talking about Spitzer where we could exhaust all system resources before an idle period begins.
,
May 26 2016
Please note that this is marked as a release blocker for M51. If we don't feel it should block then please let me know that. But if it should (and the previous 2 comments worry me a bit) then we need it fixed on trunk by tomorrow and merged back to M51 on Friday.
,
May 26 2016
Tested with latest chrome beta release '51.0.2704.64', not able to repro.
,
May 26 2016
amineer@: Alex, comments #39, #40 and #41 talk about Spitzer which is disabled on M51
,
May 26 2016
OK, per timav@ we shouldn't see this bug manifest in M51 with the old media pipeline, so moving to M52.
,
Jun 3 2016
https://bugs.chromium.org/p/chromium/issues/detail?id=614422 seems similar. exynos, crazy crash. however, the page in question didn't have a lot of video elements. but otherwise, "phone shuts off" sounds pretty similar. i didn't dupe because that one is not RVG. +boliu and +tobiasjs, who are on the other bug.
,
Jun 3 2016
ah, my bad. i think that my reading skills failed me. i must have misread "experia" as "exynos". experia Z is QC. nevermind me.
,
Jul 12 2016
,
Jul 12 2016
Removing RVG since this is effectively an OOM crash.
,
Jul 12 2016
I've reached out to Vimeo about this, we can alleviate the pressure a bit, but this is similar to issues we've had in the past with desktop sites that are leaking / never clearing unused video tags. What we'll probably do for now is throttle these older devices to only 1 or 2 active tags.
,
Jul 13 2016
sandersd@ isn't able to repro this using a release build anymore on ToT; this may have been resolved by liberato@'s earlier patches (that are now in M52). Will do some more testing tomorrow.
,
Jul 13 2016
ramine@ can you retest this on the Xperia Z using the latest Chrome Canary for Android? 54.0.2793.0
,
Jul 13 2016
I got message 'Aw, Snap' with chrome canary build '54.0.2794.0' on Sony Xperia Z.
,
Jul 13 2016
Thanks ramine, I have a patch which should ease the load on this site, though we'll still need vimeo to change their design for optimal experience: https://codereview.chromium.org/2147843002
,
Jul 14 2016
Alright. We've decided to blacklist spitzer on JB devices for M52. Requested approval to revert in Issue 597467 .
,
Jul 14 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/0068affc7eb3c0e11dcb6a52108bcfe3e0723e99 commit 0068affc7eb3c0e11dcb6a52108bcfe3e0723e99 Author: Chris Watkins <watk@chromium.org> Date: Thu Jul 14 21:30:33 2016 Revert "Re-enable the unified media pipeline for JellyBean" This reverts commit 6e72427d55908dc1f44683bfe6c79847854abf40. Re-disabling unified media pipeline due to crashes. TBR=liberato BUG= 597467 , 612909 Review URL: https://codereview.chromium.org/2144733010 . Cr-Commit-Position: refs/branch-heads/2743@{#632} Cr-Branched-From: 2b3ae3b8090361f8af5a611712fc1a5ab2de53cb-refs/heads/master@{#394939} [modify] https://crrev.com/0068affc7eb3c0e11dcb6a52108bcfe3e0723e99/media/base/media.cc
,
Jul 14 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/4467b42153c1fbec6e3dcfe30727e6ef2e2e615f commit 4467b42153c1fbec6e3dcfe30727e6ef2e2e615f Author: Chris Watkins <watk@chromium.org> Date: Thu Jul 14 22:05:22 2016 Revert "Re-enable the unified media pipeline for JellyBean" This reverts commit 1580687683f0814bfb8a6238b9b9243fff335ef9. Disabling the unified media pipeline on JB until crashes are solved. TBR=liberato BUG= 612909 , 597467 Review URL: https://codereview.chromium.org/2153623002 . Cr-Commit-Position: refs/branch-heads/2785@{#127} Cr-Branched-From: 68623971be0cfc492a2cb0427d7f478e7b214c24-refs/heads/master@{#403382} [modify] https://crrev.com/4467b42153c1fbec6e3dcfe30727e6ef2e2e615f/media/base/media.cc
,
Jul 18 2016
reassigning to watk since you did the work on this one. please remove releaseblock-stable if you're satisfied that it's fixed and merged to 52.
,
Jul 18 2016
We should mark the bug as fixed rather than remove release block stable.
,
Jul 18 2016
This bug still exists in ToT, amineer@. Would you prefer we opened a new bug for it?
,
Aug 8 2016
Issue 629265 (unexplained crash in audio clock) is tied to enabling spitzer on JB. Since disabling the crash has disappeared. Just making a note to keep an eye on this as we decide what to do for JB in future releases.
,
Sep 3 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/e7120dcf27938c9604ec03b3b574e1b4b3bf6c28 commit e7120dcf27938c9604ec03b3b574e1b4b3bf6c28 Author: dalecurtis <dalecurtis@chromium.org> Date: Sat Sep 03 02:54:35 2016 Allow suspension prior to reaching kHaveFutureData. This change rolls in a few changes: - Removes DelegateState::PAUSED_BUT_NOT_IDLE state. - Removes all blocks against suspending prior to kHaveFutureData. - If suspended, triggers resume when prior to have kHaveFutureData if the didLoadingProgress() timer reports true. - Always notifies the delegate of DelegateState::GONE; this ensures the idle timer is always restarted if we didn't quite get enough data to reach kHaveFutureData. - Fixes pause timer to handle newly supported background video; which doesn't set a state of DelegateState::GONE BUG= 612909 , 643383 TEST=new and updated unittests. Review-Url: https://codereview.chromium.org/2289543005 Cr-Commit-Position: refs/heads/master@{#416431} [modify] https://crrev.com/e7120dcf27938c9604ec03b3b574e1b4b3bf6c28/content/renderer/media/renderer_webmediaplayer_delegate.cc [modify] https://crrev.com/e7120dcf27938c9604ec03b3b574e1b4b3bf6c28/content/renderer/media/renderer_webmediaplayer_delegate_browsertest.cc [modify] https://crrev.com/e7120dcf27938c9604ec03b3b574e1b4b3bf6c28/media/blink/webmediaplayer_impl.cc [modify] https://crrev.com/e7120dcf27938c9604ec03b3b574e1b4b3bf6c28/media/blink/webmediaplayer_impl.h [modify] https://crrev.com/e7120dcf27938c9604ec03b3b574e1b4b3bf6c28/media/blink/webmediaplayer_impl_unittest.cc
,
Sep 13 2016
dalecurtis@ is actively doing a lot of work on this one.
,
Sep 16 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/d71b1e5954c95ecde84b60228f12e74867a42ce5 commit d71b1e5954c95ecde84b60228f12e74867a42ce5 Author: dalecurtis <dalecurtis@chromium.org> Date: Fri Sep 16 00:05:22 2016 Disallow vp8 MediaCodec in MediaCodecUtil instead of AVDA. Needs to be done in MediaCodecUtil otherwise the EME types won't incorrectly reject encrypted vp8 support. BUG= 612909 TEST=none Review-Url: https://codereview.chromium.org/2348683002 Cr-Commit-Position: refs/heads/master@{#419045} [modify] https://crrev.com/d71b1e5954c95ecde84b60228f12e74867a42ce5/media/base/android/java/src/org/chromium/media/MediaCodecUtil.java [modify] https://crrev.com/d71b1e5954c95ecde84b60228f12e74867a42ce5/media/gpu/android_video_decode_accelerator.cc
,
Sep 16 2016
+mlamouri, foolip: Do you have advice on how you would force preload=none for Android JellyBean / base::SysInfo::IsLowEnd() devices? I notice Blink code doesn't have any pre-existing usage of sdk_int() or #ANDROID for making decisions. The two naive choices seem to be to stash a force_preload_none setting somewhere in WebRuntimeFeatures or document().settings(). Is there a better place?
,
Sep 16 2016
If this is something you expect to be around for a long time, then document().settings() is probably the better choice, there are plenty of things of a similar nature.
,
Sep 16 2016
Thanks I'd expect it to remain around for the lifetime of JellyBean.
,
Sep 17 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/d0ab2edb1cd3b57fbc48b3b39492a8d23221e648 commit d0ab2edb1cd3b57fbc48b3b39492a8d23221e648 Author: dalecurtis <dalecurtis@chromium.org> Date: Sat Sep 17 19:39:09 2016 Reduce number of active codecs on low end devices. This fixes OOM crashes in the mediaserver process on older devices by suspending players more frequently and preventing unused players and SurfaceTextures from ever being created. Both fixes are required to enable playback on JellyBean devices; independently neither is sufficient for playback to succeed. - On low end devices, suspends all idle players immediately upon playback of another player. - On low end devices, if a codec already exists, codec creation is deferred until the first Decode() call. Resolves issues with sites like vimeo.com that are appending initialization segments to MSE but never any further data. - Once more than 2 players exist on a low end device, every extra player will cause immediate idle player collection. Normal devices will now do this after 8 players. A followup CL will set preload=none for all JellyBean devices. BUG= 612909 TEST=manual, new tests. Review-Url: https://codereview.chromium.org/2333983002 Cr-Commit-Position: refs/heads/master@{#419375} [modify] https://crrev.com/d0ab2edb1cd3b57fbc48b3b39492a8d23221e648/content/renderer/media/renderer_webmediaplayer_delegate.cc [modify] https://crrev.com/d0ab2edb1cd3b57fbc48b3b39492a8d23221e648/content/renderer/media/renderer_webmediaplayer_delegate.h [modify] https://crrev.com/d0ab2edb1cd3b57fbc48b3b39492a8d23221e648/content/renderer/media/renderer_webmediaplayer_delegate_browsertest.cc [modify] https://crrev.com/d0ab2edb1cd3b57fbc48b3b39492a8d23221e648/media/blink/webmediaplayer_impl.cc [modify] https://crrev.com/d0ab2edb1cd3b57fbc48b3b39492a8d23221e648/media/blink/webmediaplayer_impl_unittest.cc [modify] https://crrev.com/d0ab2edb1cd3b57fbc48b3b39492a8d23221e648/media/gpu/android_video_decode_accelerator.cc [modify] https://crrev.com/d0ab2edb1cd3b57fbc48b3b39492a8d23221e648/media/gpu/android_video_decode_accelerator.h
,
Sep 20 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/4c621e70b04fd5ae89a95d58c10d040c57af9f12 commit 4c621e70b04fd5ae89a95d58c10d040c57af9f12 Author: Dale Curtis <dalecurtis@chromium.org> Date: Tue Sep 20 23:50:51 2016 Merge M54: "Allow suspension prior to reaching kHaveFutureData." This change rolls in a few changes: - Removes DelegateState::PAUSED_BUT_NOT_IDLE state. - Removes all blocks against suspending prior to kHaveFutureData. - If suspended, triggers resume when prior to have kHaveFutureData if the didLoadingProgress() timer reports true. - Always notifies the delegate of DelegateState::GONE; this ensures the idle timer is always restarted if we didn't quite get enough data to reach kHaveFutureData. - Fixes pause timer to handle newly supported background video; which doesn't set a state of DelegateState::GONE BUG= 612909 , 643383 TEST=new and updated unittests. Review-Url: https://codereview.chromium.org/2289543005 Cr-Commit-Position: refs/heads/master@{#416431} (cherry picked from commit e7120dcf27938c9604ec03b3b574e1b4b3bf6c28) Review URL: https://codereview.chromium.org/2355143002 . Cr-Commit-Position: refs/branch-heads/2840@{#451} Cr-Branched-From: 1ae106dbab4bddd85132d5b75c670794311f4c57-refs/heads/master@{#414607} [modify] https://crrev.com/4c621e70b04fd5ae89a95d58c10d040c57af9f12/content/renderer/media/renderer_webmediaplayer_delegate.cc [modify] https://crrev.com/4c621e70b04fd5ae89a95d58c10d040c57af9f12/content/renderer/media/renderer_webmediaplayer_delegate_browsertest.cc [modify] https://crrev.com/4c621e70b04fd5ae89a95d58c10d040c57af9f12/media/blink/webmediaplayer_impl.cc [modify] https://crrev.com/4c621e70b04fd5ae89a95d58c10d040c57af9f12/media/blink/webmediaplayer_impl.h [modify] https://crrev.com/4c621e70b04fd5ae89a95d58c10d040c57af9f12/media/blink/webmediaplayer_impl_unittest.cc
,
Sep 21 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/cd97125235326c121186b01e0b3484a60a98e791 commit cd97125235326c121186b01e0b3484a60a98e791 Author: dalecurtis <dalecurtis@chromium.org> Date: Wed Sep 21 16:09:00 2016 Force preload=none and disable autoplay on lowend Android devices. Some older devices are unable to maintain multiple concurrent players without borking the system badly enough that it needs a reboot in order to continue playing media. We also disable autoplay and preloading on low-memory devices to avoid unnecessary codec churn. BUG= 612909 , 622826 TEST=less crashy JB devices. Review-Url: https://codereview.chromium.org/2344353003 Cr-Commit-Position: refs/heads/master@{#420073} [modify] https://crrev.com/cd97125235326c121186b01e0b3484a60a98e791/content/renderer/render_view_impl.cc [add] https://crrev.com/cd97125235326c121186b01e0b3484a60a98e791/third_party/WebKit/LayoutTests/media/video-force-preload-none.html [modify] https://crrev.com/cd97125235326c121186b01e0b3484a60a98e791/third_party/WebKit/Source/core/frame/Settings.in [modify] https://crrev.com/cd97125235326c121186b01e0b3484a60a98e791/third_party/WebKit/Source/core/html/HTMLMediaElement.cpp [modify] https://crrev.com/cd97125235326c121186b01e0b3484a60a98e791/third_party/WebKit/Source/web/WebSettingsImpl.cpp [modify] https://crrev.com/cd97125235326c121186b01e0b3484a60a98e791/third_party/WebKit/Source/web/WebSettingsImpl.h [modify] https://crrev.com/cd97125235326c121186b01e0b3484a60a98e791/third_party/WebKit/public/web/WebSettings.h
,
Sep 21 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/dd027dcc981b471f916593b92d615b2c06595d78 commit dd027dcc981b471f916593b92d615b2c06595d78 Author: dalecurtis <dalecurtis@chromium.org> Date: Wed Sep 21 18:20:13 2016 Remove field trial and enable JellyBean for Spitzer! All known issues should be fixed. BUG= 597467 , 612909 TEST=jb devices no longer crash while scrolling. Review-Url: https://codereview.chromium.org/2349763003 Cr-Commit-Position: refs/heads/master@{#420108} [modify] https://crrev.com/dd027dcc981b471f916593b92d615b2c06595d78/media/base/media.cc
,
Sep 21 2016
Verified with Chrome Beta '54.0.2840.34' on Sony Xperia Z(C6602)
,
Sep 21 2016
You won't be able to verify this until the next M-55 dev update; M-54 has this functionality disabled.
,
Sep 22 2016
Verified with chrome dev '55.0.2868.0' on Sony Xperia Z (C6602)/ 4.3.0
,
Oct 27 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/4c621e70b04fd5ae89a95d58c10d040c57af9f12 commit 4c621e70b04fd5ae89a95d58c10d040c57af9f12 Author: Dale Curtis <dalecurtis@chromium.org> Date: Tue Sep 20 23:50:51 2016 Merge M54: "Allow suspension prior to reaching kHaveFutureData." This change rolls in a few changes: - Removes DelegateState::PAUSED_BUT_NOT_IDLE state. - Removes all blocks against suspending prior to kHaveFutureData. - If suspended, triggers resume when prior to have kHaveFutureData if the didLoadingProgress() timer reports true. - Always notifies the delegate of DelegateState::GONE; this ensures the idle timer is always restarted if we didn't quite get enough data to reach kHaveFutureData. - Fixes pause timer to handle newly supported background video; which doesn't set a state of DelegateState::GONE BUG= 612909 , 643383 TEST=new and updated unittests. Review-Url: https://codereview.chromium.org/2289543005 Cr-Commit-Position: refs/heads/master@{#416431} (cherry picked from commit e7120dcf27938c9604ec03b3b574e1b4b3bf6c28) Review URL: https://codereview.chromium.org/2355143002 . Cr-Commit-Position: refs/branch-heads/2840@{#451} Cr-Branched-From: 1ae106dbab4bddd85132d5b75c670794311f4c57-refs/heads/master@{#414607} [modify] https://crrev.com/4c621e70b04fd5ae89a95d58c10d040c57af9f12/content/renderer/media/renderer_webmediaplayer_delegate.cc [modify] https://crrev.com/4c621e70b04fd5ae89a95d58c10d040c57af9f12/content/renderer/media/renderer_webmediaplayer_delegate_browsertest.cc [modify] https://crrev.com/4c621e70b04fd5ae89a95d58c10d040c57af9f12/media/blink/webmediaplayer_impl.cc [modify] https://crrev.com/4c621e70b04fd5ae89a95d58c10d040c57af9f12/media/blink/webmediaplayer_impl.h [modify] https://crrev.com/4c621e70b04fd5ae89a95d58c10d040c57af9f12/media/blink/webmediaplayer_impl_unittest.cc |
||||||||||||||||||||||||||||
►
Sign in to add a comment |
||||||||||||||||||||||||||||
Comment 1 by ram...@chromium.org
, May 18 2016