Which is more difficult when we exit on a signal..
Found this stacktrace in some automated test samples:
Traceback (most recent call last): File "/usr/lib64/python2.7/site-packages/xpra/gtk_common/gobject_util.py", line 30, in do_get_property return getattr(self, getter)(pspec.name) File "/usr/lib64/python2.7/site-packages/xpra/x11/gtk_x11/composite.py", line 205, in do_get_property_contents_handle trap.swallow_synced(set_pixmap) File "/usr/lib64/python2.7/site-packages/xpra/gtk_common/error.py", line 136, in swallow_synced self.call_synced(fun, *args, **kwargs) File "/usr/lib64/python2.7/site-packages/xpra/gtk_common/error.py", line 119, in call_synced return self._call(True, fun, args, kwargs) File "/usr/lib64/python2.7/site-packages/xpra/gtk_common/error.py", line 111, in _call raise e AttributeError: 'NoneType' object has no attribute 'xid'
Which can only occur if self._window
is set to None by destroy
concurrently with a call to do_get_property_contents_handle
...
This particular error will no longer be shown as of r6888.
But the underlying issue remains... I am lowering the priority as this only affects exit-on-signal, which makes it less important. See also #626
See also #626
A similar problem was solved in r9190, I think that r9194 does the same thing for the regular server process. (not needed for the proxy server code)
Closing, will re-open if this breaks anything.
Note: as per ticket:626#comment:9, we don't cleanup from the UI thread when we exit from the signal handler... it seems we just can't have everything!
this ticket has been moved to: https://github.com/Xpra-org/xpra/issues/582