Xpra: Ticket #310: OR windows can go awol

Reproducible using gnome-terminal: simply move through the drop down menus quickly until one of them goes missing. A "the window (...) is not composited!?" message shows up in the logs.

This a server issue and re-connecting the client does not solve the problem..



Mon, 15 Apr 2013 14:15:53 GMT - Antoine Martin:

Here is a full debug log of such an instance (removing some pointer-position packets for readability):

016 call_setup() ended
017 found transient_for=<gtk.gdk.Window object at 0x1bfd780 (GdkWindow at 0x1842d80)>, xid=0x800006L
017 testing model <WindowModel object at 0x1bfd7d0 (wimpiggy+window+WindowModel at 0x1752900)>: 0x800006L
018 found match, window id=1
018 window_types=['_NET_WM_WINDOW_TYPE_DROPDOWN_MENU']
019 will process ui packet pointer-position
019 window_types=['_NET_WM_WINDOW_TYPE_DROPDOWN_MENU']
020 will process ui packet pointer-position
020 new_window(new-override-redirect, <OverrideRedirectWindowModel object at 0x1d91aa0 (wimpiggy+window+OverrideRedirectWindowModel at 0x17514c0)>, 10, 78, 53, 201, 124, ('transient-for', 'window-type'), None) metadata={'transient-for': 1, 'window-type': ['_NET_WM_WINDOW_TYPE_DROPDOWN_MENU']}
027 will process ui packet pointer-position
028 process non-ui packet damage-sequence
029 record_latency: took 4.4 ms round trip (4.4 just for echo), 0.0 for decoding of 2730 pixels, 1169 bytes sent over the network in 3.7 ms (3.7 ms for echo)
031 will process ui packet pointer-position
033 do_unmanaged(False) damage_forward_handle=112, composite=<CompositeHelper object at 0x1d91af0 (wimpiggy+composite+CompositeHelper at 0x1751760)>
033 invalidating named pixmap
035 invalidating named pixmap
035 invalidating named pixmap
042 will process ui packet pointer-position
047 will process ui packet pointer-position
050 process non-ui packet damage-sequence
050 record_latency: took 1.6 ms round trip (1.5 just for echo), 0.0 for decoding of 945 pixels, 783 bytes sent over the network in 1.0 ms (1.0 ms for echo)
051 do_wimpiggy_child_map_event(<AdHocStruct object, contents: {'delivered_to': <gtk.gdk.Window object at 0x1ab7410 (GdkWindow at 0x1697ea0)>, 'send_event': 0, 'override_redirect': 1, 'window': <gtk.gdk.Window object at 0x1d91b40 (GdkWindow at 0x1c755a0)>, 'serial': 2758L, 'type': 19, 'display': <gtk.gdk.Display object at 0x1955320 (GdkDisplayX11 at 0x19ee210)>}>)
051 Discovered new override-redirect window: 0x80004eL (tray=None)
051 new window 0x80004eL - 8388686
051 CompositeHelper.__init__(<gtk.gdk.Window object at 0x1d91b40 (GdkWindow at 0x1c755a0)>,False)
052 _call(True,<built-in function XGetWindowProperty>,(<gtk.gdk.Window object at 0x1d91b40 (GdkWindow at 0x1c755a0)>, 'WM_TRANSIENT_FOR', 'WINDOW'),{}) WM_TRANSIENT_FOR
052 Missing property WM_TRANSIENT_FOR (window)
052 call_setup() adding event receiver
053 invalidating named pixmap
053 _call(True,<bound method OverrideRedirectWindowModel.setup of <OverrideRedirectWindowModel object at 0x1d91aa0 (wimpiggy+window+OverrideRedirectWindowModel at 0x1751760)>>,(),{}) window already unmapped
053 cannot manage 8388686: window already unmapped
053 invalidating named pixmap
056 do_wimpiggy_child_map_event(<AdHocStruct object, contents: {'delivered_to': <gtk.gdk.Window object at 0x1ab7410 (GdkWindow at 0x1697ea0)>, 'send_event': 0, 'override_redirect': 1, 'window': <gtk.gdk.Window object at 0x1d91b90 (GdkWindow at 0x1c75360)>, 'serial': 2777L, 'type': 19, 'display': <gtk.gdk.Display object at 0x1955320 (GdkDisplayX11 at 0x19ee210)>}>)
056 Discovered new override-redirect window: 0x80003fL (tray=None)
056 new window 0x80003fL - 8388671
056 CompositeHelper.__init__(<gtk.gdk.Window object at 0x1d91b90 (GdkWindow at 0x1c75360)>,False)
057 call_setup() adding event receiver
057 invalidating named pixmap
058 refreshing named pixmap
058 call_setup() ended
058 found transient_for=<gtk.gdk.Window object at 0x1bfd780 (GdkWindow at 0x1842d80)>, xid=0x800006L
059 testing model <WindowModel object at 0x1bfd7d0 (wimpiggy+window+WindowModel at 0x1752900)>: 0x800006L
059 found match, window id=1
059 window_types=['_NET_WM_WINDOW_TYPE_DROPDOWN_MENU']
059 window_types=['_NET_WM_WINDOW_TYPE_DROPDOWN_MENU']
059 new_window(new-override-redirect, <OverrideRedirectWindowModel object at 0x1d91d70 (wimpiggy+window+OverrideRedirectWindowModel at 0x174fe00)>, 12, 1, 53, 238, 133, ('transient-for', 'window-type'), None) metadata={'transient-for': 1, 'window-type': ['_NET_WM_WINDOW_TYPE_DROPDOWN_MENU']}
060 will process ui packet pointer-position
063 will process ui packet pointer-position
087 process non-ui packet damage-sequence
088 record_latency: took 4.7 ms round trip (4.7 just for echo), 2.0 for decoding of 31654 pixels, 7118 bytes sent over the network in 2.1 ms (2.0 ms for echo)
089 process non-ui packet damage-sequence
089 record_latency: took 5.5 ms round trip (5.4 just for echo), 0.0 for decoding of 2562 pixels, 1195 bytes sent over the network in 4.7 ms (4.6 ms for echo)
152 will process ui packet pointer-position
155 process non-ui packet damage-sequence
155 record_latency: took 5.6 ms round trip (5.5 just for echo), 0.0 for decoding of 273 pixels, 121 bytes sent over the network in 4.6 ms (4.5 ms for echo)
343 will process ui packet pointer-position
346 do_unmanaged(False) damage_forward_handle=121, composite=<CompositeHelper object at 0x1d91c80 (wimpiggy+composite+CompositeHelper at 0x174f780)>
347 invalidating named pixmap
348 invalidating named pixmap
349 invalidating named pixmap
353 will process ui packet pointer-position
355 BaseWindowModel.composite_configure_event(<CompositeHelper object at 0x1d91af0 (wimpiggy+composite+CompositeHelper at 0x17514c0)>,<AdHocStruct object, contents: {'delivered_to': <gtk.gdk.Window object at 0x1d91b40 (GdkWindow at 0x1c755a0)>, 'send_event': 0, 'height': 156, 'width': 284, 'window': <gtk.gdk.Window object at 0x1d91b40 (GdkWindow at 0x1c755a0)>, 'y': 53, 'x': 38, 'serial': 2979L, 'border_width': 0, 'type': 22, 'display': <gtk.gdk.Display object at 0x1955320 (GdkDisplayX11 at 0x19ee210)>}>)
355 invalidating named pixmap
355 invalidating named pixmap
356 do_wimpiggy_child_map_event(<AdHocStruct object, contents: {'delivered_to': <gtk.gdk.Window object at 0x1ab7410 (GdkWindow at 0x1697ea0)>, 'send_event': 0, 'override_redirect': 1, 'window': <gtk.gdk.Window object at 0x1d91b40 (GdkWindow at 0x1c755a0)>, 'serial': 2979L, 'type': 19, 'display': <gtk.gdk.Display object at 0x1955320 (GdkDisplayX11 at 0x19ee210)>}>)
356 found existing model <class 'wimpiggy.window.OverrideRedirectWindowModel'> (but no longer managed!) for 0x80004eL
359 will process ui packet pointer-position
369 will process ui packet pointer-position
375 invalidating named pixmap
376 will process ui packet pointer-position
377 the window <OverrideRedirectWindowModel object at 0x1d91aa0 (wimpiggy+window+OverrideRedirectWindowModel at 0x1751760)> is not composited!?

I think the problem comes from here:

found existing model (...) for (...)

Which comes from r2304 and our attempts at dealing with gtkperf more gracefully..


Mon, 15 Apr 2013 14:57:23 GMT - Antoine Martin: owner, status changed

The workaround is in r3071. In the review, I found more problems:

Will test and close this ticket. This may need backports too.


Mon, 15 Apr 2013 18:20:15 GMT - onlyjob: cc set


Tue, 16 Apr 2013 14:09:51 GMT - Antoine Martin:

But... we have lost tooltips (#262 related?), as can be easily seen by running filelight which makes heavy use of them. Bummer!


Wed, 17 Apr 2013 08:28:55 GMT - onlyjob:

Replying to totaam:

But... we have lost tooltips (#262 related?), as can be easily seen by running filelight which makes heavy use of them. Bummer!

I'm testing r3072 and I see tooltips in filelight... They were disappearing after some time but from the first quick try I couldn't reproduce that in r3072 so it could become a bit better (if it's not my wishful thinking).


Fri, 19 Apr 2013 11:35:06 GMT - Antoine Martin:

r3116 fixes the tooltips: it was opengl not notifying us of mouse motion events.

So maybe this ticket can be closed after all? Feedback welcome.


Sat, 20 Apr 2013 01:16:11 GMT - onlyjob:

Looks like tooltips were broken only in opengl mode (that's why I couldn't reproduce as I was trying with "--opengl=no").

It appears to works well with r3118 so I think this bug can be closed. Thanks.


Sat, 20 Apr 2013 03:27:31 GMT - Antoine Martin: status changed; resolution set


Sat, 23 Jan 2021 04:51:20 GMT - migration script:

this ticket has been moved to: https://github.com/Xpra-org/xpra/issues/310