Closed Bug 1609732 Opened 3 years ago Closed 3 years ago

Popup windows at screen edge misplaced

Categories

(Core :: Widget: Gtk, defect, P3)

x86_64
Linux
defect

Tracking

()

RESOLVED FIXED
mozilla74
Tracking Status
firefox74 --- fixed

People

(Reporter: heftig, Assigned: jhorak)

References

(Blocks 1 open bug, Regression)

Details

(Keywords: regression)

Crash Data

Attachments

(2 files)

Popup windows that need to evade the screen's edge get misplaced. For example, when the window is maximized:

  • Opening the page's context menu near the bottom edge of the screen
  • Displaying the hamburger menu button's tooltip (which reads "Open menu")

Most of the time the popup appears in the bottom right corner. Sometimes it does not appear at all. Sometimes the tooltip is placed in a random spot at the right edge.

GNOME Shell 3.34.3, scale 2, no scale-monitor-framebuffer

Here's a Widget:5 log from a single attempt at showing the hamburger's tooltip. It appears the initial position was (1284, 108) and it was relocated slightly leftwards to (1211, 108) in order to evade the right edge, which looks sensible. However, somehow a cascade of further moves is triggered.

[Parent 92430: Main Thread]: D/Widget   workarea for [0x7f55b84c6000], monitor 0x7f55df05e100: x0 y0 w3840 h2400
[Parent 92430: Main Thread]: D/Widget   workarea for [0x7f55b84c6000], monitor 0x7f55df05e100: x0 y0 w3840 h2400
[Parent 92430: Main Thread]: D/Widget nsWindow::Move [0x7f55b84c6000] 1284.000000 108.000000
[Parent 92430: Main Thread]: D/Widget nsWindow::NativeMove [0x7f55b84c6000] 1284 108
[Parent 92430: Main Thread]: D/Widget nsWindow::NativeMoveResizeWaylandPopup [0x7f55b84c6000]
[Parent 92430: Main Thread]: D/Widget nsWindow::ConfigureWaylandPopupWindows [0x7f55b84c6000], frame 0x7f55c8a9f330 hasRemoteContent 0
[Parent 92430: Main Thread]: D/Widget   nsMenuPopupFrame [0x7f55c8a9f330] type: 2 IsMenu: 0, IsMenuList: 0
[Parent 92430: Main Thread]: D/Widget   Parent window for 0x7f55b84c6000: 0x7f55cb2efa60 [GtkWindow]
[Parent 92430: Main Thread]: D/Widget nsWindow::NativeMoveResizeWaylandPopup: Set popup parent 0x7f55cb2efa60
[Parent 92430: Main Thread]: D/Widget   x_parent    0   y_parent    0
[Parent 92430: Main Thread]: D/Widget   aPosition x 1284   aPosition y 108
[Parent 92430: Main Thread]: D/Widget   rect.x      1284   rect.y      108
[Parent 92430: Main Thread]: D/Widget   requested rect: x: 1284 y: 108 width: 104 height: 46
[Parent 92430: Main Thread]: D/Widget   aSize: x0 y0 w104 h46
[Parent 92430: Main Thread]: D/Widget nsWindow::Show [0x7f55b84c6000] state 1
[Parent 92430: Main Thread]: D/Widget nsWindow::ConfigureWaylandPopupWindows [0x7f55b84c6000], frame 0x7f55c8a9f330 hasRemoteContent 0
[Parent 92430: Main Thread]: D/Widget   [0x7f55b84c6000] is already configured.
[Parent 92430: Main Thread]: D/Widget nsWindow::OnWindowStateEvent [0x7f55b84c6000] for 0x7f55b86ab260 changed 0x1 new_window_state 0x80
[Parent 92430: Main Thread]: D/Widget 	early return because no interesting bits changed
[Parent 92430: Main Thread]: D/Widget nsWindow::OnWindowStateEvent [0x7f55b84c6000] for 0x7f55b85fa0d0 changed 0x1 new_window_state 0x80
[Parent 92430: Main Thread]: D/Widget 	quick return because IS_MOZ_CONTAINER(aWidget) is true
[Parent 92430: Main Thread]: D/Widget NativeMoveResizeWaylandPopupCallback [0x7f55b84c6000] flipped_x 0 flipped_y 0
[Parent 92430: Main Thread]: D/Widget   flipped_rect x=1284 y=108 width=104 height=46
[Parent 92430: Main Thread]: D/Widget   final_rect   x=1211 y=108 width=104 height=46
[Parent 92430: Main Thread]: D/Widget   orig mBounds x=2568 y=216 width=208 height=92
[Parent 92430: Main Thread]: D/Widget   new mBounds  x=2422 y=216 width=208 height=92
[Parent 92430: Main Thread]: D/Widget nsWindow::Move [0x7f55b84c6000] 2422.000000 216.000000
[Parent 92430: Main Thread]: D/Widget nsWindow::NativeMove [0x7f55b84c6000] 2422 216
[Parent 92430: Main Thread]: D/Widget nsWindow::NativeMoveResizeWaylandPopup [0x7f55b84c6000]
[Parent 92430: Main Thread]: D/Widget nsWindow::ConfigureWaylandPopupWindows [0x7f55b84c6000], frame 0x7f55c8a9f330 hasRemoteContent 0
[Parent 92430: Main Thread]: D/Widget   [0x7f55b84c6000] is already configured.
[Parent 92430: Main Thread]: D/Widget nsWindow::NativeMoveResizeWaylandPopup: Set popup parent 0x7f55cb2efa60
[Parent 92430: Main Thread]: D/Widget   x_parent    0   y_parent    0
[Parent 92430: Main Thread]: D/Widget   aPosition x 2422   aPosition y 216
[Parent 92430: Main Thread]: D/Widget   rect.x      2422   rect.y      216
[Parent 92430: Main Thread]: D/Widget nsWindow::HideWaylandWindow: popup [0x7f55b84c6000]
[Parent 92430: Main Thread]: D/Widget   requested rect: x: 2422 y: 216 width: 104 height: 46
[Parent 92430: Main Thread]: D/Widget   aSize: x0 y0 w104 h46
[Parent 92430: Main Thread]: D/Widget   workarea for [0x7f55b84c6000], monitor 0x7f55df05e100: x0 y0 w3840 h2400
[Parent 92430: Main Thread]: D/Widget nsWindow::OnWindowStateEvent [0x7f55b84c6000] for 0x7f55b86ab260 changed 0x0 new_window_state 0x80
[Parent 92430: Main Thread]: D/Widget 	early return because no interesting bits changed
[Parent 92430: Main Thread]: D/Widget nsWindow::OnWindowStateEvent [0x7f55b84c6000] for 0x7f55b85fa0d0 changed 0x0 new_window_state 0x80
[Parent 92430: Main Thread]: D/Widget 	quick return because IS_MOZ_CONTAINER(aWidget) is true
[Parent 92430: Main Thread]: D/Widget NativeMoveResizeWaylandPopupCallback [0x7f55b84c6000] flipped_x 0 flipped_y 0
[Parent 92430: Main Thread]: D/Widget   flipped_rect x=2422 y=216 width=104 height=46
[Parent 92430: Main Thread]: D/Widget   final_rect   x=1211 y=216 width=104 height=46
[Parent 92430: Main Thread]: D/Widget   orig mBounds x=4844 y=432 width=208 height=92
[Parent 92430: Main Thread]: D/Widget   new mBounds  x=2422 y=432 width=208 height=92
[Parent 92430: Main Thread]: D/Widget nsWindow::Move [0x7f55b84c6000] 2422.000000 432.000000
[Parent 92430: Main Thread]: D/Widget nsWindow::NativeMove [0x7f55b84c6000] 2422 432
[Parent 92430: Main Thread]: D/Widget nsWindow::NativeMoveResizeWaylandPopup [0x7f55b84c6000]
[Parent 92430: Main Thread]: D/Widget nsWindow::ConfigureWaylandPopupWindows [0x7f55b84c6000], frame 0x7f55c8a9f330 hasRemoteContent 0
[Parent 92430: Main Thread]: D/Widget   nsMenuPopupFrame [0x7f55c8a9f330] type: 2 IsMenu: 0, IsMenuList: 0
[Parent 92430: Main Thread]: D/Widget   Parent window for 0x7f55b84c6000: 0x7f55cb2efa60 [GtkWindow]
[Parent 92430: Main Thread]: D/Widget nsWindow::NativeMoveResizeWaylandPopup: Set popup parent 0x7f55cb2efa60
[Parent 92430: Main Thread]: D/Widget   x_parent    0   y_parent    0
[Parent 92430: Main Thread]: D/Widget   aPosition x 2422   aPosition y 432
[Parent 92430: Main Thread]: D/Widget   rect.x      2422   rect.y      432
[Parent 92430: Main Thread]: D/Widget nsWindow::HideWaylandWindow: popup [0x7f55b84c6000]
[Parent 92430: Main Thread]: D/Widget   requested rect: x: 2422 y: 432 width: 104 height: 46
[Parent 92430: Main Thread]: D/Widget   aSize: x0 y0 w104 h46
[Parent 92430: Main Thread]: D/Widget   workarea for [0x7f55b84c6000], monitor 0x7f55df05e100: x0 y0 w3840 h2400
[Parent 92430: Main Thread]: D/Widget nsWindow::OnWindowStateEvent [0x7f55b84c6000] for 0x7f55b86ab260 changed 0x0 new_window_state 0x80
[Parent 92430: Main Thread]: D/Widget 	early return because no interesting bits changed
[Parent 92430: Main Thread]: D/Widget nsWindow::OnWindowStateEvent [0x7f55b84c6000] for 0x7f55b85fa0d0 changed 0x0 new_window_state 0x80
[Parent 92430: Main Thread]: D/Widget 	quick return because IS_MOZ_CONTAINER(aWidget) is true
[Parent 92430: Main Thread]: D/Widget NativeMoveResizeWaylandPopupCallback [0x7f55b84c6000] flipped_x 0 flipped_y 0
[Parent 92430: Main Thread]: D/Widget   flipped_rect x=2422 y=432 width=104 height=46
[Parent 92430: Main Thread]: D/Widget   final_rect   x=1211 y=432 width=104 height=46
[Parent 92430: Main Thread]: D/Widget   orig mBounds x=4844 y=864 width=208 height=92
[Parent 92430: Main Thread]: D/Widget   new mBounds  x=2422 y=864 width=208 height=92
[Parent 92430: Main Thread]: D/Widget nsWindow::Move [0x7f55b84c6000] 2422.000000 864.000000
[Parent 92430: Main Thread]: D/Widget nsWindow::NativeMove [0x7f55b84c6000] 2422 864
[Parent 92430: Main Thread]: D/Widget nsWindow::NativeMoveResizeWaylandPopup [0x7f55b84c6000]
[Parent 92430: Main Thread]: D/Widget nsWindow::ConfigureWaylandPopupWindows [0x7f55b84c6000], frame 0x7f55c8a9f330 hasRemoteContent 0
[Parent 92430: Main Thread]: D/Widget   nsMenuPopupFrame [0x7f55c8a9f330] type: 2 IsMenu: 0, IsMenuList: 0
[Parent 92430: Main Thread]: D/Widget   Parent window for 0x7f55b84c6000: 0x7f55cb2efa60 [GtkWindow]
[Parent 92430: Main Thread]: D/Widget nsWindow::NativeMoveResizeWaylandPopup: Set popup parent 0x7f55cb2efa60
[Parent 92430: Main Thread]: D/Widget   x_parent    0   y_parent    0
[Parent 92430: Main Thread]: D/Widget   aPosition x 2422   aPosition y 864
[Parent 92430: Main Thread]: D/Widget   rect.x      2422   rect.y      864
[Parent 92430: Main Thread]: D/Widget nsWindow::HideWaylandWindow: popup [0x7f55b84c6000]
[Parent 92430: Main Thread]: D/Widget   requested rect: x: 2422 y: 864 width: 104 height: 46
[Parent 92430: Main Thread]: D/Widget   aSize: x0 y0 w104 h46
[Parent 92430: Main Thread]: D/Widget   workarea for [0x7f55b84c6000], monitor 0x7f55df05e100: x0 y0 w3840 h2400
[Parent 92430: Main Thread]: D/Widget nsWindow::OnWindowStateEvent [0x7f55b84c6000] for 0x7f55b86ab260 changed 0x0 new_window_state 0x80
[Parent 92430: Main Thread]: D/Widget 	early return because no interesting bits changed
[Parent 92430: Main Thread]: D/Widget nsWindow::OnWindowStateEvent [0x7f55b84c6000] for 0x7f55b85fa0d0 changed 0x0 new_window_state 0x80
[Parent 92430: Main Thread]: D/Widget 	quick return because IS_MOZ_CONTAINER(aWidget) is true
[Parent 92430: Main Thread]: D/Widget NativeMoveResizeWaylandPopupCallback [0x7f55b84c6000] flipped_x 0 flipped_y 0
[Parent 92430: Main Thread]: D/Widget   flipped_rect x=2422 y=864 width=104 height=46
[Parent 92430: Main Thread]: D/Widget   final_rect   x=1211 y=864 width=104 height=46
[Parent 92430: Main Thread]: D/Widget   orig mBounds x=4844 y=1728 width=208 height=92
[Parent 92430: Main Thread]: D/Widget   new mBounds  x=2422 y=1728 width=208 height=92
[Parent 92430: Main Thread]: D/Widget nsWindow::Move [0x7f55b84c6000] 2422.000000 1728.000000
[Parent 92430: Main Thread]: D/Widget nsWindow::NativeMove [0x7f55b84c6000] 2422 1728
[Parent 92430: Main Thread]: D/Widget nsWindow::NativeMoveResizeWaylandPopup [0x7f55b84c6000]
[Parent 92430: Main Thread]: D/Widget nsWindow::ConfigureWaylandPopupWindows [0x7f55b84c6000], frame 0x7f55c8a9f330 hasRemoteContent 0
[Parent 92430: Main Thread]: D/Widget   nsMenuPopupFrame [0x7f55c8a9f330] type: 2 IsMenu: 0, IsMenuList: 0
[Parent 92430: Main Thread]: D/Widget   Parent window for 0x7f55b84c6000: 0x7f55cb2efa60 [GtkWindow]
[Parent 92430: Main Thread]: D/Widget nsWindow::NativeMoveResizeWaylandPopup: Set popup parent 0x7f55cb2efa60
[Parent 92430: Main Thread]: D/Widget   x_parent    0   y_parent    0
[Parent 92430: Main Thread]: D/Widget   aPosition x 2422   aPosition y 1728
[Parent 92430: Main Thread]: D/Widget   rect.x      2422   rect.y      1728
[Parent 92430: Main Thread]: D/Widget nsWindow::HideWaylandWindow: popup [0x7f55b84c6000]
[Parent 92430: Main Thread]: D/Widget   requested rect: x: 2422 y: 1728 width: 104 height: 46
[Parent 92430: Main Thread]: D/Widget   aSize: x0 y0 w104 h46
[Parent 92430: Main Thread]: D/Widget   workarea for [0x7f55b84c6000], monitor 0x7f55df05e100: x0 y0 w3840 h2400
[Parent 92430: Main Thread]: D/Widget nsWindow::OnWindowStateEvent [0x7f55b84c6000] for 0x7f55b86ab260 changed 0x0 new_window_state 0x80
[Parent 92430: Main Thread]: D/Widget 	early return because no interesting bits changed
[Parent 92430: Main Thread]: D/Widget nsWindow::OnWindowStateEvent [0x7f55b84c6000] for 0x7f55b85fa0d0 changed 0x0 new_window_state 0x80
[Parent 92430: Main Thread]: D/Widget 	quick return because IS_MOZ_CONTAINER(aWidget) is true
[Parent 92430: Main Thread]: D/Widget NativeMoveResizeWaylandPopupCallback [0x7f55b84c6000] flipped_x 0 flipped_y 0
[Parent 92430: Main Thread]: D/Widget   flipped_rect x=2422 y=1728 width=104 height=46
[Parent 92430: Main Thread]: D/Widget   final_rect   x=1211 y=1129 width=104 height=46
[Parent 92430: Main Thread]: D/Widget   orig mBounds x=4844 y=3456 width=208 height=92
[Parent 92430: Main Thread]: D/Widget   new mBounds  x=2422 y=2258 width=208 height=92
[Parent 92430: Main Thread]: D/Widget nsWindow::Move [0x7f55b84c6000] 2422.000000 2258.000000
[Parent 92430: Main Thread]: D/Widget nsWindow::NativeMove [0x7f55b84c6000] 2422 2258
[Parent 92430: Main Thread]: D/Widget nsWindow::NativeMoveResizeWaylandPopup [0x7f55b84c6000]
[Parent 92430: Main Thread]: D/Widget nsWindow::ConfigureWaylandPopupWindows [0x7f55b84c6000], frame 0x7f55c8a9f330 hasRemoteContent 0
[Parent 92430: Main Thread]: D/Widget   nsMenuPopupFrame [0x7f55c8a9f330] type: 2 IsMenu: 0, IsMenuList: 0
[Parent 92430: Main Thread]: D/Widget   Parent window for 0x7f55b84c6000: 0x7f55cb2efa60 [GtkWindow]
[Parent 92430: Main Thread]: D/Widget nsWindow::NativeMoveResizeWaylandPopup: Set popup parent 0x7f55cb2efa60
[Parent 92430: Main Thread]: D/Widget   x_parent    0   y_parent    0
[Parent 92430: Main Thread]: D/Widget   aPosition x 2422   aPosition y 2258
[Parent 92430: Main Thread]: D/Widget   rect.x      2422   rect.y      2258
[Parent 92430: Main Thread]: D/Widget nsWindow::HideWaylandWindow: popup [0x7f55b84c6000]
[Parent 92430: Main Thread]: D/Widget   requested rect: x: 2422 y: 2258 width: 104 height: 46
[Parent 92430: Main Thread]: D/Widget   aSize: x0 y0 w104 h46
[Parent 92430: Main Thread]: D/Widget   workarea for [0x7f55b84c6000], monitor 0x7f55df05e100: x0 y0 w3840 h2400
[Parent 92430: Main Thread]: D/Widget nsWindow::OnWindowStateEvent [0x7f55b84c6000] for 0x7f55b86ab260 changed 0x0 new_window_state 0x80
[Parent 92430: Main Thread]: D/Widget 	early return because no interesting bits changed
[Parent 92430: Main Thread]: D/Widget nsWindow::OnWindowStateEvent [0x7f55b84c6000] for 0x7f55b85fa0d0 changed 0x0 new_window_state 0x80
[Parent 92430: Main Thread]: D/Widget 	quick return because IS_MOZ_CONTAINER(aWidget) is true
[Parent 92430: Main Thread]: D/Widget NativeMoveResizeWaylandPopupCallback [0x7f55b84c6000] flipped_x 0 flipped_y 0
[Parent 92430: Main Thread]: D/Widget   flipped_rect x=2422 y=2258 width=104 height=46
[Parent 92430: Main Thread]: D/Widget   final_rect   x=1211 y=1129 width=104 height=46
[Parent 92430: Main Thread]: D/Widget   orig mBounds x=4844 y=4516 width=208 height=92
[Parent 92430: Main Thread]: D/Widget   new mBounds  x=2422 y=2258 width=208 height=92
[Parent 92430: Main Thread]: D/Widget nsWindow::Move [0x7f55b84c6000] 2422.000000 2258.000000
[Parent 92430: Main Thread]: D/Widget nsWindow::NativeMove [0x7f55b84c6000] 2422 2258
[Parent 92430: Main Thread]: D/Widget nsWindow::NativeMoveResizeWaylandPopup [0x7f55b84c6000]
[Parent 92430: Main Thread]: D/Widget nsWindow::ConfigureWaylandPopupWindows [0x7f55b84c6000], frame 0x7f55c8a9f330 hasRemoteContent 0
[Parent 92430: Main Thread]: D/Widget   nsMenuPopupFrame [0x7f55c8a9f330] type: 2 IsMenu: 0, IsMenuList: 0
[Parent 92430: Main Thread]: D/Widget   Parent window for 0x7f55b84c6000: 0x7f55cb2efa60 [GtkWindow]
[Parent 92430: Main Thread]: D/Widget nsWindow::NativeMoveResizeWaylandPopup: Set popup parent 0x7f55cb2efa60
[Parent 92430: Main Thread]: D/Widget   x_parent    0   y_parent    0
[Parent 92430: Main Thread]: D/Widget   aPosition x 2422   aPosition y 2258
[Parent 92430: Main Thread]: D/Widget   rect.x      2422   rect.y      2258
[Parent 92430: Main Thread]: D/Widget nsWindow::HideWaylandWindow: popup [0x7f55b84c6000]
[Parent 92430: Main Thread]: D/Widget   requested rect: x: 2422 y: 2258 width: 104 height: 46
[Parent 92430: Main Thread]: D/Widget   aSize: x0 y0 w104 h46
[Parent 92430: Main Thread]: D/Widget nsWindow::OnWindowStateEvent [0x7f55b84c6000] for 0x7f55b86ab260 changed 0x0 new_window_state 0x80
[Parent 92430: Main Thread]: D/Widget 	early return because no interesting bits changed
[Parent 92430: Main Thread]: D/Widget nsWindow::OnWindowStateEvent [0x7f55b84c6000] for 0x7f55b85fa0d0 changed 0x0 new_window_state 0x80
[Parent 92430: Main Thread]: D/Widget 	quick return because IS_MOZ_CONTAINER(aWidget) is true
[Parent 92430: Main Thread]: D/Widget NativeMoveResizeWaylandPopupCallback [0x7f55b84c6000] flipped_x 0 flipped_y 0
[Parent 92430: Main Thread]: D/Widget   flipped_rect x=2422 y=2258 width=104 height=46
[Parent 92430: Main Thread]: D/Widget   final_rect   x=1211 y=1129 width=104 height=46
[Parent 92430: Main Thread]: D/Widget   orig mBounds x=4844 y=4516 width=208 height=92
[Parent 92430: Main Thread]: D/Widget   new mBounds  x=2422 y=2258 width=208 height=92
[Parent 92430: Main Thread]: D/Widget nsWindow::Move [0x7f55b84c6000] 2422.000000 2258.000000
[Parent 92430: Main Thread]: D/Widget nsWindow::NativeMove [0x7f55b84c6000] 2422 2258
[Parent 92430: Main Thread]: D/Widget nsWindow::NativeMoveResizeWaylandPopup [0x7f55b84c6000]
[Parent 92430: Main Thread]: D/Widget nsWindow::ConfigureWaylandPopupWindows [0x7f55b84c6000], frame 0x7f55c8a9f330 hasRemoteContent 0
[Parent 92430: Main Thread]: D/Widget   nsMenuPopupFrame [0x7f55c8a9f330] type: 2 IsMenu: 0, IsMenuList: 0
[Parent 92430: Main Thread]: D/Widget   Parent window for 0x7f55b84c6000: 0x7f55cb2efa60 [GtkWindow]
[Parent 92430: Main Thread]: D/Widget nsWindow::NativeMoveResizeWaylandPopup: Set popup parent 0x7f55cb2efa60
[Parent 92430: Main Thread]: D/Widget   x_parent    0   y_parent    0
[Parent 92430: Main Thread]: D/Widget   aPosition x 2422   aPosition y 2258
[Parent 92430: Main Thread]: D/Widget   rect.x      2422   rect.y      2258
[Parent 92430: Main Thread]: D/Widget nsWindow::HideWaylandWindow: popup [0x7f55b84c6000]
[Parent 92430: Main Thread]: D/Widget   requested rect: x: 2422 y: 2258 width: 104 height: 46
[Parent 92430: Main Thread]: D/Widget   aSize: x0 y0 w104 h46
[Parent 92430: Main Thread]: D/Widget nsWindow::OnWindowStateEvent [0x7f55b84c6000] for 0x7f55b86ab260 changed 0x0 new_window_state 0x80
[Parent 92430: Main Thread]: D/Widget 	early return because no interesting bits changed
[Parent 92430: Main Thread]: D/Widget nsWindow::OnWindowStateEvent [0x7f55b84c6000] for 0x7f55b85fa0d0 changed 0x0 new_window_state 0x80
[Parent 92430: Main Thread]: D/Widget 	quick return because IS_MOZ_CONTAINER(aWidget) is true
[Parent 92430: Main Thread]: D/Widget nsWindow::Move [0x7f55b84c6000] 1211.000000 1129.000000
[Parent 92430: Main Thread]: D/Widget nsWindow::NativeMove [0x7f55b84c6000] 1211 1129
[Parent 92430: Main Thread]: D/Widget nsWindow::NativeMoveResizeWaylandPopup [0x7f55b84c6000]
[Parent 92430: Main Thread]: D/Widget nsWindow::ConfigureWaylandPopupWindows [0x7f55b84c6000], frame 0x7f55c8a9f330 hasRemoteContent 0
[Parent 92430: Main Thread]: D/Widget   nsMenuPopupFrame [0x7f55c8a9f330] type: 2 IsMenu: 0, IsMenuList: 0
[Parent 92430: Main Thread]: D/Widget   Parent window for 0x7f55b84c6000: 0x7f55cb2efa60 [GtkWindow]
[Parent 92430: Main Thread]: D/Widget nsWindow::NativeMoveResizeWaylandPopup: Set popup parent 0x7f55cb2efa60
[Parent 92430: Main Thread]: D/Widget   x_parent    0   y_parent    0
[Parent 92430: Main Thread]: D/Widget   aPosition x 1211   aPosition y 1129
[Parent 92430: Main Thread]: D/Widget   rect.x      1211   rect.y      1129
[Parent 92430: Main Thread]: D/Widget nsWindow::HideWaylandWindow: popup [0x7f55b84c6000]
[Parent 92430: Main Thread]: D/Widget   requested rect: x: 1211 y: 1129 width: 104 height: 46
[Parent 92430: Main Thread]: D/Widget   aSize: x0 y0 w104 h46
[Parent 92430: Main Thread]: D/Widget nsWindow::OnWindowStateEvent [0x7f55b84c6000] for 0x7f55b86ab260 changed 0x0 new_window_state 0x80
[Parent 92430: Main Thread]: D/Widget 	early return because no interesting bits changed
[Parent 92430: Main Thread]: D/Widget nsWindow::OnWindowStateEvent [0x7f55b84c6000] for 0x7f55b85fa0d0 changed 0x0 new_window_state 0x80
[Parent 92430: Main Thread]: D/Widget 	quick return because IS_MOZ_CONTAINER(aWidget) is true
[Parent 92430: Main Thread]: D/Widget NativeMoveResizeWaylandPopupCallback [0x7f55b84c6000] flipped_x 0 flipped_y 0
[Parent 92430: Main Thread]: D/Widget   flipped_rect x=1211 y=1129 width=104 height=46
[Parent 92430: Main Thread]: D/Widget   final_rect   x=1211 y=1129 width=104 height=46
[Parent 92430: Main Thread]: D/Widget   orig mBounds x=2422 y=2258 width=208 height=92
[Parent 92430: Main Thread]: D/Widget   new mBounds  x=2422 y=2258 width=208 height=92
[Parent 92430: Main Thread]: D/Widget nsWindow::Move [0x7f55b84c6000] 1284.000000 108.000000
...
[Parent 92430: Main Thread]: D/Widget NativeMoveResizeWaylandPopupCallback [0x7f55b84c6000] flipped_x 0 flipped_y 0
[Parent 92430: Main Thread]: D/Widget   flipped_rect x=1284 y=108 width=104 height=46
[Parent 92430: Main Thread]: D/Widget   final_rect   x=1211 y=108 width=104 height=46
[Parent 92430: Main Thread]: D/Widget   orig mBounds x=2568 y=216 width=208 height=92
[Parent 92430: Main Thread]: D/Widget   new mBounds  x=2422 y=216 width=208 height=92
[Parent 92430: Main Thread]: D/Widget nsWindow::Move [0x7f55b84c6000] 2422.000000 216.000000

I think we have scale confusion here; it should attempt to move to (1211, 108), not (2422, 216).

Jan, can you look at it please? Thanks.

Assignee: nobody → jhorak
Priority: -- → P3

The window position of the popup can be changed which does not mean that the
screen size changed. Only window dimmensions are relevant there. Also as part of this
fix, don't use HideWaylandWindow when calling gdk_window_move_to_rect because it removes
the popup from gVisibleWaylandPopupWindows which breaks popup hierarchy sometimes.

Pushed by shindli@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/691bd804c47d
Ignore window position in the WindowSurfaceWayland::Lock; r=stransky
Status: NEW → RESOLVED
Closed: 3 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla74

The change is not sufficient. Here's a new log from a context menu being moved into the corner:

[Parent 90580: Main Thread]: D/Widget Button 3 press on 0x7f7267cd3c00
[Parent 90580: Main Thread]: D/Widget CaptureRollupEvents 0x7f7257e77000 1
[Parent 90580: Main Thread]: D/Widget GrabPointer time=0x03f99e6a retry=0
[Parent 90580: Main Thread]: D/Widget GrabPointer: window not visible
[Parent 90580: Main Thread]: D/Widget   workarea for [0x7f7257e77000], monitor 0x7f727cd5db60: x0 y0 w3840 h2400
[Parent 90580: Main Thread]: D/Widget   workarea for [0x7f7257e77000], monitor 0x7f727cd5db60: x0 y0 w3840 h2400
[Parent 90580: Main Thread]: D/Widget nsWindow::Move [0x7f7257e77000] 1842.000000 236.000000
[Parent 90580: Main Thread]: D/Widget nsWindow::NativeMove [0x7f7257e77000] 1842 236
[Parent 90580: Main Thread]: D/Widget nsWindow::NativeMoveResizeWaylandPopup [0x7f7257e77000]
[Parent 90580: Main Thread]: D/Widget nsWindow::ConfigureWaylandPopupWindows [0x7f7257e77000], frame 0x7f72648c85c0 hasRemoteContent 0
[Parent 90580: Main Thread]: D/Widget   nsMenuPopupFrame [0x7f72648c85c0] type: 1 IsMenu: 1, IsMenuList: 0
[Parent 90580: Main Thread]: D/Widget nsWindow::CleanupWaylandPopups...
[Parent 90580: Main Thread]: D/Widget   Setting parent from transient: 0x7f7267cd5660 [GtkWindow]
[Parent 90580: Main Thread]: D/Widget   Parent window for 0x7f7257e77000: 0x7f7267cd5660 [GtkWindow]
[Parent 90580: Main Thread]: D/Widget nsWindow::NativeMoveResizeWaylandPopup: Set popup parent 0x7f7267cd5660
[Parent 90580: Main Thread]: D/Widget   x_parent    0   y_parent    0
[Parent 90580: Main Thread]: D/Widget   aPosition x 1842   aPosition y 236
[Parent 90580: Main Thread]: D/Widget   rect.x      1842   rect.y      236
[Parent 90580: Main Thread]: D/Widget   requested rect: x: 1842 y: 236 width: 205 height: 280
[Parent 90580: Main Thread]: D/Widget   aSize: x0 y0 w205 h280
[Parent 90580: Main Thread]: D/Widget nsWindow::Show [0x7f7257e77000] state 1
[Parent 90580: Main Thread]: D/Widget nsWindow::ConfigureWaylandPopupWindows [0x7f7257e77000], frame 0x7f72648c85c0 hasRemoteContent 0
[Parent 90580: Main Thread]: D/Widget   [0x7f7257e77000] is already configured.
[Parent 90580: Main Thread]: D/Widget GrabPointer time=0x03f99e6a retry=1
[Parent 90580: Main Thread]: D/Widget GrabPointer: window not visible
[Parent 90580: Main Thread]: D/Widget nsWindow::OnWindowStateEvent [0x7f7257e77000] for 0x7f7257e77660 changed 0x1 new_window_state 0x80
[Parent 90580: Main Thread]: D/Widget 	early return because no interesting bits changed
[Parent 90580: Main Thread]: D/Widget nsWindow::OnWindowStateEvent [0x7f7257e77000] for 0x7f7257ff7d10 changed 0x1 new_window_state 0x80
[Parent 90580: Main Thread]: D/Widget GrabPointer time=0x03f99e6a retry=1
[Parent 90580: Main Thread]: D/Widget 	quick return because IS_MOZ_CONTAINER(aWidget) is true
[Parent 90580: Main Thread]: D/Widget NativeMoveResizeWaylandPopupCallback [0x7f7257e77000] flipped_x 0 flipped_y 0
[Parent 90580: Main Thread]: D/Widget   flipped_rect x=1842 y=236 width=205 height=280
[Parent 90580: Main Thread]: D/Widget   final_rect   x=1715 y=236 width=205 height=280
[Parent 90580: Main Thread]: D/Widget   orig mBounds x=3684 y=472 width=410 height=560
[Parent 90580: Main Thread]: D/Widget   new mBounds  x=3430 y=472 width=410 height=560
[Parent 90580: Main Thread]: D/Widget nsWindow::Move [0x7f7257e77000] 3430.000000 472.000000
[Parent 90580: Main Thread]: D/Widget nsWindow::NativeMove [0x7f7257e77000] 3430 472
[Parent 90580: Main Thread]: D/Widget nsWindow::NativeMoveResizeWaylandPopup [0x7f7257e77000]
[Parent 90580: Main Thread]: D/Widget nsWindow::ConfigureWaylandPopupWindows [0x7f7257e77000], frame 0x7f72648c85c0 hasRemoteContent 0
[Parent 90580: Main Thread]: D/Widget   [0x7f7257e77000] is already configured.
[Parent 90580: Main Thread]: D/Widget nsWindow::NativeMoveResizeWaylandPopup: Set popup parent 0x7f7267cd5660
[Parent 90580: Main Thread]: D/Widget   x_parent    0   y_parent    0
[Parent 90580: Main Thread]: D/Widget   aPosition x 3430   aPosition y 472
[Parent 90580: Main Thread]: D/Widget   rect.x      3430   rect.y      472
[Parent 90580: Main Thread]: D/Widget   requested rect: x: 3430 y: 472 width: 205 height: 280
[Parent 90580: Main Thread]: D/Widget   aSize: x0 y0 w205 h280
[Parent 90580: Main Thread]: D/Widget   workarea for [0x7f7257e77000], monitor 0x7f727cd5db60: x0 y0 w3840 h2400
[Parent 90580: Main Thread]: D/Widget nsWindow::OnWindowStateEvent [0x7f7257e77000] for 0x7f7257e77660 changed 0x0 new_window_state 0x80
[Parent 90580: Main Thread]: D/Widget 	early return because no interesting bits changed
[Parent 90580: Main Thread]: D/Widget nsWindow::OnWindowStateEvent [0x7f7257e77000] for 0x7f7257ff7d10 changed 0x0 new_window_state 0x80
[Parent 90580: Main Thread]: D/Widget 	quick return because IS_MOZ_CONTAINER(aWidget) is true
[Parent 90580: Main Thread]: D/Widget NativeMoveResizeWaylandPopupCallback [0x7f7257e77000] flipped_x 0 flipped_y 0
[Parent 90580: Main Thread]: D/Widget   flipped_rect x=3430 y=472 width=205 height=280
[Parent 90580: Main Thread]: D/Widget   final_rect   x=1715 y=472 width=205 height=280
[Parent 90580: Main Thread]: D/Widget   orig mBounds x=6860 y=944 width=410 height=560
[Parent 90580: Main Thread]: D/Widget   new mBounds  x=3430 y=944 width=410 height=560
[Parent 90580: Main Thread]: D/Widget nsWindow::Move [0x7f7257e77000] 3430.000000 944.000000
[Parent 90580: Main Thread]: D/Widget nsWindow::NativeMove [0x7f7257e77000] 3430 944
[Parent 90580: Main Thread]: D/Widget nsWindow::NativeMoveResizeWaylandPopup [0x7f7257e77000]
[Parent 90580: Main Thread]: D/Widget nsWindow::ConfigureWaylandPopupWindows [0x7f7257e77000], frame 0x7f72648c85c0 hasRemoteContent 0
[Parent 90580: Main Thread]: D/Widget   [0x7f7257e77000] is already configured.
[Parent 90580: Main Thread]: D/Widget nsWindow::NativeMoveResizeWaylandPopup: Set popup parent 0x7f7267cd5660
[Parent 90580: Main Thread]: D/Widget   x_parent    0   y_parent    0
[Parent 90580: Main Thread]: D/Widget   aPosition x 3430   aPosition y 944
[Parent 90580: Main Thread]: D/Widget   rect.x      3430   rect.y      944
[Parent 90580: Main Thread]: D/Widget   requested rect: x: 3430 y: 944 width: 205 height: 280
[Parent 90580: Main Thread]: D/Widget   aSize: x0 y0 w205 h280
[Parent 90580: Main Thread]: D/Widget   workarea for [0x7f7257e77000], monitor 0x7f727cd5db60: x0 y0 w3840 h2400
[Parent 90580: Main Thread]: D/Widget nsWindow::OnWindowStateEvent [0x7f7257e77000] for 0x7f7257e77660 changed 0x0 new_window_state 0x80
[Parent 90580: Main Thread]: D/Widget 	early return because no interesting bits changed
[Parent 90580: Main Thread]: D/Widget nsWindow::OnWindowStateEvent [0x7f7257e77000] for 0x7f7257ff7d10 changed 0x0 new_window_state 0x80
[Parent 90580: Main Thread]: D/Widget 	quick return because IS_MOZ_CONTAINER(aWidget) is true
[Parent 90580: Main Thread]: D/Widget NativeMoveResizeWaylandPopupCallback [0x7f7257e77000] flipped_x 0 flipped_y 0
[Parent 90580: Main Thread]: D/Widget   flipped_rect x=3430 y=944 width=205 height=280
[Parent 90580: Main Thread]: D/Widget   final_rect   x=1715 y=893 width=205 height=280
[Parent 90580: Main Thread]: D/Widget   orig mBounds x=6860 y=1888 width=410 height=560
[Parent 90580: Main Thread]: D/Widget   new mBounds  x=3430 y=1786 width=410 height=560
[Parent 90580: Main Thread]: D/Widget nsWindow::Move [0x7f7257e77000] 3430.000000 1786.000000
[Parent 90580: Main Thread]: D/Widget nsWindow::NativeMove [0x7f7257e77000] 3430 1786
[Parent 90580: Main Thread]: D/Widget nsWindow::NativeMoveResizeWaylandPopup [0x7f7257e77000]
[Parent 90580: Main Thread]: D/Widget nsWindow::ConfigureWaylandPopupWindows [0x7f7257e77000], frame 0x7f72648c85c0 hasRemoteContent 0
[Parent 90580: Main Thread]: D/Widget   [0x7f7257e77000] is already configured.
[Parent 90580: Main Thread]: D/Widget nsWindow::NativeMoveResizeWaylandPopup: Set popup parent 0x7f7267cd5660
[Parent 90580: Main Thread]: D/Widget   x_parent    0   y_parent    0
[Parent 90580: Main Thread]: D/Widget   aPosition x 3430   aPosition y 1786
[Parent 90580: Main Thread]: D/Widget   rect.x      3430   rect.y      1786
[Parent 90580: Main Thread]: D/Widget   requested rect: x: 3430 y: 1786 width: 205 height: 280
[Parent 90580: Main Thread]: D/Widget   aSize: x0 y0 w205 h280
[Parent 90580: Main Thread]: D/Widget   workarea for [0x7f7257e77000], monitor 0x7f727cd5db60: x0 y0 w3840 h2400
[Parent 90580: Main Thread]: D/Widget nsWindow::OnWindowStateEvent [0x7f7257e77000] for 0x7f7257e77660 changed 0x0 new_window_state 0x80
[Parent 90580: Main Thread]: D/Widget 	early return because no interesting bits changed
[Parent 90580: Main Thread]: D/Widget nsWindow::OnWindowStateEvent [0x7f7257e77000] for 0x7f7257ff7d10 changed 0x0 new_window_state 0x80
[Parent 90580: Main Thread]: D/Widget 	quick return because IS_MOZ_CONTAINER(aWidget) is true
[Parent 90580: Main Thread]: D/Widget NativeMoveResizeWaylandPopupCallback [0x7f7257e77000] flipped_x 0 flipped_y 0
[Parent 90580: Main Thread]: D/Widget   flipped_rect x=3430 y=1786 width=205 height=280
[Parent 90580: Main Thread]: D/Widget   final_rect   x=1715 y=893 width=205 height=280
[Parent 90580: Main Thread]: D/Widget   orig mBounds x=6860 y=3572 width=410 height=560
[Parent 90580: Main Thread]: D/Widget   new mBounds  x=3430 y=1786 width=410 height=560
[Parent 90580: Main Thread]: D/Widget nsWindow::Move [0x7f7257e77000] 3430.000000 1786.000000
[Parent 90580: Main Thread]: D/Widget nsWindow::NativeMove [0x7f7257e77000] 3430 1786
[Parent 90580: Main Thread]: D/Widget nsWindow::NativeMoveResizeWaylandPopup [0x7f7257e77000]
[Parent 90580: Main Thread]: D/Widget nsWindow::ConfigureWaylandPopupWindows [0x7f7257e77000], frame 0x7f72648c85c0 hasRemoteContent 0
[Parent 90580: Main Thread]: D/Widget   [0x7f7257e77000] is already configured.
[Parent 90580: Main Thread]: D/Widget nsWindow::NativeMoveResizeWaylandPopup: Set popup parent 0x7f7267cd5660
[Parent 90580: Main Thread]: D/Widget   x_parent    0   y_parent    0
[Parent 90580: Main Thread]: D/Widget   aPosition x 3430   aPosition y 1786
[Parent 90580: Main Thread]: D/Widget   rect.x      3430   rect.y      1786
[Parent 90580: Main Thread]: D/Widget   requested rect: x: 3430 y: 1786 width: 205 height: 280
[Parent 90580: Main Thread]: D/Widget   aSize: x0 y0 w205 h280
[Parent 90580: Main Thread]: D/Widget nsWindow::Move [0x7f7257e77000] 1715.000000 893.000000
[Parent 90580: Main Thread]: D/Widget nsWindow::NativeMove [0x7f7257e77000] 1715 893
[Parent 90580: Main Thread]: D/Widget nsWindow::NativeMoveResizeWaylandPopup [0x7f7257e77000]
[Parent 90580: Main Thread]: D/Widget nsWindow::ConfigureWaylandPopupWindows [0x7f7257e77000], frame 0x7f72648c85c0 hasRemoteContent 0
[Parent 90580: Main Thread]: D/Widget   [0x7f7257e77000] is already configured.
[Parent 90580: Main Thread]: D/Widget nsWindow::NativeMoveResizeWaylandPopup: Set popup parent 0x7f7267cd5660
[Parent 90580: Main Thread]: D/Widget   x_parent    0   y_parent    0
[Parent 90580: Main Thread]: D/Widget   aPosition x 1715   aPosition y 893
[Parent 90580: Main Thread]: D/Widget   rect.x      1715   rect.y      893
[Parent 90580: Main Thread]: D/Widget   requested rect: x: 1715 y: 893 width: 205 height: 280
[Parent 90580: Main Thread]: D/Widget   aSize: x0 y0 w205 h280
[Parent 90580: Main Thread]: D/Widget nsWindow::OnWindowStateEvent [0x7f7257e77000] for 0x7f7257e77660 changed 0x0 new_window_state 0x80
[Parent 90580: Main Thread]: D/Widget 	early return because no interesting bits changed
[Parent 90580: Main Thread]: D/Widget nsWindow::OnWindowStateEvent [0x7f7257e77000] for 0x7f7257ff7d10 changed 0x0 new_window_state 0x80
[Parent 90580: Main Thread]: D/Widget 	quick return because IS_MOZ_CONTAINER(aWidget) is true
[Parent 90580: Main Thread]: D/Widget NativeMoveResizeWaylandPopupCallback [0x7f7257e77000] flipped_x 0 flipped_y 0
[Parent 90580: Main Thread]: D/Widget   flipped_rect x=1715 y=893 width=205 height=280
[Parent 90580: Main Thread]: D/Widget   final_rect   x=1715 y=893 width=205 height=280
[Parent 90580: Main Thread]: D/Widget   orig mBounds x=3430 y=1786 width=410 height=560
[Parent 90580: Main Thread]: D/Widget   new mBounds  x=3430 y=1786 width=410 height=560
[Parent 90580: Main Thread]: D/Widget Button 3 release on 0x7f7267cd3c00
Status: RESOLVED → REOPENED
Resolution: FIXED → ---

With the current patch (identified with mozregression) I get a crash with Wayland+WebRender when I click on the NoScript icon, but not when I click on the icon of "uBlock Origin" and "HTTPS Everywhere". The crash report is bp-682e842d-dde2-4d1d-85cc-043b70200122 (I actually submitted another crash report directly after this), looks like I am the only one affected so far.

I didn't file another bug report since this bug has been reopened anyway. Unfortunately I am not able to add the crash signature here, so please do that. If you feel that the crash should be reported separately, I can file another bug of course.

If you think that the crash occurs because of a bug in the old r600 Mesa driver, I can report this to the Mesa people. Seems like there is no one except me who is using this old driver on Wayland with WebRender.

For completeness, the second crash report I submitted is bp-995bef75-715e-407a-bd5e-038bf0200122.

Regressions: 1611974

It's a bug introduced by this changeset, I'll attach a patch in a moment.

The missing popup in corner is mutter issue: https://gitlab.gnome.org/GNOME/mutter/issues/1013

...NativeMoveResizeWaylandPopup we don't call
Resize or Move anymore, we just update mBounds which is enough.

Attachment #9123697 - Attachment description: Bug 1609732 Pause renderer before hiding gtkwindow to avoid crashes in webrender; r=stransky Calling gtk_window_hide without pausing renderer cause crashes. Also to avoid repeated calls of NativeMoveResizeWaylandPopup from... → Bug 1609732 Pause renderer before hiding gtkwindow to avoid crashes in webrender; r=stransky
Pushed by aiakab@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/75315a8682b6
Pause renderer before hiding gtkwindow to avoid crashes in webrender; r=stransky
Pushed by ccoroiu@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/622f831dd3be
Pause renderer before hiding gtkwindow to avoid crashes in webrender; r=stransky
Flags: needinfo?(jhorak)
Status: REOPENED → RESOLVED
Closed: 3 years ago3 years ago
Resolution: --- → FIXED
Crash Signature: [@ update_buffers]
Has Regression Range: --- → yes
Keywords: regression
See Also: → 1783829
You need to log in before you can comment on or make changes to this bug.