New issue
Advanced search Search tips

Issue 866194 link

Starred by 1 user

Issue metadata

Status: Duplicate
Merged: issue 871430
Owner:
Closed: Aug 31
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Mac
Pri: 2
Type: Bug



Sign in to add a comment

Crash in CATransactionGPUCoordinator during context_lost tests

Project Member Reported by kbr@chromium.org, Jul 20

Issue description

Crash observed here:
https://ci.chromium.org/p/chromium/builders/luci.chromium.ci/Mac%20FYI%20Experimental%20Release%20%28Intel%29/4027

Failing shard of context_lost tests:
https://chromium-swarm.appspot.com/task?id=3ed2b60f5d03e910&refresh=10&show_raw=1

stack excerpt:

  Crash reason:  EXC_BREAKPOINT / EXC_I386_BPT
  Crash address: 0x10f1c2fb1
  Process uptime: 2 seconds
  
  Thread 0 (crashed)
   0  Chromium Framework!__ZN4base5debug13BreakDebuggerEv + 0x11
      rax = 0x00007fccca1b604b   rdx = 0x00007fccca1b604b
      rcx = 0x0000000000000016   rbx = 0x0000000000000016
      rsi = 0x000000000000001b   rdi = 0x0000000117232f74
      rbp = 0x00007ffee4bf9b60   rsp = 0x00007ffee4bf9b60
       r8 = 0x00007fccca1b6061    r9 = 0x00000000000011cf
      r10 = 0x00007fccca1b6061   r11 = 0x000000010f203a70
      r12 = 0x00007fccc9700290   r13 = 0x00007fccca1b6061
      r14 = 0x00007ffee4bfa130   r15 = 0x00007ffee4bfa128
      rip = 0x000000010f1c2fb1
      Found by: given as instruction pointer in context
   1  Chromium Framework!__ZN7logging10LogMessageD2Ev + 0x8dd
      rbp = 0x00007ffee4bfa110   rsp = 0x00007ffee4bf9b70
      rip = 0x000000010f0c941d
      Found by: previous frame's frame pointer
   2  Chromium Framework!__ZN7content27CATransactionGPUCoordinatorD0Ev + 0x62
      rbp = 0x00007ffee4bfa260   rsp = 0x00007ffee4bfa120
      rip = 0x000000010ce96412
      Found by: previous frame's frame pointer
   3  Chromium Framework!__ZN4base8internal9BindStateIMN2ui24CATransactionCoordinatorEFvPNS3_18PostCommitObserverEEJNS0_17UnretainedWrapperIS3_EENS0_18RetainedRefWrapperIN7content27CATransactionGPUCoordinatorEEEEE7DestroyEPKNS0_13BindStateBaseE + 0x36
      rbp = 0x00007ffee4bfa280   rsp = 0x00007ffee4bfa270
      rip = 0x000000010ce96f56
      Found by: previous frame's frame pointer
   4  Chromium Framework!__ZNO4base12OnceCallbackIFvvEE3RunEv + 0x73
      rbp = 0x00007ffee4bfa3d0   rsp = 0x00007ffee4bfa290
      rip = 0x000000010d130ac3
      Found by: previous frame's frame pointer
   5  Chromium Framework!__ZN4base5debug13TaskAnnotator7RunTaskEPKcPNS_11PendingTaskE + 0x141
      rbp = 0x00007ffee4bfa590   rsp = 0x00007ffee4bfa3e0
      rip = 0x000000010f0aeba1
      Found by: previous frame's frame pointer
   6  Chromium Framework!__ZN4base11MessageLoop7RunTaskEPNS_11PendingTaskE + 0x216
      rbp = 0x00007ffee4bfa780   rsp = 0x00007ffee4bfa5a0
      rip = 0x000000010f0e5d76
      Found by: previous frame's frame pointer
   7  Chromium Framework!__ZN4base11MessageLoop21DeferOrRunPendingTaskENS_11PendingTaskE + 0xba
      rbp = 0x00007ffee4bfa930   rsp = 0x00007ffee4bfa790
      rip = 0x000000010f0e612a
      Found by: previous frame's frame pointer
   8  Chromium Framework!__ZN4base11MessageLoop6DoWorkEv + 0x23c
      rbp = 0x00007ffee4bfabc0   rsp = 0x00007ffee4bfa940
      rip = 0x000000010f0e63ac
      Found by: previous frame's frame pointer
   9  Chromium Framework!__ZN4base24MessagePumpCFRunLoopBase7RunWorkEv + 0x2a
      rbp = 0x00007ffee4bfabf0   rsp = 0x00007ffee4bfabd0
      rip = 0x000000010f0ea62a
      Found by: previous frame's frame pointer
  10  Chromium Framework!__ZN4base3mac15CallWithEHFrameEU13block_pointerFvvE + 0xa
      rbp = 0x00007ffee4bfac00   rsp = 0x00007ffee4bfac00
      rip = 0x000000010f0cb3aa
      Found by: previous frame's frame pointer
  11  Chromium Framework!__ZN4base24MessagePumpCFRunLoopBase13RunWorkSourceEPv + 0x3f
      rbp = 0x00007ffee4bfac40   rsp = 0x00007ffee4bfac10
      rip = 0x000000010f0e9f0f
      Found by: previous frame's frame pointer
  12  CoreFoundation + 0xa3a61
      rbp = 0x00007ffee4bfac50   rsp = 0x00007ffee4bfac50
      rip = 0x00007fff356eda61
      Found by: previous frame's frame pointer
  13  CoreFoundation + 0x15d47c
      rbp = 0x00007ffee4bfac80   rsp = 0x00007ffee4bfac60
      rip = 0x00007fff357a747c
      Found by: previous frame's frame pointer
  14  CoreFoundation + 0x864c0
      rbp = 0x00007ffee4bface0   rsp = 0x00007ffee4bfac90
      rip = 0x00007fff356d04c0
      Found by: previous frame's frame pointer
  15  CoreFoundation + 0x8593d
      rbp = 0x00007ffee4bfb9d0   rsp = 0x00007ffee4bfacf0
      rip = 0x00007fff356cf93d
      Found by: previous frame's frame pointer
  16  CoreFoundation + 0x851a3
      rbp = 0x00007ffee4bfba60   rsp = 0x00007ffee4bfb9e0
      rip = 0x00007fff356cf1a3
      Found by: previous frame's frame pointer


I don't see evidence of this crash anywhere else so marking this P3. If there's any eyeball analysis which can be done to this code to make it more resilient to the GPU process crashing and associated context loss, that would be appreciated.

 
Labels: -Pri-3 Pri-2
Summary: Crash in CATransactionGPUCoordinator during context_lost tests (was: Crash in CATransactionGPUCoordinator during ContextLost_WebGLContextLostFromGPUProcessExit test)
Found one more incidence of this crash:
https://ci.chromium.org/p/chromium/builders/luci.chromium.try/mac_chromium_rel_ng/99699
https://chromium-swarm.appspot.com/task?id=3ed244cb9d0b7410&refresh=10&show_raw=1

ContextLost_WebGLBlockedAfterJSNavigation failed this time:

  	Operating system: Mac OS X
  	                  10.13.5 17F77
  	CPU: amd64
  	     family 6 model 70 stepping 1
  	     8 CPUs
  	
  	GPU: UNKNOWN
  	
  	Crash reason:  EXC_BREAKPOINT / EXC_I386_BPT
  	Crash address: 0x114bb9fd1
  	Process uptime: 2 seconds
  	
  	Thread 0 (crashed)
  	 0  Chromium Framework!__ZN4base5debug13BreakDebuggerEv + 0x11
  	    rax = 0x00007faeed167e4a   rdx = 0x00007faeed167e4a
  	    rcx = 0x0000000000000016   rbx = 0x0000000000000016
  	    rsi = 0x000000000000001b   rdi = 0x000000011cc27c34
  	    rbp = 0x00007ffee79b5b90   rsp = 0x00007ffee79b5b90
  	     r8 = 0x00007faeed167e60    r9 = 0x0000000000001213
  	    r10 = 0x00007faeed167e60   r11 = 0x0000000114bfaa90
  	    r12 = 0x00007faeebc107d0   r13 = 0x00007faeed167e60
  	    r14 = 0x00007ffee79b6160   r15 = 0x00007ffee79b6158
  	    rip = 0x0000000114bb9fd1
  	    Found by: given as instruction pointer in context
  	 1  Chromium Framework!__ZN7logging10LogMessageD2Ev + 0x8dd
  	    rbp = 0x00007ffee79b6140   rsp = 0x00007ffee79b5ba0
  	    rip = 0x0000000114ac068d
  	    Found by: previous frame's frame pointer
  	 2  Chromium Framework!__ZN7content27CATransactionGPUCoordinatorD0Ev + 0x62
  	    rbp = 0x00007ffee79b6290   rsp = 0x00007ffee79b6150
  	    rip = 0x000000011288bba2
  	    Found by: previous frame's frame pointer
  	 3  Chromium Framework!__ZN4base8internal9BindStateIMN2ui24CATransactionCoordinatorEFvPNS3_18PostCommitObserverEEJNS0_17UnretainedWrapperIS3_EENS0_18RetainedRefWrapperIN7content27CATransactionGPUCoordinatorEEEEE7DestroyEPKNS0_13BindStateBaseE + 0x36
  	    rbp = 0x00007ffee79b62b0   rsp = 0x00007ffee79b62a0
  	    rip = 0x000000011288c6e6
  	    Found by: previous frame's frame pointer
  	 4  Chromium Framework!__ZNO4base12OnceCallbackIFvvEE3RunEv + 0x73
  	    rbp = 0x00007ffee79b6400   rsp = 0x00007ffee79b62c0
  	    rip = 0x0000000112b26253
  	    Found by: previous frame's frame pointer
  	 5  Chromium Framework!__ZN4base5debug13TaskAnnotator7RunTaskEPKcPNS_11PendingTaskE + 0x141
  	    rbp = 0x00007ffee79b65c0   rsp = 0x00007ffee79b6410
  	    rip = 0x0000000114aa5e11
  	    Found by: previous frame's frame pointer
  	 6  Chromium Framework!__ZN4base11MessageLoop7RunTaskEPNS_11PendingTaskE + 0x216
  	    rbp = 0x00007ffee79b67b0   rsp = 0x00007ffee79b65d0
  	    rip = 0x0000000114adcfe6
  	    Found by: previous frame's frame pointer
  	 7  Chromium Framework!__ZN4base11MessageLoop21DeferOrRunPendingTaskENS_11PendingTaskE + 0xba
  	    rbp = 0x00007ffee79b6960   rsp = 0x00007ffee79b67c0
  	    rip = 0x0000000114add39a
  	    Found by: previous frame's frame pointer
  	 8  Chromium Framework!__ZN4base11MessageLoop6DoWorkEv + 0x23c
  	    rbp = 0x00007ffee79b6bf0   rsp = 0x00007ffee79b6970
  	    rip = 0x0000000114add61c
  	    Found by: previous frame's frame pointer
  	 9  Chromium Framework!__ZN4base24MessagePumpCFRunLoopBase7RunWorkEv + 0x2a
  	    rbp = 0x00007ffee79b6c20   rsp = 0x00007ffee79b6c00
  	    rip = 0x0000000114ae189a
  	    Found by: previous frame's frame pointer
  	10  Chromium Framework!__ZN4base3mac15CallWithEHFrameEU13block_pointerFvvE + 0xa
  	    rbp = 0x00007ffee79b6c30   rsp = 0x00007ffee79b6c30
  	    rip = 0x0000000114ac261a
  	    Found by: previous frame's frame pointer
  	11  Chromium Framework!__ZN4base24MessagePumpCFRunLoopBase13RunWorkSourceEPv + 0x3f
  	    rbp = 0x00007ffee79b6c70   rsp = 0x00007ffee79b6c40
  	    rip = 0x0000000114ae117f
  	    Found by: previous frame's frame pointer
  	12  CoreFoundation + 0xa3a61
  	    rbp = 0x00007ffee79b6c80   rsp = 0x00007ffee79b6c80
  	    rip = 0x00007fff341eca61
  	    Found by: previous frame's frame pointer
  	13  CoreFoundation + 0x15d47c
  	    rbp = 0x00007ffee79b6cb0   rsp = 0x00007ffee79b6c90
  	    rip = 0x00007fff342a647c
  	    Found by: previous frame's frame pointer
  	14  CoreFoundation + 0x864c0
  	    rbp = 0x00007ffee79b6d10   rsp = 0x00007ffee79b6cc0
  	    rip = 0x00007fff341cf4c0
  	    Found by: previous frame's frame pointer

Would be worth reviewing this code for resilience to context loss.

In the CATransactionGPUCoordinator  ctor and dtor we do
  ui::WindowResizeHelperMac::Get()->task_runner()->PostTask(
      FROM_HERE,
      base::BindOnce(&ui::CATransactionCoordinator::AddPostCommitObserver,
                     base::Unretained(&ui::CATransactionCoordinator::Get()),
                     base::RetainedRef(this)));
It's probably better to do
  ui::WindowResizeHelperMac::Get()->task_runner()->PostTask(
      FROM_HERE,
      base::BindOnce(&CATransactionGPUCoordinator::AddAsPostCommitObserver,
                     this))
and then have CATransactionGPUCoordinator::AddAsPostCommitObserver add and remove itself. It's not clear that it's a good idea to call ui::CATransactionCoordinator::Get() from the IO thread (see [1])


[1]
https://cs.chromium.org/chromium/src/ui/accelerated_widget_mac/ca_transaction_observer.mm?rcl=036438089d99d45c6b472cef75f77d9167eecbe0&l=35
Owner: ccameron@chromium.org
Status: Assigned (was: Untriaged)
ccameron: Can you assign this to somebody to get fixed?
Mergedinto: 871430
Status: Duplicate (was: Assigned)
This looks like it was  issue 871430 , now fixed

Sign in to add a comment