Xpra: Ticket #394: Xpra often hangs when left overnight

Hi guys

I'm a big fan of Xpra, but it's not very stable for me. I have some programs running overnight, and periodically check in on them via xpra. However, all to often it happens that the server doesn't respond. It doesn't reject the connection, and it doesn't complete the xpra connection. As far as I can tell, it makes a tcp connection and then hangs.

I'm using the newest version from your own repos, on the client. I thought that was also the case on the server, but it turns out it was stuck at 0.9.5-1. I've just upgraded to 0.9.7-1, to see if this helps.

Anyway, this is the log from last time time happened. Does it help you at all?

X.Org X Server 1.12.4
Release Date: 2012-08-27
X Protocol Version 11, Revision 0
Build Operating System: Linux 3.2.0-4-amd64 x86_64 Debian
Current Operating System: Linux eurus 3.2.0-4-amd64 #1 SMP Debian 3.2.46-1 x86_64
Kernel command line: BOOT_IMAGE=/boot/vmlinuz-3.2.0-4-amd64 root=UUID=37be53ba-8218-403e-82ab-89407040b2da ro root=UUID=37be53ba-8218-403e-82ab-89407040b2da quiet
Build Date: 17 April 2013  10:22:47AM
xorg-server 2:1.12.4-6 (Julien Cristau <jcristau@debian.org>)
Current version of pixman: 0.26.0
        Before reporting problems, check http://wiki.x.org
        to make sure that you have the latest version.
Markers: (--) probed, (**) from config file, (==) default setting,
        (++) from command line, (!!) notice, (II) informational,
        (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(++) Log file: "/home/torrents/.xpra/Xorg.:42.log", Time: Mon Jul 15 21:51:26 2013
(++) Using config file: "/etc/xpra/xorg.conf"
(==) Using system config directory "/usr/share/X11/xorg.conf.d"
2013-07-15 21:51:27,745 server uuid is af7f2e4cceba4947abb4a934ab4286a6
2013-07-15 21:51:28,014 using notification forwarder: DBUSNotificationsForwarder(org.freedesktop.Notifications)
2013-07-15 21:51:28,057 pulseaudio server started with pid 16411
2013-07-15 21:51:28,059 xpra server version 0.9.5
2013-07-15 21:51:28,203 xpra is ready.
2013-07-15 21:51:28,278 New connection received: SocketConnection(/home/torrents/.xpra/eurus-42)
2013-07-15 21:51:28,283 connection closed after 0 packets received (0 bytes) and 0 packets sent (0 bytes)
2013-07-15 21:51:28,287 Connection lost
2013-07-15 21:51:29,218 New connection received: SocketConnection(/home/torrents/.xpra/eurus-42)
2013-07-15 21:51:29,222 connection closed after 0 packets received (0 bytes) and 0 packets sent (0 bytes)
2013-07-15 21:51:29,224 Connection lost
2013-07-15 21:51:39,390 New connection received: SocketConnection(/home/torrents/.xpra/eurus-42)
2013-07-15 21:51:39,500 Handshake complete; enabling connection
2013-07-15 21:51:39,571 Python/Gtk2 Linux client version 0.9.6 connected from 'helios'
2013-07-15 21:51:39,571 using x264 as primary encoding
2013-07-15 21:51:39,572 max client resolution is 5760x2160 (from [[5760, 2160]]), current server resolution is 5120x3200
2013-07-15 21:51:39,576 setting key repeat rate from client: 130ms delay / 25ms interval
2013-07-15 21:51:39,585 setting keymap: rules=evdev, model=pc105, layout=dk
The XKEYBOARD keymap compiler (xkbcomp) reports:
> Warning:          Type "ONE_LEVEL" has 1 levels, but <RALT> has 2 symbols
>                   Ignoring extra symbols
Errors from xkbcomp are not fatal to the X server
2013-07-15 21:51:39,697 setting full keymap definition from client via xkbcomp
2013-07-15 21:51:39,900 using sound codec mp3
2013-07-15 21:51:40,675 starting sound using pulseaudio device null.monitor
2013-07-15 21:51:42,142 codec: MPEG-1 Layer 3 (MP3)
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/wimpiggy/window.py", line 452, in composite_configure_event
    self.read_geometry(True)
  File "/usr/lib/python2.7/dist-packages/wimpiggy/window.py", line 368, in read_geometry
    trap.call_unsynced(synced_update)
  File "/usr/lib/python2.7/dist-packages/wimpiggy/error.py", line 117, in call_unsynced
    return self._call(False, fun, args, kwargs)
  File "/usr/lib/python2.7/dist-packages/wimpiggy/error.py", line 112, in _call
    raise e
TypeError: Don't know how to get a display from 12583017L
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/wimpiggy/window.py", line 452, in composite_configure_event
    self.read_geometry(True)
  File "/usr/lib/python2.7/dist-packages/wimpiggy/window.py", line 368, in read_geometry
    trap.call_unsynced(synced_update)
  File "/usr/lib/python2.7/dist-packages/wimpiggy/error.py", line 117, in call_unsynced
    return self._call(False, fun, args, kwargs)
  File "/usr/lib/python2.7/dist-packages/wimpiggy/error.py", line 112, in _call
    raise e
TypeError: Don't know how to get a display from 12583017L
2013-07-15 21:53:33,934 write connection reset for SocketConnection(/home/torrents/.xpra/eurus-42)
2013-07-15 21:53:33,936 read connection reset for SocketConnection(/home/torrents/.xpra/eurus-42)
2013-07-15 21:53:33,947 connection lost: write connection reset: [Errno 32] Broken pipe
2013-07-15 21:53:33,948 connection closed after 1316 packets received (50034 bytes) and 4521 packets sent (45626576 bytes)
2013-07-15 21:53:33,951 connection lost: read connection reset: [Errno 104] Connection reset by peer
2013-07-15 21:53:33,953 Connection lost
2013-07-15 21:53:34,184 xpra client disconnected.
2013-07-15 21:53:40,958 New connection received: SocketConnection(/home/torrents/.xpra/eurus-42)
2013-07-15 21:53:41,002 Handshake complete; enabling connection
2013-07-15 21:53:41,009 Python/Gtk2 Linux client version 0.9.6 connected from 'helios'
2013-07-15 21:53:41,010 using x264 as primary encoding
2013-07-15 21:53:41,010 max client resolution is 5760x2160 (from [[5760, 2160]]), current server resolution is 5120x3200
2013-07-15 21:53:41,013 setting key repeat rate from client: 130ms delay / 25ms interval
2013-07-15 21:53:41,022 keyboard mapping already configured (skipped)
2013-07-15 21:53:41,078 using sound codec mp3
2013-07-15 21:53:41,515 starting sound using pulseaudio device null.monitor
2013-07-15 21:53:43,397 codec: MPEG-1 Layer 3 (MP3)
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/wimpiggy/window.py", line 452, in composite_configure_event
    self.read_geometry(True)
  File "/usr/lib/python2.7/dist-packages/wimpiggy/window.py", line 368, in read_geometry
    trap.call_unsynced(synced_update)
  File "/usr/lib/python2.7/dist-packages/wimpiggy/error.py", line 117, in call_unsynced
    return self._call(False, fun, args, kwargs)
  File "/usr/lib/python2.7/dist-packages/wimpiggy/error.py", line 112, in _call
    raise e
TypeError: Don't know how to get a display from 12583062L
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/wimpiggy/window.py", line 452, in composite_configure_event
    self.read_geometry(True)
  File "/usr/lib/python2.7/dist-packages/wimpiggy/window.py", line 368, in read_geometry
    trap.call_unsynced(synced_update)
  File "/usr/lib/python2.7/dist-packages/wimpiggy/error.py", line 117, in call_unsynced
    return self._call(False, fun, args, kwargs)
  File "/usr/lib/python2.7/dist-packages/wimpiggy/error.py", line 112, in _call
    raise e
TypeError: Don't know how to get a display from 12583062L
2013-07-15 21:53:48,031 write connection reset for SocketConnection(/home/torrents/.xpra/eurus-42)
2013-07-15 21:53:48,043 connection closed after 191 packets received (17895 bytes) and 210 packets sent (3907101 bytes)
2013-07-15 21:53:48,060 connection lost: write connection reset: [Errno 32] Broken pipe
2013-07-15 21:53:48,062 Connection lost
2013-07-15 21:53:48,118 xpra client disconnected.
2013-07-15 21:54:54,381 New connection received: SocketConnection(/home/torrents/.xpra/eurus-42)
2013-07-15 21:54:54,424 Handshake complete; enabling connection
2013-07-15 21:54:54,432 Python/Gtk2 Linux client version 0.9.6 connected from 'helios'
2013-07-15 21:54:54,433 using x264 as primary encoding
2013-07-15 21:54:54,434 max client resolution is 5760x2160 (from [[5760, 2160]]), current server resolution is 5120x3200
2013-07-15 21:54:54,435 setting key repeat rate from client: 130ms delay / 25ms interval
2013-07-15 21:54:54,444 keyboard mapping already configured (skipped)
2013-07-15 21:54:54,507 using sound codec mp3
2013-07-15 21:54:54,604 starting sound using pulseaudio device null.monitor
2013-07-15 21:54:54,703 codec: MPEG-1 Layer 3 (MP3)
2013-07-15 21:55:20,802 connection closed after 419 packets received (23558 bytes) and 1484 packets sent (11348663 bytes)
2013-07-15 21:55:20,822 Connection lost
2013-07-15 21:55:20,980 xpra client disconnected.
2013-07-15 21:56:33,075 New connection received: SocketConnection(/home/torrents/.xpra/eurus-42)
2013-07-15 21:56:33,126 Handshake complete; enabling connection
2013-07-15 21:56:33,135 Python/Gtk2 Linux client version 0.9.6 connected from 'helios'
2013-07-15 21:56:33,135 using x264 as primary encoding
2013-07-15 21:56:33,135 max client resolution is 5760x2160 (from [[5760, 2160]]), current server resolution is 5120x3200
2013-07-15 21:56:33,138 setting key repeat rate from client: 130ms delay / 25ms interval
2013-07-15 21:56:33,150 keyboard mapping already configured (skipped)
2013-07-15 21:56:33,206 using sound codec mp3
2013-07-15 21:56:33,311 starting sound using pulseaudio device null.monitor
2013-07-15 21:56:33,379 codec: MPEG-1 Layer 3 (MP3)
2013-07-15 22:01:11,471 write connection reset for SocketConnection(/home/torrents/.xpra/eurus-42)
2013-07-15 22:01:11,472 connection closed after 1472 packets received (55845 bytes) and 12083 packets sent (155510205 bytes)
2013-07-15 22:01:11,473 Connection lost
2013-07-15 22:01:11,717 xpra client disconnected.
2013-07-15 22:01:11,720 connection lost: write connection reset: [Errno 32] Broken pipe
2013-07-16 23:54:42,046 New connection received: SocketConnection(/home/torrents/.xpra/eurus-42)
2013-07-16 23:54:42,089 Handshake complete; enabling connection
2013-07-16 23:54:42,094 Python/Gtk2 Linux client version 0.9.6 connected from 'helios'
2013-07-16 23:54:42,095 using x264 as primary encoding
2013-07-16 23:54:42,096 max client resolution is 5760x2160 (from [[5760, 2160]]), current server resolution is 5120x3200
2013-07-16 23:54:42,097 setting key repeat rate from client: 130ms delay / 25ms interval
2013-07-16 23:54:42,107 setting keymap: rules=evdev, model=pc105, layout=dk
The XKEYBOARD keymap compiler (xkbcomp) reports:
> Warning:          Type "ONE_LEVEL" has 1 levels, but <RALT> has 2 symbols
>                   Ignoring extra symbols
Errors from xkbcomp are not fatal to the X server
2013-07-16 23:54:42,805 setting full keymap definition from client via xkbcomp
2013-07-16 23:54:43,069 using sound codec mp3
2013-07-16 23:54:43,202 starting sound using pulseaudio device null.monitor
W: [null-sink] asyncq.c: q overrun, queuing locally
W: [null-sink] ratelimit.c: 84 events suppressed
W: [null-sink] asyncq.c: q overrun, queuing locally
W: [null-sink] asyncq.c: q overrun, queuing locally
W: [null-sink] asyncq.c: q overrun, queuing locally
W: [null-sink] asyncq.c: q overrun, queuing locally
W: [null-sink] asyncq.c: q overrun, queuing locally
W: [null-sink] asyncq.c: q overrun, queuing locally
W: [null-sink] asyncq.c: q overrun, queuing locally
W: [null-sink] asyncq.c: q overrun, queuing locally
W: [null-sink] asyncq.c: q overrun, queuing locally
W: [null-sink] asyncq.c: q overrun, queuing locally
W: [null-sink] asyncq.c: q overrun, queuing locally
W: [null-sink] ratelimit.c: 3129 events suppressed
W: [null-sink] asyncq.c: q overrun, queuing locally
W: [null-sink] asyncq.c: q overrun, queuing locally
W: [null-sink] asyncq.c: q overrun, queuing locally
W: [null-sink] asyncq.c: q overrun, queuing locally
W: [null-sink] asyncq.c: q overrun, queuing locally
W: [null-sink] asyncq.c: q overrun, queuing locally
W: [null-sink] asyncq.c: q overrun, queuing locally
W: [null-sink] asyncq.c: q overrun, queuing locally
W: [null-sink] asyncq.c: q overrun, queuing locally
W: [null-sink] asyncq.c: q overrun, queuing locally
W: [null-sink] asyncq.c: q overrun, queuing locally
W: [null-sink] ratelimit.c: 16 events suppressed
W: [null-sink] asyncq.c: q overrun, queuing locally
W: [null-sink] asyncq.c: q overrun, queuing locally
W: [null-sink] asyncq.c: q overrun, queuing locally
W: [null-sink] asyncq.c: q overrun, queuing locally
W: [null-sink] asyncq.c: q overrun, queuing locally
W: [null-sink] asyncq.c: q overrun, queuing locally
W: [null-sink] asyncq.c: q overrun, queuing locally
W: [null-sink] asyncq.c: q overrun, queuing locally
W: [null-sink] asyncq.c: q overrun, queuing locally
W: [null-sink] asyncq.c: q overrun, queuing locally
W: [null-sink] asyncq.c: q overrun, queuing locally
2013-07-17 04:41:47,278 setting keymap: rules=evdev, model=pc105, layout=dk
The XKEYBOARD keymap compiler (xkbcomp) reports:
> Warning:          Type "ONE_LEVEL" has 1 levels, but <RALT> has 2 symbols
>                   Ignoring extra symbols
Errors from xkbcomp are not fatal to the X server
2013-07-17 04:41:47,490 setting full keymap definition from client via xkbcomp
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/wimpiggy/window.py", line 452, in composite_configure_event
    self.read_geometry(True)
  File "/usr/lib/python2.7/dist-packages/wimpiggy/window.py", line 368, in read_geometry
    trap.call_unsynced(synced_update)
  File "/usr/lib/python2.7/dist-packages/wimpiggy/error.py", line 117, in call_unsynced
    return self._call(False, fun, args, kwargs)
  File "/usr/lib/python2.7/dist-packages/wimpiggy/error.py", line 112, in _call
    raise e
TypeError: Don't know how to get a display from 12583041L
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/wimpiggy/window.py", line 452, in composite_configure_event
    self.read_geometry(True)
  File "/usr/lib/python2.7/dist-packages/wimpiggy/window.py", line 368, in read_geometry
    trap.call_unsynced(synced_update)
  File "/usr/lib/python2.7/dist-packages/wimpiggy/error.py", line 117, in call_unsynced
    return self._call(False, fun, args, kwargs)
  File "/usr/lib/python2.7/dist-packages/wimpiggy/error.py", line 112, in _call
    raise e
TypeError: Don't know how to get a display from 12583041L
2013-07-17 04:44:01,757 not found transient_for=<gtk.gdk.Window object at 0x1ffd370 (GdkWindow at 0x1fd1120)>, xid=0xc000ffL
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/wimpiggy/window.py", line 452, in composite_configure_event
    self.read_geometry(True)
  File "/usr/lib/python2.7/dist-packages/wimpiggy/window.py", line 368, in read_geometry
    trap.call_unsynced(synced_update)
  File "/usr/lib/python2.7/dist-packages/wimpiggy/error.py", line 117, in call_unsynced
    return self._call(False, fun, args, kwargs)
  File "/usr/lib/python2.7/dist-packages/wimpiggy/error.py", line 112, in _call
    raise e
TypeError: Don't know how to get a display from 12583167L
2013-07-17 04:44:05,022 not found transient_for=<gtk.gdk.Window object at 0x1ffd370 (GdkWindow at 0x1fd1120)>, xid=0xc000ffL
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/wimpiggy/window.py", line 452, in composite_configure_event
    self.read_geometry(True)
  File "/usr/lib/python2.7/dist-packages/wimpiggy/window.py", line 368, in read_geometry
    trap.call_unsynced(synced_update)
  File "/usr/lib/python2.7/dist-packages/wimpiggy/error.py", line 117, in call_unsynced
    return self._call(False, fun, args, kwargs)
  File "/usr/lib/python2.7/dist-packages/wimpiggy/error.py", line 112, in _call
    raise e
TypeError: Don't know how to get a display from 12583167L
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/wimpiggy/window.py", line 452, in composite_configure_event
    self.read_geometry(True)
  File "/usr/lib/python2.7/dist-packages/wimpiggy/window.py", line 368, in read_geometry
    trap.call_unsynced(synced_update)
  File "/usr/lib/python2.7/dist-packages/wimpiggy/error.py", line 117, in call_unsynced
    return self._call(False, fun, args, kwargs)
  File "/usr/lib/python2.7/dist-packages/wimpiggy/error.py", line 112, in _call
    raise e
TypeError: Don't know how to get a display from 12583287L
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/wimpiggy/window.py", line 452, in composite_configure_event
    self.read_geometry(True)
  File "/usr/lib/python2.7/dist-packages/wimpiggy/window.py", line 368, in read_geometry
    trap.call_unsynced(synced_update)
  File "/usr/lib/python2.7/dist-packages/wimpiggy/error.py", line 117, in call_unsynced
    return self._call(False, fun, args, kwargs)
  File "/usr/lib/python2.7/dist-packages/wimpiggy/error.py", line 112, in _call
    raise e
TypeError: Don't know how to get a display from 12583287L
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/wimpiggy/window.py", line 452, in composite_configure_event
    self.read_geometry(True)
  File "/usr/lib/python2.7/dist-packages/wimpiggy/window.py", line 368, in read_geometry
    trap.call_unsynced(synced_update)
  File "/usr/lib/python2.7/dist-packages/wimpiggy/error.py", line 117, in call_unsynced
    return self._call(False, fun, args, kwargs)
  File "/usr/lib/python2.7/dist-packages/wimpiggy/error.py", line 112, in _call
    raise e
TypeError: Don't know how to get a display from 12583299L
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/wimpiggy/window.py", line 452, in composite_configure_event
    self.read_geometry(True)
  File "/usr/lib/python2.7/dist-packages/wimpiggy/window.py", line 368, in read_geometry
    trap.call_unsynced(synced_update)
  File "/usr/lib/python2.7/dist-packages/wimpiggy/error.py", line 117, in call_unsynced
    return self._call(False, fun, args, kwargs)
  File "/usr/lib/python2.7/dist-packages/wimpiggy/error.py", line 112, in _call
    raise e
TypeError: Don't know how to get a display from 12583299L
2013-07-17 04:49:03,121 write connection reset for SocketConnection(/home/torrents/.xpra/eurus-42)
2013-07-17 04:49:03,129 connection closed after 13654 packets received (500499 bytes) and 7340 packets sent (362756392 bytes)
2013-07-17 04:49:03,133 connection lost: write connection reset: [Errno 104] Connection reset by peer
2013-07-17 04:49:03,133 Connection lost
Server terminated successfully (0). Closing log file.


Fri, 19 Jul 2013 12:49:10 GMT - Antoine Martin: owner changed

Are you using sound forwarding? If not, then try disabling it - there are some suspicious sound related messages in there:

W: [null-sink] asyncq.c: q overrun, queuing locally

Then there is this one:

TypeError: Don't know how to get a display from 12583299L

Which is very odd because the client_window is always meant to be a window, not an XID! It may well cause all sorts of problems if it is set wrong.

That said, the real problem is manifesting itself in _io_thread_loop as an ECONNRESET or EPIPE, this is what is causing:

write connection reset for SocketConnection(...)

So I suspect something is leaking somewhere and eventually causing the process to stall. Maybe keeping an eye on how much resources it is using (RAM, file descriptors, etc) may help. You could also try dumping "xpra info" to a file every minute or so, then we may be able to see what is increasing/changing before it gives up. And if you are really feeling adventurous, there's always trunk (which is nearing release)


Sat, 10 Aug 2013 05:17:41 GMT - Antoine Martin: status changed; resolution set

Not heard back, closing.


Sat, 10 Aug 2013 16:15:20 GMT - Antoine Martin: status changed; resolution deleted

Re-opening following email request.


Tue, 13 Aug 2013 05:09:16 GMT - Antoine Martin: milestone set

(updating milestone - may close again)


Fri, 15 Nov 2013 14:06:25 GMT - Antoine Martin: status changed; resolution set


Thu, 02 Nov 2017 11:57:32 GMT - Antoine Martin: milestone changed


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

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