Closed Bug 1767128 Opened 3 years ago Closed 2 years ago

Web content painted black all when I type something with software keyboard whose height changed a lot while typing text, on Galaxy Tab S8+ (GPU process)

Categories

(GeckoView :: IME, defect, P2)

Other
Android

Tracking

(firefox-esr91 unaffected, firefox100 disabled, firefox101+ disabled, firefox102+ disabled, firefox103 fixed)

VERIFIED FIXED
103 Branch
Tracking Status
firefox-esr91 --- unaffected
firefox100 --- disabled
firefox101 + disabled
firefox102 + disabled
firefox103 --- fixed

People

(Reporter: masayuki, Assigned: jnicol)

References

(Regression)

Details

(Keywords: regression)

Attachments

(2 files, 1 obsolete file)

When I type something long text in <textarea> for example, filing a new bug, I sometimes see this bug, all the web content area is painted as black, and flashed if there is a caret and blinking. Then, the virtual keyboard of ATOK Pro (Japanese 3rd party's keyboard) becomes not painted correctly. Finally, I need to reboot Firefox Nightly for Android or once lock the screen with the power button.

I've still not reproduced this bug with Samsung's Galaxy keyboard. ATOK uses GPU for deep learning to improve/optimze the suggestions. However, even if I disable it from the settings, I still see this bug. And I don't see this bug on the other apps such as Twitter.

I also tried to change "Game Boost" settings of Galaxy, but it does not avoid this. I've never seen this bug until switching to Galaxy Tab S8+ (from Galaxy Tab S5e).

I have no idea how to investigate this bug more...

(I'll try to build locally and check warnings when I have a chance to do it in this week though.)

Perhaps, around here, this bug started to reproduce:

05-01 12:22:18.950  3308  3308 D DeviceState: getDeviceResolutionPixelSize - currentDensity = 340 deviceDensity = 340 initialDisplaySizeFactor = 1752 currentDisplaySizeFactor = 1752 initialDisplayDensity = 340 proportionalDensity = 340 proportionalPixel = 0
05-01 12:22:18.950  3308  3308 D DeviceState: getDeviceResolutionPixelSize - currentDensity = 340 deviceDensity = 340 initialDisplaySizeFactor = 1752 currentDisplaySizeFactor = 1752 initialDisplayDensity = 340 proportionalDensity = 340 proportionalPixel = 0
05-01 12:22:18.950  3308  3308 D DeviceState: getDeviceResolutionPixelSize - currentDensity = 340 deviceDensity = 340 initialDisplaySizeFactor = 1752 currentDisplaySizeFactor = 1752 initialDisplayDensity = 340 proportionalDensity = 340 proportionalPixel = 0
05-01 12:22:18.950  3308  3308 D PrivacyDotViewController: scheduleUpdate:
05-01 12:22:18.951  3308  4834 D PrivacyDotViewController: processNextViewState:
05-01 12:22:18.951  3308  4834 D PrivacyDotViewController: resolveState ViewState(viewInitialized=true, havingInset=false, isEdgeActive=false, dotTopMargin=32, systemPrivacyEventIsActive=false, shadeExpanded=false, qsExpanded=false, portraitRect=Rect(0, 0 - 1743, 51), landscapeRect=Rect(0, 0 - 2791, 51), upsideDownRect=Rect(0, 0 - 1743, 51), seascapeRect=Rect(0, 0 - 2791, 51), layoutRtl=false, rotation=0, height=51, cornerIndex=1, designatedCorner=android.widget.FrameLayout{2e29419 I.E...... ......ID 1717,32-1726,83 #7f0b067a app:id/privacy_dot_right_container})
05-01 12:22:18.951  3308  4834 D PrivacyDotViewController: resolveState: skipping
05-01 12:22:18.954  3308  3308 D PipMotionHelper: animateToOffset: originalBounds=Rect(1003, 1622 - 1718, 2024) offset=-102 callers=
05-01 12:22:18.954  3308  3308 D PipMotionHelper:     com.android.wm.shell.pip.phone.PipTouchHandler.onMovementBoundsChanged:482
05-01 12:22:18.954  3308  3308 D PipMotionHelper:     com.android.wm.shell.pip.phone.PipController.updateMovementBounds:700
05-01 12:22:18.954  3308  3308 D PipMotionHelper:     com.android.wm.shell.pip.phone.PipController.access$600:98
05-01 12:22:18.954  3308  3308 D PipMotionHelper:     com.android.wm.shell.pip.phone.PipController$PipControllerPinnedTaskListener.onMovementBoundsChanged:237
05-01 12:22:18.954  3308  3308 D PipMotionHelper:     com.android.wm.shell.pip.PinnedStackListenerForwarder.onMovementBoundsChanged:65
05-01 12:22:18.971 22445 22445 I ViewRootImpl@6fbe2fd[GeckoViewActivity]: [DP] dp(1) 1 android.view.SurfaceView.updateSurface:1375 android.view.SurfaceView.setFrame:675 android.view.View.layout:24458
05-01 12:22:18.972 22445 22445 I ViewRootImpl@6fbe2fd[GeckoViewActivity]: [DP] pdf(0) 1 android.view.SurfaceView.notifyDrawFinished:599 android.view.SurfaceView.performDrawFinished:586 android.view.SurfaceView.$r8$lambda$st27mCkd9jfJkTrN_P3qIGKX6NY:0
05-01 12:22:18.972 22445 22445 I ViewRootImpl@6fbe2fd[GeckoViewActivity]: [DP] rdf()
05-01 12:22:18.972 22445 22445 D ViewRootImpl@6fbe2fd[GeckoViewActivity]: reportDrawFinished (fn: -1)
05-01 12:22:18.972  2186  5644 D WindowManager: finishDrawingWindow: Window{a55f462 u0 org.mozilla.geckoview_example/org.mozilla.geckoview_example.GeckoViewActivity} mDrawState=HAS_DRAWN
05-01 12:22:18.973 22445 22490 I SurfaceView@fb32665: uSP: rtp = Rect(0, 51 - 1752, 2058) rtsw = 1752 rtsh = 2007
05-01 12:22:18.973 22445 22490 I SurfaceView@fb32665: onSSPAndSRT: pl = 0 pt = 51 sx = 1.0 sy = 1.0
05-01 12:22:18.973 22445 22490 I SurfaceView@fb32665: aOrMT: uB = true t = android.view.SurfaceControl$Transaction@ed0eb04 fN = 277 android.view.SurfaceView.access$500:124 android.view.SurfaceView$SurfaceViewPositionUpdateListener.positionChanged:1728 android.graphics.RenderNode$CompositePositionUpdateListener.positionChanged:319
05-01 12:22:18.973 22445 22490 I SurfaceView@fb32665: aOrMT: vR.mWNT, vR = ViewRootImpl@6fbe2fd[GeckoViewActivity]
05-01 12:22:18.973 22445 22490 I ViewRootImpl@6fbe2fd[GeckoViewActivity]: mWNT: t = android.view.SurfaceControl$Transaction@ed0eb04 fN = 277 android.view.SurfaceView.applyOrMergeTransaction:1628 android.view.SurfaceView.access$500:124 android.view.SurfaceView$SurfaceViewPositionUpdateListener.positionChanged:1728
05-01 12:22:18.973 22445 22490 I ViewRootImpl@6fbe2fd[GeckoViewActivity]: mWNT: merge t to BBQ
05-01 12:22:18.974 28241 28271 I BufferQueueProducer: [bbq-adapter#137(BLAST Consumer)137](id:6e5100000089,api:1,p:28241,c:28241) queueBuffer: queued for the first time.
05-01 12:22:18.977 22445 22445 D GeckoViewActivity: onFirstComposite
05-01 12:22:18.982  1547  1547 D SurfaceFlinger: Display 4630947232161729154 HWC layers:
05-01 12:22:18.982  1547  1547 D SurfaceFlinger:      DEVICE | 0xb4000076989e6df0 | 0100 | RGBx_8888    |    0.0    0.0 2007.0 1752.0 |   51    0 2058 1752 | bbq-wrapper#138
05-01 12:22:18.982  1547  1547 D SurfaceFlinger:      DEVICE | 0xb4000076989ea990 | 0100 | RGBA_8888    |    0.0    0.0 2800.0 1752.0 |    0    0 2800 1752 | org.mozilla.geckoview_example/org.mo[...]w_example.GeckoViewActivity$_22445#0
05-01 12:22:18.982  1547  1547 D SurfaceFlinger:      DEVICE | 0xb4000076989fd560 | 0100 | RGBA_8888    |    0.0    0.0 2749.0 1752.0 |   51    0 2800 1752 | InputMethod$_30598#0
05-01 12:22:18.982  1547  1547 D SurfaceFlinger:      DEVICE | 0xb400007698a02c90 | 0100 | RGBA_8888    |    0.0    0.0  408.0  578.0 | 2157  299 2565  877 | PopupWindow:244308a$_30598#0
05-01 12:22:18.982  1547  1547 D SurfaceFlinger:      DEVICE | 0xb4000076989eda80 | 0100 | RGBA_8888    |    0.0    0.0   51.0 1752.0 |    0    0   51 1752 | StatusBar$_3308#0
05-01 12:22:18.982  1547  1547 D SurfaceFlinger:      DEVICE | 0xb4000076989e0af0 | 0100 | RGBA_8888    |    0.0    0.0  327.0   67.0 |  220    0  547   67 | com.samsung.android.app.cocktailbars[...]rservice.CocktailBarService$_28143#0
05-01 12:22:18.982  1547  1547 D SurfaceFlinger:      DEVICE | 0xb4000076989e29e0 | 0100 | RGBA_8888    |    0.0    0.0  102.0 1752.0 | 26
05-01 12:22:18.982  1547  1547 D SurfaceFlinger: 98    0 2800 1752 | NavigationBar0$_3308#0
05-01 12:22:18.982  1547  1547 D SurfaceFlinger:
05-01 12:22:18.983 22445 22480 I Gecko   : nsWindow[0x9f092060]::Resize [0.000000 51.000000 1752.000000 2007.000000] (repaint 0)
05-01 12:22:18.983 22445 22480 I Gecko   : nsWindow: 0x9f092060 OnSizeChanged [1752 2007]
05-01 12:22:18.984  1428  1600 E SDM     : DRMMaster::CreateFbId: drmPrimeFDToHandle failed with error -1
05-01 12:22:18.988  1428  1600 E SDM     : HWDeviceDRM::CreateFbId: CreateFbId failed. width 2048, height 1760, format: RGBX_8888_UBWC, stride 8192, error 12
05-01 12:22:18.992  1428  1600 E SDM     : DRMMaster::CreateFbId: drmPrimeFDToHandle failed with error -1
05-01 12:22:18.992  1428  1600 E SDM     : HWDeviceDRM::CreateFbId: CreateFbId failed. width 2048, height 1760, format: RGBX_8888_UBWC, stride 8192, error 12
05-01 12:22:19.003  1428  1600 E SDM     : DRMMaster::CreateFbId: drmPrimeFDToHandle failed with error -1
05-01 12:22:19.003  1428  1600 E SDM     : HWDeviceDRM::CreateFbId: CreateFbId failed. width 2048, height 1760, format: RGBX_8888_UBWC, stride 8192, error 12
05-01 12:22:19.009  1428  1600 E SDM     : DRMMaster::CreateFbId: drmPrimeFDToHandle failed with error -1
05-01 12:22:19.009  1428  1600 E SDM     : HWDeviceDRM::CreateFbId: CreateFbId failed. width 2048, height 1760, format: RGBX_8888_UBWC, stride 8192, error 12
05-01 12:22:19.013  1428  1600 E SDM     : DRMMaster::CreateFbId: drmPrimeFDToHandle failed with error -1
05-01 12:22:19.013  1428  1600 E SDM     : HWDeviceDRM::CreateFbId: CreateFbId failed. width 2048, height 1760, format: RGBX_8888_UBWC, stride 8192, error 12
05-01 12:22:19.022  1428  1600 E SDM     : DRMMaster::CreateFbId: drmPrimeFDToHandle failed with error -1
05-01 12:22:19.022  1428  1600 E SDM     : HWDeviceDRM::CreateFbId: CreateFbId failed. width 2048, height 1760, format: RGBX_8888_UBWC, stride 8192, error 12
05-01 12:22:19.030 30598 30629 D OpenGLRenderer: setSurface called with nullptr
05-01 12:22:19.030 30598 30629 D OpenGLRenderer: setSurface() destroyed EGLSurface
05-01 12:22:19.030 30598 30629 D OpenGLRenderer: destroyEglSurface
05-01 12:22:19.030 28287 28313 D GeckoViewProgressDelegate[C]: handleEvent: MozAfterPaint
05-01 12:22:19.030  1428  1600 E SDM     : DRMMaster::CreateFbId: drmPrimeFDToHandle failed with error -1
05-01 12:22:19.030  1428  1600 E SDM     : HWDeviceDRM::CreateFbId: CreateFbId failed. width 2048, height 1760, format: RGBX_8888_UBWC, stride 8192, error 12
05-01 12:22:19.031 30598 30598 I ViewRootImpl@b3ae206[PopupWindow:244308a]: dispatchDetachedFromWindow
05-01 12:22:19.032  2186  5644 D InputTransport: Input channel destroyed: 'bbcd513', fd=635
05-01 12:22:19.032  2186  5644 W InputManager-JNI: Input channel object 'bbcd513 PopupWindow:244308a (client)' was disposed without first being removed with the input manager!
05-01 12:22:19.032  2186  5644 D InputTransport: Input channel destroyed: 'bbcd513', fd=671
05-01 12:22:19.032  2186  5644 I WindowManager: Destroying surface Surface(name=PopupWindow:244308a$_30598)/@0x61b55a called by com.android.server.wm.WindowStateAnimator.destroySurface:987 com.android.server.wm.WindowStateAnimator.destroySurfaceLocked:518 com.android.server.wm.WindowState.removeImmediately:2960 com.android.server.wm.WindowState.removeIfPossible:3151 com.android.server.wm.WindowState.removeIfPossible:2984 com.android.server.wm.WindowManagerService.removeWindow:2243 com.android.server.wm.Session.remove:225 android.view.IWindowSession$Stub.onTransact:746 
05-01 12:22:19.034 30598 30598 D InputTransport: Input channel destroyed: 'bbcd513', fd=104
05-01 12:22:19.036  1547  1547 I Layer   : id=76562 removedFromDrawingState PopupWindow:244308a$_30598#0 (286)
05-01 12:22:19.036  1547  1547 I Layer   : id=76561 removedFromDrawingState bbcd513 PopupWindow:244308a#0 (286)
05-01 12:22:19.036  1547  1547 I SurfaceFlinger: id=76561 Removed bbcd513 PopupWindow:244308a#0 (286)
05-01 12:22:19.036  1547  1547 I Layer   : id=76561 Destroyed bbcd513 PopupWindow:244308a#0
05-01 12:22:19.040  1547  1547 D SurfaceFlinger: Display 4630947232161729154 HWC layers:
05-01 12:22:19.040  1547  1547 D SurfaceFlinger:      DEVICE | 0xb4000076989e6df0 | 0100 | RGBx_8888    |    0.0    0.0 2007.0 1752.0 |   51    0 2058 1752 | bbq-wrapper#138
05-01 12:22:19.040  1547  1547 D SurfaceFlinger:      DEVICE | 0xb4000076989c16e0 | 0100 | RGBA_8888    |    0.0    0.0 2800.0 1752.0 |    0    0 2800 1752 | org.mozilla.geckoview_example/org.mo[...]w_example.GeckoViewActivity$_22445#0
05-01 12:22:19.040  1547  1547 D SurfaceFlinger:      DEVICE | 0xb4000076989fd560 | 0100 | RGBA_8888    |    0.0    0.0 2749.0 1752.0 |   51    0 2800 1752 | InputMethod$_30598#0
05-01 12:22:19.040  1547  1547 D SurfaceFlinger:      DEVICE | 0xb4000076989eda80 | 0100 | RGBA_8888    |    0.0    0.0   51.0 1752.0 |    0    0   51 1752 | StatusBar$_3308#0
05-01 12:22:19.040  1547  1547 D SurfaceFlinger:      DEVICE | 0xb4000076989e0af0 | 0100 | RGBA_8888    |    0.0    0.0  327.0   67.0 |  220    0  547   67 | com.samsung.android.app.cocktailbars[...]rservice.CocktailBarService$_28143#0
05-01 12:22:19.040  1547  1547 D SurfaceFlinger:      DEVICE | 0xb4000076989e29e0 | 0100 | RGBA_8888    |    0.0    0.0  102.0 1752.0 | 2698    0 2800 1752 | NavigationBar0$_3308#0
05-01 12:22:19.040  1547  1547 D SurfaceFlinger: 
05-01 12:22:19.041  1428  1600 E SDM     : DRMMaster::CreateFbId: drmPrimeFDToHandle failed with error -1
05-01 12:22:19.041  1428  1600 E SDM     : HWDeviceDRM::CreateFbId: CreateFbId failed. width 2048, height 1760, format: RGBX_8888_UBWC, stride 8192, error 12
05-01 12:22:19.042  1547  1655 I SurfaceFlinger: id=76562 Removed PopupWindow:244308a$_30598#0 (285)
05-01 12:22:19.042 22445 22480 D GeckoViewProgress: receiveMessage: MozAfterPaint
05-01 12:22:19.044  1547  1547 I Layer   : id=76562 Destroyed PopupWindow:244308a$_30598#0
05-01 12:22:19.048  1428  1600 E SDM     : DRMMaster::CreateFbId: drmPrimeFDToHandle failed with error -1
05-01 12:22:19.048  1428  1600 E SDM     : HWDeviceDRM::CreateFbId: CreateFbId failed. width 2048, height 1760, format: RGBX_8888_UBWC, stride 8192, error 12
05-01 12:22:19.063 28287 28313 D GeckoViewProgressDelegate[C]: handleEvent: MozAfterPaint
05-01 12:22:19.064 28287 28313 D GeckoViewProgressDelegate[C]: handleEvent: MozAfterPaint
05-01 12:22:19.065 22445 22480 D GeckoViewProgress: receiveMessage: MozAfterPaint
05-01 12:22:19.066 22445 22480 D GeckoViewProgress: receiveMessage: MozAfterPaint

This is log when I reproduce this bug with GeckoView Example.

It seems that this is not reproducible if ATOK is in floating window mode. So, the PiP module in the log could be related or GeckoView has a bug around resizing the window. I'll try to test in split mode and Dex of One UI.

I guess that this depends on WebRender. When showing VKB, we re-size window only. Does gfx.webrender.software=true resolve this issue?

Flags: needinfo?(masayuki)

(In reply to Makoto Kato [:m_kato] (slow response until 5/8) from comment #6)

I guess that this depends on WebRender. When showing VKB, we re-size window only. Does gfx.webrender.software=true resolve this issue?

Unfortunately, it does not help. I reproduced this bug with enabling it (I restarted Nightly before testing it).

I realize that the resizing occures a lot because of changing the lines of candidate list. When typing a character, it appears, but when I type a space, it disappears. So while I type English text, the resizing occures too much (at least twice of number of typed words). Before reproducing this bug I see unstable flushing some times.

I'll try to reproduce this bug with other Japanese IME.

Flags: needinfo?(masayuki)

Okay, I reproduce this bug with Gboard with Japanese keyboard with the following steps:

  1. Type some characters in the comment field of a bug page (e.g., here) (The candidate list appears)
  2. Commit it with Enter in the software keyboard
  3. Type space (The candidate list disappears)
  4. Repeat #1 ~ #4 30 or more times with sometimes inserting a line break
Summary: Web content painted black all when I type something with ATOK Pro on Galaxy Tab S8+ → Web content painted black all when I type something with software keyboard whose height changed while typing text a lot, on Galaxy Tab S8+
Summary: Web content painted black all when I type something with software keyboard whose height changed while typing text a lot, on Galaxy Tab S8+ → Web content painted black all when I type something with software keyboard whose height changed a lot while typing text, on Galaxy Tab S8+

The black screen makes Agi suspect this might be a GPU process crash. He will provide instructions on how to disable the GPU process for testing.

Severity: -- → S3
Flags: needinfo?(agi)
Priority: -- → P3

Masayuki, could you try setting layers.gpu-process.enabled to false and see if you can still reproduce? Thanks.

Flags: needinfo?(agi)

(In reply to Agi Sferro | :agi | [slow ni? rn sorry] | ⏰ PST | he/him from comment #10)

Masayuki, could you try setting layers.gpu-process.enabled to false and see if you can still reproduce? Thanks.

Yeah, it seems that disabling the pref avoids this bug. Can I put some info for helping you guys to debug?

(In reply to Masayuki Nakano [:masayuki] (he/him)(JST, +0900)(Away: ~5/8) from comment #11)

(In reply to Agi Sferro | :agi | [slow ni? rn sorry] | ⏰ PST | he/him from comment #10)

Masayuki, could you try setting layers.gpu-process.enabled to false and see if you can still reproduce? Thanks.

Yeah, it seems that disabling the pref avoids this bug. Can I put some info for helping you guys to debug?

Jamie, looks like Masayuki is hitting an Android GPU process crash. What information can he share to help debug this?

Android GPU process (bug 1331109) shipped in v100.

Blocks: 1331109
Flags: needinfo?(jnicol)

Can reproduce in GVE with an english keyboard by opening and closing the keyboard about a hundred times.

This is a regression from bug 1762424 (which landed in 101), and only seems to affect Android 12. It appears that when we create the Surface from a SurfaceControl in a separate process it gets leaked. (Or not GCed quickly enough, since turning the display off and on again seems to fix it)

I think I have a fix. There doesn't appear to be a simple way to force the Surface to be cleaned up (release() doesn't work). But if we create a child SurfaceControl from the main SurfaceControl, and create our Surface from the child one instead, then we can call Transaction.reparent(childSurfaceControl, null) to force it to be cleaned up.

Additionally, we should only actually create a new child Surface if the SurfaceControl object has changed. When SyncResumeAndResize() is called because of the keyboard resizing the window, the SurfaceControl object remains the same. This means our Surface is still valid, we just need to apply a transaction with the new size. That will massively reduce the number of new Surfaces we are creating.

Masayuki, could you please test the geckoview_example apk from this job (when it completes) and see if that fixes it? Thanks!

Flags: needinfo?(jnicol) → needinfo?(masayuki)
Regressed by: 1762424

(In reply to Jamie Nicol [:jnicol] from comment #13)

Masayuki, could you please test the geckoview_example apk from this job (when it completes) and see if that fixes it? Thanks!

It seems that your patch/build fixed this bug! Thank you, and congratulations!

Flags: needinfo?(masayuki)

Great, thanks for testing.

On further investigation, I don't think messing around with child SurfaceControl objects is necessary. This all seems to stem from sending the main SurfaceControl instance repeatedly over AIDL to the GPU process. It must create multiple "shallow copy" type things of the same object, which are still linked but aren't fully synchronzed, and that seems to interfere with it's resource/memory management. If we avoid sending the same SurfaceControl multiple times, and just use a single instance in the GPU process then we avoid this issue.

My above patch avoids re-sending the SurfaceControl instance when we ResumeAndResize() a widget. However, we still send it separately for each widget. So I think it might still be able to reproduce this bug by creating a very large number of tabs.

In practice I think we just use a single SurfaceView, and therefore could probably even get away with implementing CompositorSurfaceManager using just a global SurfaceControl instance. But I implemented it as a map from WidgetId to Surface/SurfaceControl in case we want to support showing multiple tabs at once. I assume the GeckoView API allows that, even if Fenix doesn't make use of it.

But this isn't too hard to fix by adding a map in the parent process side of CompositorSurfaceManager, and we can therefore avoid sending the SurfaceControl across to the GPU process if it has already been sent across (even if for a different widget)

Has Regression Range: --- → yes

On Android 12, we have observed issues when the widget is resized
repeatedly when the GPU process is enabled. This appears to be due to
sending the SurfaceControl object repeatedly over AIDL to the GPU
process. Although the deserialized objects in the GPU process should
be linked, this seems to cause Surfaces created from the
SurfaceControls to be leaked, eventually resulting in severe display
issues.

To avoid this, this patch makes CompositorSurfaceManager keep track of
which SurfaceControl objects it has already sent to the GPU process,
and avoids re-sending the same instances. Instead, it sends IDs which
the RemoteCompositorSurfaceManager can use to find the already
deserialized objects. When the application is backgrounded we clean up
the SurfaceControls, as they will not be reused when the application
is foregrounded again.

A consequence of this is that we can no longer use a SurfaceControl
Transaction to set the buffer size in the parent process, as this no
longer gets reflected in the GPU process if we do not subsequently
re-send the SurfaceControl. Instead we must set the transaction from
the compositor widget, which is now notified of its new size by
CompositorBridgeParent::ResumeCompositionAndResize.

Assignee: nobody → jnicol
Status: NEW → ASSIGNED

Changing the priority to P1 as the bug is tracked by a release manager for the current beta.
See Triage for Bugzilla for more information.
If you disagree, please discuss with a release manager.

Priority: P3 → P1

(In reply to Release mgmt bot [:suhaib / :marco/ :calixte] from comment #17)

Changing the priority to P1 as the bug is tracked by a release manager for the current beta.
See Triage for Bugzilla for more information.
If you disagree, please discuss with a release manager.

Bug 1768674 is disabling the GPU process on Beta

The severity field for this bug is set to S3. However, the bug is marked as tracked for firefox102 (nightly) and tracked for firefox101 (beta).
:jnicol, could you consider increasing the severity of this tracked bug?

For more information, please visit auto_nag documentation.

Flags: needinfo?(jnicol)

Dropping priority from P1 to P2 because the GPU process is not currently enabled, so this isn't affecting users.

Priority: P1 → P2
Summary: Web content painted black all when I type something with software keyboard whose height changed a lot while typing text, on Galaxy Tab S8+ → Web content painted black all when I type something with software keyboard whose height changed a lot while typing text, on Galaxy Tab S8+ (GPU process)
Attachment #9275931 - Attachment is obsolete: true

In bug 1762424 we introduced a rendering path on Android using the
SurfaceControl API, in order to work around a bug preventing recovery
from a GPU process crash. However, the initial implementation caused
this bug: repeatedly sending the same SurfaceControl objects over AIDL
to the GPU process resulted in them being leaked, eventually causing
severe display issues. Not only were we duplicating the SurfaceControl
for each widget, but each time a widget was resized too.

This patch reworks our usage of the SurfaceControl API to avoid ever
having to send them cross-process. Instead, we create a single child
SurfaceControl object for each SurfaceControl that is attached to a
widget. (Typically there will be a single one shared between all
widgets, changing only when the app is paused and resumed, which is
much fewer than one per widget per resize.)

In the parent process we obtain the Surfaces that will be rendered in
to from the child SurfaceControls, and only send those Surfaces to the
GPU process. Thankfully unlike SurfaceControls, sending Surfaces
cross-process does not cause leaks. When the GPU process dies we
simply destroy all of the child SurfaceControls, and recreate them
again on-demand.

Pushed by jnicol@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/1d1a02444b51 Rework and re-enable SurfaceControl rendering path on Android. r=agi,gfx-reviewers,aosmond
Status: ASSIGNED → RESOLVED
Closed: 2 years ago
Resolution: --- → FIXED
Target Milestone: --- → 103 Branch

(In reply to Chris Peterson [:cpeterson] from comment #20)

Dropping priority from P1 to P2 because the GPU process is not currently enabled, so this isn't affecting users.

AFAIU the GPU process was disabled for Android via an uplift to beta 101 in bug 1768674 but this was not disabled in 102 so we are shipping with this bug in Geckoview 102. Can we get this disabled in 102? Thanks

Flags: needinfo?(cpeterson)

Bug 1768925 prevented this bug from affecting 102

Flags: needinfo?(jnicol)

(In reply to Pascal Chevrel:pascalc from comment #24)

AFAIU the GPU process was disabled for Android via an uplift to beta 101 in bug 1768674 but this was not disabled in 102 so we are shipping with this bug in Geckoview 102. Can we get this disabled in 102? Thanks

(In reply to Jamie Nicol [:jnicol] from comment #25)

Bug 1768925 prevented this bug from affecting 102

In conclusion, IIUC, the Android GPU process will ship in 102, but this crash is avoided in 102 due to the fix in bug 1768925. So no need to uplift or disable anything in 102.

Flags: needinfo?(cpeterson)

Moving some keyboard bugs to the new GeckoView::IME component.

Component: General → IME

After fixing this bug, I reset the pref, and I've never seen this bug.

-> v.

Status: RESOLVED → VERIFIED
Regressions: 1780093
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: