Moving the last tab of a window to another window hides its contents
Categories
(Core :: Widget: Gtk, defect, P2)
Tracking
()
Tracking | Status | |
---|---|---|
firefox-esr115 | --- | unaffected |
firefox122 | --- | unaffected |
firefox123 | --- | unaffected |
firefox124 | --- | verified |
firefox125 | --- | verified |
People
(Reporter: tgnff242, Assigned: stransky)
References
(Regression)
Details
(Keywords: nightly-community, regression)
Attachments
(2 files)
48 bytes,
text/x-phabricator-request
|
diannaS
:
approval-mozilla-beta+
|
Details | Review |
48 bytes,
text/x-phabricator-request
|
diannaS
:
approval-mozilla-beta+
|
Details | Review |
User Agent: Mozilla/5.0 (X11; Linux x86_64; rv:124.0) Gecko/20100101 Firefox/124.0
Steps to reproduce:
- Open a URL, eg. https://bugzilla.mozilla.org, in a new window. It should be the only tab of the window.
- Move its tab to another, pre-existing window.
KDE, X11.
Actual results:
The contents of the tab are not displayed any more.
Expected results:
This was introduced in Bug 1875369.
Comment 1•9 months ago
|
||
:stransky, since you are the author of the regressor, bug 1875369, could you take a look?
For more information, please visit BugBot documentation.
Updated•9 months ago
|
Comment 2•9 months ago
|
||
An error in Browser Console when drop the tab:
InvalidStateError: An attempt was made to use an object that is not, or is no longer, usable AboutNewTabParent.sys.mjs:28
handleEvent resource:///actors/AboutNewTabParent.sys.mjs:28
swapDocShells chrome://global/content/elements/browser-custom-element.js:1577
_swapBrowserDocShells chrome://browser/content/tabbrowser.js:4749
swapBrowsersAndCloseOther chrome://browser/content/tabbrowser.js:4634
adoptTab chrome://browser/content/tabbrowser.js:5163
on_drop chrome://browser/content/tabbrowser-tabs.js:808
handleEvent chrome://browser/content/tabbrowser-tabs.js:1853
Assignee | ||
Updated•9 months ago
|
Assignee | ||
Comment 4•9 months ago
|
||
It's a regression from https://phabricator.services.mozilla.com/D199085 will look at it.
Assignee | ||
Comment 5•9 months ago
|
||
It's caused by window->DisableRendering(); line at moz_container_unmap(). May we share compositor widget here?
Assignee | ||
Comment 6•9 months ago
|
||
Looks like caused by early mCompositorSession->Shutdown(); call on the windows which is going to be closed. If the tab is just copied we don't see such error. I wonder if we shutdown something related to puppet window or IPC channel so the reparented content page rendering is broken.
It doesn't affect in-process rendered pages line about:support and so.
Assignee | ||
Comment 8•9 months ago
|
||
Right now we destroy layer managed when nsWindow becomes hidden.
It makes sure that window rendering queue is suspended and invalid wl_surface is not used any more.
But it's also expensive operation and we need to create layer manager again if the window becomes visible again.
It also introduces a regression it tab is reparented and remairing nsWindow is closed.
In such case rendering pipeline is deleted and reparented tab is empty as associated rendering resources are already freed.
In this patch we don't delete layer manager on window hide but rather keep that operation to nsWindow::Destroy() as we do before.
Instead force GL backend to create small fallback EGLSurface for hidden nsWindow and keep potential async rendering running
until the window is deleted.
Assignee | ||
Updated•9 months ago
|
Comment 9•9 months ago
|
||
Set release status flags based on info from the regressing bug 1875369
Comment 10•9 months ago
|
||
Comment 11•9 months ago
•
|
||
Backout for causing failures in nsWindow.cpp.
- Backout link
- Push with failures
- Failure Log
- Failure line: SUMMARY: ThreadSanitizer: data race /builds/worker/checkouts/gecko/widget/gtk/nsWindow.cpp:9880:16 in nsWindow::DisableRendering()
Assignee | ||
Comment 12•9 months ago
|
||
- Implement nsWindow::SetTitlebarRect() and update titlebar area when nsWindow is resized.
- Make GetTitlebarRect() to only return value calculated at SetTitlebarRect().
- Protect both by mutex to make it thread safe.
Depends on D202179
Comment 13•9 months ago
|
||
Comment 15•9 months ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/0e6c8078c017
https://hg.mozilla.org/mozilla-central/rev/7346a5d91e93
Reporter | ||
Comment 17•9 months ago
|
||
The work in Bug 1875369 had fixed Bug 1730819 which has regressed again after the fix in this (1880323) bug. Was either of those intentional?
Comment hidden (Intermittent Failures Robot) |
Assignee | ||
Comment 19•9 months ago
|
||
(In reply to tgn-ff from comment #17)
The work in Bug 1875369 had fixed Bug 1730819 which has regressed again after the fix in this (1880323) bug. Was either of those intentional?
Bug 1730819 is regressed by this one, right? Yes, that's expected.
I can create a specific patch to release compositor for popups only but we need something general to go with beta now.
Assignee | ||
Comment 20•9 months ago
|
||
Comment on attachment 9380902 [details]
Bug 1880323 [Linux] Don't destroy layer manager at DisableRendering() r?emilio
Beta/Release Uplift Approval Request
- User impact if declined: Missing page content if tab is moved between browsers.
- Is this code covered by automated tests?: No
- Has the fix been verified in Nightly?: No
- Needs manual test from QE?: Yes
- If yes, steps to reproduce: 1) Open a URL, eg. https://bugzilla.mozilla.org, in a new window. It should be the only tab of the window.
- Move its tab to another, pre-existing window.
- Moved tab should have content and should not be blank.
- List of other uplifts needed: None
- Risk to taking this patch: Medium
- Why is the change risky/not risky? (and alternatives if risky): Changes window rendering shutdown sequence and leaves compositor opened until window destroy. It partially backouts Bug 1875369.
- String changes made/needed:
- Is Android affected?: No
Assignee | ||
Updated•9 months ago
|
Comment 21•9 months ago
|
||
Comment on attachment 9380902 [details]
Bug 1880323 [Linux] Don't destroy layer manager at DisableRendering() r?emilio
Approved for 124.0b5
Updated•9 months ago
|
Comment 22•9 months ago
|
||
uplift |
Updated•9 months ago
|
Updated•9 months ago
|
Comment 23•9 months ago
|
||
Reproduced the issue with Firefox 124.0a1 (2024-02-14) on Ubuntu 23.10 with Wayland using steps from comment 20. The moved tab has blank content.
The issue is verified fixed with Firefox 125.0a1 (2024-02-27) and 124.0b5 treeherder build from comment 22 on Ubuntu 23.10 (Wayland and X11) and Ubuntu 22.04 (Wayland). The moved tab is correctly displayed after following steps from comment 20.
Description
•