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)
Tracking
(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...
Reporter | ||
Comment 1•3 years ago
|
||
(I'll try to build locally and check warnings when I have a chance to do it in this week though.)
Reporter | ||
Comment 2•3 years ago
|
||
Reporter | ||
Comment 3•3 years ago
|
||
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.
Reporter | ||
Comment 4•3 years ago
|
||
Reporter | ||
Comment 5•3 years ago
|
||
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.
Comment 6•3 years ago
•
|
||
I guess that this depends on WebRender. When showing VKB, we re-size window only. Does gfx.webrender.software=true
resolve this issue?
Reporter | ||
Comment 7•3 years ago
•
|
||
(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.
Reporter | ||
Comment 8•3 years ago
|
||
Okay, I reproduce this bug with Gboard with Japanese keyboard with the following steps:
- Type some characters in the comment field of a bug page (e.g., here) (The candidate list appears)
- Commit it with
Enter
in the software keyboard - Type space (The candidate list disappears)
- Repeat #1 ~ #4 30 or more times with sometimes inserting a line break
Reporter | ||
Updated•3 years ago
|
Comment 9•3 years ago
|
||
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.
Comment 10•3 years ago
|
||
Masayuki, could you try setting layers.gpu-process.enabled
to false and see if you can still reproduce? Thanks.
Reporter | ||
Comment 11•3 years ago
|
||
(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?
Comment 12•3 years ago
|
||
(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.
Assignee | ||
Comment 13•3 years ago
|
||
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!
Updated•3 years ago
|
Reporter | ||
Comment 14•3 years ago
|
||
(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!
Assignee | ||
Comment 15•3 years ago
|
||
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)
Updated•3 years ago
|
Assignee | ||
Comment 16•3 years ago
|
||
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.
Updated•3 years ago
|
Updated•3 years ago
|
Comment 17•3 years ago
|
||
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.
Assignee | ||
Comment 18•3 years ago
|
||
(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
Updated•3 years ago
|
Comment 19•3 years ago
|
||
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.
Comment 20•3 years ago
|
||
Dropping priority from P1 to P2 because the GPU process is not currently enabled, so this isn't affecting users.
Updated•3 years ago
|
Assignee | ||
Comment 21•3 years ago
|
||
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.
Comment 22•3 years ago
|
||
Comment 23•3 years ago
|
||
bugherder |
Comment 24•2 years ago
•
|
||
(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
Assignee | ||
Comment 25•2 years ago
|
||
Bug 1768925 prevented this bug from affecting 102
Assignee | ||
Updated•2 years ago
|
Comment 26•2 years ago
|
||
(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.
Comment 27•2 years ago
|
||
Moving some keyboard bugs to the new GeckoView::IME component.
Reporter | ||
Comment 28•2 years ago
|
||
After fixing this bug, I reset the pref, and I've never seen this bug.
-> v.
Description
•