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•1 year 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•1 year ago
|
Comment 2•1 year 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•1 year ago
|
| Assignee | ||
Comment 4•1 year ago
|
||
It's a regression from https://phabricator.services.mozilla.com/D199085 will look at it.
| Assignee | ||
Comment 5•1 year ago
|
||
It's caused by window->DisableRendering(); line at moz_container_unmap(). May we share compositor widget here?
| Assignee | ||
Comment 6•1 year 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•1 year 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•1 year ago
|
Comment 9•1 year ago
|
||
Set release status flags based on info from the regressing bug 1875369
Comment 10•1 year ago
|
||
Comment 11•1 year 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•1 year 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•1 year ago
|
||
Comment 15•1 year ago
|
||
| bugherder | ||
https://hg.mozilla.org/mozilla-central/rev/0e6c8078c017
https://hg.mozilla.org/mozilla-central/rev/7346a5d91e93
| Reporter | ||
Comment 17•1 year 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•1 year 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•1 year 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•1 year ago
|
Comment 21•1 year ago
|
||
Comment on attachment 9380902 [details]
Bug 1880323 [Linux] Don't destroy layer manager at DisableRendering() r?emilio
Approved for 124.0b5
Updated•1 year ago
|
Comment 22•1 year ago
|
||
| uplift | ||
Updated•1 year ago
|
Updated•1 year 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
•