Xpra: Ticket #2543: zombie windows with xpra 3.0.4

Sometimes xpra windows get "stuck". That means the application (in my case Geany) has terminated but its window is still showing. I cannot close the window by any means.

I found this in the server logs when it happened:

Jan 08 10:55:24 tmartitz-pc xpra[17088]: ../../../../../gdk/x11/gdkwindow-x11.c:5579 drawable is not a native X11 window
Jan 08 10:55:31 tmartitz-pc xpra[17088]: ../../../../../gdk/x11/gdkwindow-x11.c:5579 drawable is not a native X11 window
Jan 08 10:55:31 tmartitz-pc xpra[17088]: ../../../../../gdk/x11/gdkwindow-x11.c:5579 drawable is not a native X11 window
Jan 08 10:55:31 tmartitz-pc xpra[17088]: gdk_window_get_screen: assertion 'GDK_IS_WINDOW (window)' failed
Jan 08 10:56:04 tmartitz-pc xpra[17088]: ../../../../../gdk/x11/gdkwindow-x11.c:5579 drawable is not a native X11 window
Jan 08 10:56:04 tmartitz-pc xpra[17088]: gdk_window_get_screen: assertion 'GDK_IS_WINDOW (window)' failed
Jan 08 10:56:04 tmartitz-pc xpra[17088]: ../../../../../gdk/x11/gdkwindow-x11.c:5579 drawable is not a native X11 window
Jan 08 10:56:05 tmartitz-pc xpra[17088]: gdk_window_get_screen: assertion 'GDK_IS_WINDOW (window)' failed
Jan 08 10:56:05 tmartitz-pc xpra[17088]: ../../../../../gdk/x11/gdkwindow-x11.c:5579 drawable is not a native X11 window
Jan 08 10:56:05 tmartitz-pc xpra[17088]: ../../../../../gdk/x11/gdkwindow-x11.c:5579 drawable is not a native X11 window
Jan 08 10:56:05 tmartitz-pc xpra[17088]: gdk_window_get_screen: assertion 'GDK_IS_WINDOW (window)' failed
Jan 08 10:56:05 tmartitz-pc xpra[17088]: /usr/lib/python3/dist-packages/xpra/x11/gtk_x11/tray.py:285: TypeError: Passing arguments to gi.types.Boxed.__init__() is deprecated. All arguments passed will be ignored.
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   tray_window.invalidate_rect(gdk.Rectangle(width=w, height=h), True)
Jan 08 10:56:05 tmartitz-pc xpra[17088]: /usr/lib/python3/dist-packages/xpra/x11/gtk_x11/tray.py:285: TypeError: Passing arguments to gi.types.Boxed.__init__() is deprecated. All arguments passed will be ignored.
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   tray_window.invalidate_rect(gdk.Rectangle(width=w, height=h), True)
Jan 08 10:56:05 tmartitz-pc xpra[17088]: /usr/lib/python3/dist-packages/xpra/server/window/window_source.py:426: Warning: g_object_get_qdata: assertion 'G_IS_OBJECT (object)' failed
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   self.window = None
Jan 08 10:56:05 tmartitz-pc xpra[17088]: /usr/lib/python3/dist-packages/xpra/server/window/window_source.py:426: Warning: g_object_set_qdata_full: assertion 'G_IS_OBJECT (object)' failed
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   self.window = None
Jan 08 10:56:05 tmartitz-pc xpra[17088]: /usr/lib/python3/dist-packages/xpra/server/window/window_source.py:426: Warning: g_object_remove_toggle_ref: assertion 'G_IS_OBJECT (object)' failed
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   self.window = None
Jan 08 10:56:05 tmartitz-pc xpra[17088]: /usr/lib/python3/dist-packages/xpra/server/gtk_server_base.py:118: Warning: g_object_ref: assertion 'G_IS_OBJECT (object)' failed
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   gtk_main()
Jan 08 10:56:05 tmartitz-pc xpra[17088]: /usr/lib/python3/dist-packages/xpra/server/window/window_source.py:426: Warning: g_object_remove_toggle_ref: couldn't find toggle ref 0x7fbdd48a4370((nil))
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   self.window = None
Jan 08 10:56:05 tmartitz-pc xpra[17088]: /usr/lib/python3.6/urllib/response.py:37: Warning: g_object_get_qdata: assertion 'G_IS_OBJECT (object)' failed
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   class addclosehook(addbase):
Jan 08 10:56:05 tmartitz-pc xpra[17088]: /usr/lib/python3.6/urllib/response.py:37: Warning: g_object_set_qdata_full: assertion 'G_IS_OBJECT (object)' failed
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   class addclosehook(addbase):
Jan 08 10:56:05 tmartitz-pc xpra[17088]: Traceback (most recent call last):
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   File "/usr/lib/python3/dist-packages/xpra/server/window/window_source.py", line 1452, in expire_delayed_region
Jan 08 10:56:05 tmartitz-pc xpra[17088]:     self.may_send_delayed()
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   File "/usr/lib/python3/dist-packages/xpra/server/window/window_source.py", line 1616, in may_send_delayed
Jan 08 10:56:05 tmartitz-pc xpra[17088]:     self.do_send_delayed()
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   File "/usr/lib/python3/dist-packages/xpra/server/window/window_source.py", line 1627, in do_send_delayed
Jan 08 10:56:05 tmartitz-pc xpra[17088]:     self.send_delayed_regions(delayed)
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   File "/usr/lib/python3/dist-packages/xpra/server/window/window_source.py", line 1645, in send_delayed_regions
Jan 08 10:56:05 tmartitz-pc xpra[17088]:     self.do_send_delayed_regions(dr.damage_time, dr.regions, dr.encoding, dr.options)
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   File "/usr/lib/python3/dist-packages/xpra/server/window/window_video_source.py", line 737, in do_send_delayed_regions
Jan 08 10:56:05 tmartitz-pc xpra[17088]:     WindowSource.do_send_delayed_regions(self, damage_time, regions, coding, options)
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   File "/usr/lib/python3/dist-packages/xpra/server/window/window_source.py", line 1715, in do_send_delayed_regions
Jan 08 10:56:05 tmartitz-pc xpra[17088]:     send_full_window_update("merged region covers almost the whole window")
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   File "/usr/lib/python3/dist-packages/xpra/server/window/window_source.py", line 1660, in send_full_window_update
Jan 08 10:56:05 tmartitz-pc xpra[17088]:     self.process_damage_region(damage_time, 0, 0, ww, wh, actual_encoding, options)
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   File "/usr/lib/python3/dist-packages/xpra/server/window/window_video_source.py", line 853, in process_damage_region
Jan 08 10:56:05 tmartitz-pc xpra[17088]:     image = self.window.get_image(x, y, w, h)
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   File "/usr/lib/python3/dist-packages/xpra/x11/models/core.py", line 337, in get_image
Jan 08 10:56:05 tmartitz-pc xpra[17088]:     return self._composite.get_image(x, y, width, height)
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   File "/usr/lib/python3/dist-packages/xpra/x11/gtk_x11/window_damage.py", line 165, in get_image
Jan 08 10:56:05 tmartitz-pc xpra[17088]:     handle = self.get_contents_handle()
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   File "/usr/lib/python3/dist-packages/xpra/x11/gtk_x11/window_damage.py", line 160, in get_contents_handle
Jan 08 10:56:05 tmartitz-pc xpra[17088]:     trap.swallow_synced(self._set_pixmap)
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   File "/usr/lib/python3/dist-packages/xpra/gtk_common/error.py", line 168, in swallow_synced
Jan 08 10:56:05 tmartitz-pc xpra[17088]:     self.call_synced(fun, *args, **kwargs)
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   File "/usr/lib/python3/dist-packages/xpra/gtk_common/error.py", line 151, in call_synced
Jan 08 10:56:05 tmartitz-pc xpra[17088]:     return self._call(True, fun, args, kwargs)
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   File "/usr/lib/python3/dist-packages/xpra/gtk_common/error.py", line 135, in _call
Jan 08 10:56:05 tmartitz-pc xpra[17088]:     value = fun(*args, **kwargs)
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   File "/usr/lib/python3/dist-packages/xpra/x11/gtk_x11/composite.py", line 92, in _set_pixmap
Jan 08 10:56:05 tmartitz-pc xpra[17088]:     root = self.client_window.get_screen().get_root_window()
Jan 08 10:56:05 tmartitz-pc xpra[17088]: AttributeError: 'NoneType' object has no attribute 'get_root_window'
Jan 08 10:56:05 tmartitz-pc xpra[17088]: /usr/lib/python3/dist-packages/xpra/x11/server_keyboard_config.py:482: Warning: g_object_get_qdata: assertion 'G_IS_OBJECT (object)' failed
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   for modifier in modifiers:
Jan 08 10:56:05 tmartitz-pc xpra[17088]: /usr/lib/python3/dist-packages/xpra/x11/server_keyboard_config.py:482: Warning: g_object_set_qdata_full: assertion 'G_IS_OBJECT (object)' failed
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   for modifier in modifiers:
Jan 08 10:56:05 tmartitz-pc xpra[17088]: Traceback (most recent call last):
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   File "/usr/lib/python3/dist-packages/xpra/server/window/window_source.py", line 1452, in expire_delayed_region
Jan 08 10:56:05 tmartitz-pc xpra[17088]:     self.may_send_delayed()
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   File "/usr/lib/python3/dist-packages/xpra/server/window/window_source.py", line 1616, in may_send_delayed
Jan 08 10:56:05 tmartitz-pc xpra[17088]:     self.do_send_delayed()
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   File "/usr/lib/python3/dist-packages/xpra/server/window/window_source.py", line 1627, in do_send_delayed
Jan 08 10:56:05 tmartitz-pc xpra[17088]:     self.send_delayed_regions(delayed)
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   File "/usr/lib/python3/dist-packages/xpra/server/window/window_source.py", line 1645, in send_delayed_regions
Jan 08 10:56:05 tmartitz-pc xpra[17088]:     self.do_send_delayed_regions(dr.damage_time, dr.regions, dr.encoding, dr.options)
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   File "/usr/lib/python3/dist-packages/xpra/server/window/window_video_source.py", line 737, in do_send_delayed_regions
Jan 08 10:56:05 tmartitz-pc xpra[17088]:     WindowSource.do_send_delayed_regions(self, damage_time, regions, coding, options)
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   File "/usr/lib/python3/dist-packages/xpra/server/window/window_source.py", line 1715, in do_send_delayed_regions
Jan 08 10:56:05 tmartitz-pc xpra[17088]:     send_full_window_update("merged region covers almost the whole window")
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   File "/usr/lib/python3/dist-packages/xpra/server/window/window_source.py", line 1660, in send_full_window_update
Jan 08 10:56:05 tmartitz-pc xpra[17088]:     self.process_damage_region(damage_time, 0, 0, ww, wh, actual_encoding, options)
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   File "/usr/lib/python3/dist-packages/xpra/server/window/window_video_source.py", line 853, in process_damage_region
Jan 08 10:56:05 tmartitz-pc xpra[17088]:     image = self.window.get_image(x, y, w, h)
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   File "/usr/lib/python3/dist-packages/xpra/x11/models/core.py", line 337, in get_image
Jan 08 10:56:05 tmartitz-pc xpra[17088]:     return self._composite.get_image(x, y, width, height)
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   File "/usr/lib/python3/dist-packages/xpra/x11/gtk_x11/window_damage.py", line 165, in get_image
Jan 08 10:56:05 tmartitz-pc xpra[17088]:     handle = self.get_contents_handle()
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   File "/usr/lib/python3/dist-packages/xpra/x11/gtk_x11/window_damage.py", line 160, in get_contents_handle
Jan 08 10:56:05 tmartitz-pc xpra[17088]:     trap.swallow_synced(self._set_pixmap)
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   File "/usr/lib/python3/dist-packages/xpra/gtk_common/error.py", line 168, in swallow_synced
Jan 08 10:56:05 tmartitz-pc xpra[17088]:     self.call_synced(fun, *args, **kwargs)
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   File "/usr/lib/python3/dist-packages/xpra/gtk_common/error.py", line 151, in call_synced
Jan 08 10:56:05 tmartitz-pc xpra[17088]:     return self._call(True, fun, args, kwargs)
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   File "/usr/lib/python3/dist-packages/xpra/gtk_common/error.py", line 135, in _call
Jan 08 10:56:05 tmartitz-pc xpra[17088]:     value = fun(*args, **kwargs)
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   File "/usr/lib/python3/dist-packages/xpra/x11/gtk_x11/composite.py", line 92, in _set_pixmap
Jan 08 10:56:05 tmartitz-pc xpra[17088]:     root = self.client_window.get_screen().get_root_window()
Jan 08 10:56:05 tmartitz-pc xpra[17088]: AttributeError: 'NoneType' object has no attribute 'get_root_window'
Jan 08 10:56:05 tmartitz-pc xpra[17088]: Traceback (most recent call last):
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   File "/usr/lib/python3/dist-packages/xpra/server/window/window_source.py", line 1452, in expire_delayed_region
Jan 08 10:56:05 tmartitz-pc xpra[17088]:     self.may_send_delayed()
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   File "/usr/lib/python3/dist-packages/xpra/server/window/window_source.py", line 1616, in may_send_delayed
Jan 08 10:56:05 tmartitz-pc xpra[17088]:     self.do_send_delayed()
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   File "/usr/lib/python3/dist-packages/xpra/server/window/window_source.py", line 1627, in do_send_delayed
Jan 08 10:56:05 tmartitz-pc xpra[17088]:     self.send_delayed_regions(delayed)
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   File "/usr/lib/python3/dist-packages/xpra/server/window/window_source.py", line 1645, in send_delayed_regions
Jan 08 10:56:05 tmartitz-pc xpra[17088]:     self.do_send_delayed_regions(dr.damage_time, dr.regions, dr.encoding, dr.options)
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   File "/usr/lib/python3/dist-packages/xpra/server/window/window_video_source.py", line 737, in do_send_delayed_regions
Jan 08 10:56:05 tmartitz-pc xpra[17088]:     WindowSource.do_send_delayed_regions(self, damage_time, regions, coding, options)
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   File "/usr/lib/python3/dist-packages/xpra/server/window/window_source.py", line 1715, in do_send_delayed_regions
Jan 08 10:56:05 tmartitz-pc xpra[17088]:     send_full_window_update("merged region covers almost the whole window")
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   File "/usr/lib/python3/dist-packages/xpra/server/window/window_source.py", line 1660, in send_full_window_update
Jan 08 10:56:05 tmartitz-pc xpra[17088]:     self.process_damage_region(damage_time, 0, 0, ww, wh, actual_encoding, options)
Jan 08 10:56:05 tmartitz-pc xpra[17088]:   File "/usr/lib/python3/dist-packages/xpra/server/window/window_video_source.py", line 853, in process_damage_region


Wed, 08 Jan 2020 10:02:22 GMT - Thomas Martitz:

Jan 08 11:01:47 tmartitz-pc xpra[17088]: ../../../../../gdk/x11/gdkwindow-x11.c:5579 drawable is not a native X11 window
Jan 08 11:01:47 tmartitz-pc xpra[17088]: ../../../../../gdk/x11/gdkwindow-x11.c:5579 drawable is not a native X11 window
Jan 08 11:01:47 tmartitz-pc xpra[17088]: gdk_window_get_screen: assertion 'GDK_IS_WINDOW (window)' failed

is added to the log anytime I click in the zombie window.


Wed, 08 Jan 2020 10:03:59 GMT - Thomas Martitz: attachment set

created by bug report tool


Wed, 08 Jan 2020 10:04:31 GMT - Thomas Martitz: summary changed


Wed, 08 Jan 2020 10:04:42 GMT - Thomas Martitz: component changed


Wed, 08 Jan 2020 10:40:09 GMT - Antoine Martin: owner changed

kugel: is this on Ubuntu Bionic? What do I need to do to reproduce it? In your server info, I see a 2 geany windows:

>>> winfo[12]
{b'xid': b'0x60000c', b'depth': 24, b'has-alpha': False, b'client-machine': b'tmartitz-pc', b'pid': 21189, \
 b'title': b'*unbenannt - [docsis-puma7] - Geany', b'command': b'', b'shape': {}, b'class-instance': (b'geany', b'Geany'), \
 b'state': (b'_NET_WM_STATE_MAXIMIZED_HORZ', b'_NET_WM_STATE_MAXIMIZED_VERT'), b'bypass-compositor': 0, \
 b'window-type': (b'NORMAL',), b'workspace': 65535, b'strut': {}, b'opacity': -1, b'content-type': b'', \
 b'fullscreen': False, 'focused': 0, b'maximized': True, b'above': False, b'below': False, b'shaded': False, \
 b'skip-taskbar': False, b'skip-pager': False, b'sticky': False, \
 b'size-constraints': {b'position': (0, 0), b'base-size': (0, 0), b'gravity': 1, b'minimum-size': (551, 239)}, \
 b'icon-title': b'*unbenannt - [docsis-puma7] - Geany', b'modal': False, b'set-initial-position': True, b'iconic': False, \
 b'allowed-actions': (b'_NET_WM_ACTION_CLOSE', b'_NET_WM_ACTION_MOVE', b'_NET_WM_ACTION_RESIZE', b'_NET_WM_ACTION_FULLSCREEN', b'_NET_WM_ACTION_MINIMIZE', b'_NET_WM_ACTION_SHADE', b'_NET_WM_ACTION_STICK', b'_NET_WM_ACTION_MAXIMIZE_HORZ', b'_NET_WM_ACTION_MAXIMIZE_VERT', b'_NET_WM_ACTION_CHANGE_DESKTOP', b'_NET_WM_ACTION_ABOVE', b'_NET_WM_ACTION_BELOW'), \
 b'children': (), b'override-redirect': False, b'tray': False, b'size': (1920, 1135), \
 b'client-properties': {b'29d62961dbd46001e4533ae72bb771b06d095565': {b'workspace': 0}}, b'XShm': True, b'geometry': (1920, 292, 1920, 1135), \
 b'grabbed': 0, b'shown': True, b'client-geometry': (1920, 292, 1920, 1135)}
>>> winfo[71]
{b'xid': b'0xc0000c', b'depth': 24, b'has-alpha': False, b'client-machine': b'tmartitz-pc', b'pid': 2964, \
 b'title': b'COMMIT_EDITMSG - /home/tmartitz/gu-psq19.git/DOCSIS_atomp7_build/.git - Geany (neue Instanz)', \
 b'command': b'', b'shape': {}, b'class-instance': (b'geany', b'Geany'), b'state': (b'_NET_WM_STATE_MAXIMIZED_HORZ', b'_NET_WM_STATE_MAXIMIZED_VERT'), \
 b'bypass-compositor': 0, b'window-type': (b'NORMAL',), b'workspace': 65535, b'strut': {}, b'opacity': -1, \
 b'content-type': b'', b'fullscreen': False, b'focused': 0, b'maximized': True, b'above': False, b'below': False, \
 b'shaded': False, b'skip-taskbar': False, b'skip-pager': False, b'sticky': False, \
 b'size-constraints': {b'position': (0, 0), b'base-size': (0, 0), b'gravity': 1, b'minimum-size': (551, 239)}, \
 b'icon-title': b'COMMIT_EDITMSG - /home/tmartitz/gu-psq19.git/DOCSIS_atomp7_build/.git - Geany (neue Instanz)', \
 b'modal': False, b'set-initial-position': True, b'iconic': False, \
 b'allowed-actions': (b'_NET_WM_ACTION_CLOSE', b'_NET_WM_ACTION_MOVE', b'_NET_WM_ACTION_RESIZE', b'_NET_WM_ACTION_FULLSCREEN', b'_NET_WM_ACTION_MINIMIZE', b'_NET_WM_ACTION_SHADE', b'_NET_WM_ACTION_STICK', b'_NET_WM_ACTION_MAXIMIZE_HORZ', b'_NET_WM_ACTION_MAXIMIZE_VERT', b'_NET_WM_ACTION_CHANGE_DESKTOP', b'_NET_WM_ACTION_ABOVE', b'_NET_WM_ACTION_BELOW'), \
 b'children': (), b'override-redirect': False, b'tray': False, b'size': (1920, 1135), \
 b'client-properties': {b'29d62961dbd46001e4533ae72bb771b06d095565': {b'workspace': 0}}, b'XShm': True, \
 b'geometry': (1920, 292, 1920, 1135), b'grabbed': 0, b'shown': True, b'client-geometry': (1920, 292, 1920, 1135)}

Are they both dead? Is the geany process dead too? The second one is maximized, is that expected? What is your client-side DE?


Wed, 08 Jan 2020 11:35:25 GMT - Thomas Martitz:

One is dead, one is active. There is only one geany process, that corresponds to the working window. The window titled "COMMIT_EDITMSG - /home/tmartitz/gu-psq19.git/DOCSIS_atomp7_build/.git - Geany (neue Instanz)" is the dead one, it opens when I commit something in git (EDITOR is set to 'geany --display :10 -si'). Sometimes when I close geany to finalize git-commit, the window simply stays alive but git-commit returns just fine.

Yes, maximized is excepted. Actually both should be maximized.

I'm on KDE neon, so yes bionic beaver based.

Is there a workaround to close the zombie window via some xpra server command?


Wed, 08 Jan 2020 12:26:37 GMT - Antoine Martin:

Yes, maximized is excepted. Actually both should be maximized.

Both are.

Is there a workaround to close the zombie window via some xpra server command?

No, we can't really have conflicting instructions in the server. The X11 server is what drives the xpra server.

drawable is not a native X11 window

This points towards an environment issue, could be caused by some wayland compatibility code in GTK / Qt. I see that you're running: geany --display :10 -si The fact that you have to specify the $DISPLAY tells me that you're probably launching geany from an environment which was not created by xpra... Unless you can also reproduce the bug from an environment created by xpra, I may have to close the ticket as 'invalid' as there's nothing we can do if apps aren't launched using --start= (or --start-child, --start-xxxx etc) You may be able to workaround the problem by setting the environment variables required to tell geany to not go anywhere near the wayland code. (ie: GDK_BACKEND=x11 and QT_QPA_PLATFORM for Qt apps).


Wed, 08 Jan 2020 12:40:41 GMT - Thomas Martitz:

Well, my terminal runs under :0, the local xpra server is already started on login. How else should I launch a program under the xpra server, when it already runs?

I thought "DISPLAY=:10 foo" is the appropriate way (foo --display :10 is equivalent for GTK apps)

(this is local xpra btw)


Wed, 08 Jan 2020 12:53:00 GMT - Antoine Martin:

I thought "DISPLAY=:10 foo" is the appropriate way (foo --display :10 is equivalent for GTK apps)

That only sets the $DISPLAY and not all the other environment variables that xpra normally sets when launching applications. There are a number of workarounds for tookit "features", input devices, etc.. Try this instead: xpra control :10 start foo


Wed, 08 Jan 2020 13:14:14 GMT - Thomas Martitz:

Thanks. However, it doesn't block which is needed for my EDITOR / git-commit use-case.


Fri, 31 Jan 2020 12:00:03 GMT - Thomas Martitz:

The problem just occured with Geany started via 'xpra control :10 start geany'.

Before the window went into zombie it didn't immediately react to key presses anymore. Only after alt+tabbing to another window the keypress were effective.

I.e. I pressed abc in the editor window and nothing happend. Then I used alt+tab to switch to another window (non-xpra) and back to geany. Now abc appeared.

I then closed the geany window, and the process exited. But the window remains up in a zombie state.


Sun, 02 Feb 2020 07:36:40 GMT - Antoine Martin:

r25121 will avoid dumping the long stacktraces calling get_root_window. But this will not fix the underlying problem. It looks like something with the X11 server is getting out of sync, but we already have context checks around all X11 calls: ticket:1475#comment:10.

Can you start your server with:

XPRA_X_SYNC=1 xpra start ...

And see if the problem goes away?


Mon, 03 Feb 2020 12:14:02 GMT - Thomas Martitz:

XPRA_X_SYNC=1 does not seem to help, it just happened again. Though I'm not on the latest xpra version. My debian package was upgraded to 3.0.5 but AFAICS this does not include the change you mentioned.

I would rather stay on the stable xpra channel. Is there something I can change locally to see if it helps (I'm fluent in python) without going xpra-beta?


Mon, 03 Feb 2020 14:25:41 GMT - Antoine Martin:

My debian package was upgraded to 3.0.5 but AFAICS this does not include the change you mentioned.

xpra 3.0.6 will be released soon with the change. Note that this fix will only avoid logging the backtrace, not actually fix anything.


Wed, 01 Apr 2020 16:03:42 GMT - Antoine Martin: status, milestone changed; resolution set


Thu, 02 Apr 2020 09:21:31 GMT - Thomas Martitz: status changed; resolution deleted

What else do you need? It still happens on 3.0.6 if that matters.


Thu, 02 Apr 2020 10:10:11 GMT - Antoine Martin:

Only after alt+tabbing to another window the keypress were effective.

Could be #2690 (try applying r25893).

It still happens on 3.0.6 if that matters.

3.0.8 is the current version.

What else do you need?

Reliable reproduction steps.


Thu, 02 Apr 2020 10:46:55 GMT - Thomas Martitz:

I'm sorry. I cannot provide reproduction steps because it happens rarely anyway.

I'll check if it still happens with r25893 applied but I'm not at work ATM due to Corona virus so it may take a while.


Wed, 08 Apr 2020 14:14:02 GMT - Antoine Martin: milestone changed


Sun, 04 Oct 2020 12:41:49 GMT - Antoine Martin:

Bump. Can I close this?


Fri, 16 Oct 2020 16:00:58 GMT - Antoine Martin: status changed; resolution set


Sat, 23 Jan 2021 05:54:07 GMT - migration script:

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