New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 728717 link

Starred by 2 users

Issue metadata

Status: Fixed
Owner:
not on Chrome anymore
Closed: Jul 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 2
Type: Bug-Regression

Blocked on:
issue 545203

Blocking:
issue 524838



Sign in to add a comment

GPU process crashes when creating minimized browser window

Reported by oleg...@yandex-team.ru, Jun 1 2017

Issue description

UserAgent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.7 Safari/537.36

Steps to reproduce the problem:
1. Install attached extension.
2. Press its button (Printer) on any page. Minimized browser window created.

What is the expected behavior?

What went wrong?
Page becomes black and GPU process constantly restarts (see Task Manager) until new window is restored from minimized state.

Crashed report ID: 

How much crashed? Whole browser

Is it a problem with a plugin? No 

Did this work before? Yes 

Chrome version: 60.0.3112.7  Channel: n/a
OS Version: 6.1 (Windows 7, Windows Server 2008 R2)
Flash Version:
 
print.zip
1.6 KB Download
Cc: ligim...@chromium.org
Components: Internals>GPU
Labels: M-60 Needs-Triage-M60
Owner: stanisc@chromium.org
Status: Assigned (was: Unconfirmed)
From the bisect range , possible suspect : https://chromium.googlesource.com/chromium/src/+/4950173d4782941bd49f90be89c1d77422e8ca73

Assigning to Stanislav for further updates.
olegmax@yandex-team.ru, is there a crash report ID from chrome://crashes?
Nope, there isn't any crash report. There are a number of repeating messages like this in about:gpu:
[8004:11492:0602/110202.228:ERROR:gles2_cmd_decoder.cc(15630)] : Context lost because SwapBuffers failed.
[8004:11492:0602/110202.228:ERROR:gles2_cmd_decoder.cc(5306)] : Error: 5 for Command kPostSubBufferCHROMIUM
[8004:11492:0602/110202.228:ERROR:gpu_channel_manager.cc(188)] : Exiting GPU process because some drivers cannot recover from problems.
I could repro this on Windows 7 but not on Windows 10.
I doubt this is caused by my change because most of the code I added is turned off on Windows 7. I am going to further investigate this today.

+ halliwell@chromium.org. I wonder if the following change could be related:
https://chromium.googlesource.com/chromium/src/+/55723a7098ece4916d203986b5f7d336a0c0a9f5

It is in the same mentioned in comment #1 above.
Cc: halliwell@chromium.org
Labels: ReleaseBlock-Stable
The patch in #5 landed in M58. Tagging an RB label for M60 for tracking purpose.
I don't have a windows machine currently.  If you do, can you check behaviour with/without that CL?
The reason GPU processes crashes is because elgPostSubBufferNV returns EGL_BAD_PARAMETER because it is called with negative y from the following code:

gfx::SwapResult NativeViewGLSurfaceEGL::PostSubBuffer(int x,
                                                      int y,
                                                      int width,
                                                      int height) {
  DCHECK(supports_post_sub_buffer_);
  if (!CommitAndClearPendingOverlays()) {
    DVLOG(1) << "Failed to commit pending overlay planes.";
    return gfx::SwapResult::SWAP_FAILED;
  }
  if (flips_vertically_) {
    // With EGL_SURFACE_ORIENTATION_INVERT_Y_ANGLE the contents are rendered
    // inverted, but the PostSubBuffer rectangle is still measured from the
    // bottom left.
    y = GetSize().height() - y - height;
  }
  if (!eglPostSubBufferNV(GetDisplay(), surface_, x, y, width, height)) {
    DVLOG(1) << "eglPostSubBufferNV failed with error "
             << GetLastEGLErrorString();
    return gfx::SwapResult::SWAP_FAILED;
  }
  return gfx::SwapResult::SWAP_ACK;
}

flips_vertically_ flag is true so y gets adjusted above and ends up being negative. 
This definitely has nothing to do with my change.

I'll see if I can undo the CL I mentioned in comment #5 and if that resolves the issue.
Owner: halliwell@chromium.org
Yes, it seems that reverting https://chromium.googlesource.com/chromium/src/+/55723a7098ece4916d203986b5f7d336a0c0a9f5 seems to fix the issue. Although I should mention that there were a lot of conflicts when I tried to revert that change locally and I am not sure if I resolved all of them correctly. But at least the GPU process stopped crashing.

Just to reiterate some of earlier comments, the issue is that the minimized popup windows makes SwapBuffers fail with EGL_BAD_PARAMETER because its y argument is negative. And that seems to make GPU process terminate - not crash but terminate deliberately.

Assigning to halliwell@chromium.org for further investigation.
Thanks for the update. Requesting halliwell@ to investigate further. The bug is tagged as RBS so please have a fix ASAP. 
Now have a windows 7 machine where I can reproduce the bug.  Will be OOO the rest of this week, will debug next week.
halliwell@ could you please look into this issue as it is marked as stable blocker.

Thanks,
Status: Started (was: Assigned)
Cc: jbau...@chromium.org
Owner: jbau...@chromium.org
So: the CL in question does change behaviour in that it now calls PostSubBuffer with full surface size, whereas before it would call regular swap in the case where swap rect == surface size.  It should be straightforward to restore the old behaviour, I can submit a CL for that.


However ... it doesn't seem like that _should_ cause the bug.  There is something else I don't understand going on in NativeViewSurfaceEGL.  Using specific dimensions from my test runs:
1) Surface is created with dimensions 160x27
2) Surface is resized to 945x1020
3) PostSubBuffer is called with (0,0,945,1020)
4) flips_vertically_ is true.  But GetSize().height() returns 27.  So now the y calculation is wrong.

jbauman: do you understand this sequence?  Why is eglQuerySurface(EGL_HEIGHT) returning the old height after a resize?  If this can be incorrect in general after a resize, it seems like PostSubBuffer could fail in a number of other situations, not just this one?
jbauman@ - Gentle Ping...!!
Could you please provide any update on the issue.

Thanks...!!

Comment 17 by kbr@chromium.org, Jul 11 2017

Blockedon: 545203
Blocking: 524838
Cc: kbr@chromium.org
kbr: is that the right bug numbers?  (I don't follow the connection)
Also, can you help find someone to answer my question in comment 15 ... ?

Comment 19 by kbr@chromium.org, Jul 11 2017

halliwell: those are the bug IDs referenced by crrev.com/368450 referenced by https://chromium-review.googlesource.com/c/566382/ .

Sorry, I don't know the answer for #15.

Any updates?  M60 is going to stable next week, if a fix is going in it needs to be available for merge review this week.
Project Member

Comment 21 by bugdroid1@chromium.org, Jul 19 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/9a88c37b984954b63baba91a9434c5d7ac5f5d44

commit 9a88c37b984954b63baba91a9434c5d7ac5f5d44
Author: John Bauman <jbauman@chromium.org>
Date: Wed Jul 19 14:59:04 2017

Re-enable use of EGL_ANGLE_window_fixed_size

This was accidentally disabled in r368450, so it was causing issues
when the window was minimized and its size doesn't match what chrome is
expecting.

Bug:  728717 
Change-Id: Ie88148b76d6391c55bf10b70cd0be481b972eb9d
Reviewed-on: https://chromium-review.googlesource.com/566382
Commit-Queue: John Bauman <jbauman@chromium.org>
Reviewed-by: Kenneth Russell <kbr@chromium.org>
Reviewed-by: Sadrul Chowdhury <sadrul@chromium.org>
Cr-Commit-Position: refs/heads/master@{#487866}
[modify] https://crrev.com/9a88c37b984954b63baba91a9434c5d7ac5f5d44/ui/gl/BUILD.gn
[modify] https://crrev.com/9a88c37b984954b63baba91a9434c5d7ac5f5d44/ui/gl/DEPS
[modify] https://crrev.com/9a88c37b984954b63baba91a9434c5d7ac5f5d44/ui/gl/gl_surface_egl.cc
[modify] https://crrev.com/9a88c37b984954b63baba91a9434c5d7ac5f5d44/ui/gl/gl_surface_egl_unittest.cc

jbauman@ - Could you please provide any update on the issue.

Thanks...!!
Labels: -ReleaseBlock-Stable -M-60 M-61
Status: Fixed (was: Started)
This regressed before M60, so I don't think we need this as a releaseblock for that.
Labels: Merge-TBD
[Auto-generated comment by a script] We noticed that this issue is targeted for M-61; it appears the fix may have landed after branch point, meaning a merge might be required. Please confirm if a merge is required here - if so add Merge-Request-61 label, otherwise remove Merge-TBD label. Thanks.
Labels: -Merge-TBD
M61 branched at #488528 so CL listed at #21 is already in M61. 

Sign in to add a comment