xpra icon
Bug tracker and wiki

Opened 7 months ago

Closed 4 months ago

#1998 closed defect (needinfo)

xpra stop all does not stop all

Reported by: stdedos Owned by: stdedos
Priority: minor Milestone: 2.5
Component: server Version: 2.4.x
Keywords: Cc:

Description

$ xpra list
Found the following xpra sessions:
/run/user/1000/xpra:
	LIVE session at :3
	LIVE session at :4
	LIVE session at :5
	LIVE session at :6
$ xpra stop all
Trying to stop 3 displays:
 :4, :5, :6
xpra initialization error:
 failed to connect to '/run/user/1000/xpra/sntentos-precision-t3620-5':
 [Errno 11] Resource temporarily unavailable
xpra initialization error:
 cannot find live server for display :4
$ xpra list
Found the following xpra sessions:
/run/user/1000/xpra:
	DEAD session at :3 (cleaned up)
	DEAD session at :4 (cleaned up)
	DEAD session at :5 (cleaned up)
	LIVE session at :6
$ connection timed out
timeout: server did not disconnect us
^C
$ xpra list
Found the following xpra sessions:
/run/user/1000/xpra:
	LIVE session at :6

Attachments (3)

xpra-run.tbz2 (12.5 KB) - added by stdedos 7 months ago.
trac_1998_new-instance.zip (63.5 KB) - added by stdedos 6 months ago.
trac_1998.zip (281.4 KB) - added by stdedos 6 months ago.

Download all attachments as: .zip

Change History (17)

comment:1 Changed 7 months ago by stdedos

Then again, sometime later:

$ xpra stop all
No xpra sessions found
$ xpra list
Found the following xpra sessions:
/run/user/1000/xpra:
	DEAD session at :6 (cleaned up)

Seems to clean them up

comment:2 Changed 7 months ago by Antoine Martin

Owner: changed from Antoine Martin to stdedos

xpra stop all just runs xpra stop NN on each display it finds.

So the only potential bugs that I see here are:

  • after calling stop, the socket is left behind and xpra list cleans it up
  • stopping :6 failed

Both work fine here and I don't see any steps to reproduce.
How do I start those sessions? What state are they in?
Can you call xpra info on the ones that are in the "wrong" state?

comment:3 Changed 7 months ago by stdedos

They are sessions from #1997 ticket, so commands were:

$ xpra start ssh://sntentos@localhost --start-child=gnome-terminal --terminate-children=yes --exit-with-children=yes
$ xpra --ssh='ssh -x' start ssh://sntentos@localhost --start-child=gnome-terminal


However, brute-forcing the server with xpra start ... miraculously fixed the issue, and I cannot replicate the state of the sessions. I didn't think of collecting xpra-info preemptively (since I expected xpra stop all to collect them)

If there is anything useful, it's on the attachment. I included everything in there; you might want to check only :3-:6


Maybe this could fail a bit faster? Or assume ':\d+'?

$ xpra info 7
xpra initialization error:
 unknown format for display name: 7

Changed 7 months ago by stdedos

Attachment: xpra-run.tbz2 added

comment:4 Changed 6 months ago by Antoine Martin

Resolution: needinfo
Status: newclosed

Maybe this could fail a bit faster? Or assume ':\d+'?

See #2031

Closing, feel free to re-open if you can provide steps to reproduce.

comment:5 Changed 6 months ago by stdedos

I do not have much more information to add on how to replicate it.
It seems to be related to whatever is causing the "new replication" of #2011

I am attaching (almost) the same diagnostics from #2011, and also the commands ran during this.

Note that clipboard sync was on

Changed 6 months ago by stdedos

Attachment: trac_1998_new-instance.zip added

comment:6 Changed 6 months ago by stdedos

More discrepancies (no xpra info, however :/)

$ xpra shadow -d encoding,bandwitdh :0
using systemd-run to wrap 'shadow' server command
'systemd-run' '--description' 'xpra-shadow' '--scope' '--user' '/usr/bin/xpra' 'shadow' '-d' 'encoding,bandwitdh' ':0' '--systemd-run=no'
Running scope as unit run-r3e763248a434434b9b82510637a3cdd1.scope.
Entering daemon mode; any further errors will be reported to:
  /run/user/1000/xpra/:0.log
(killed server from the client)
$ xpra list
Found the following xpra sessions:
/run/user/1000/xpra:
	DEAD session at :0 (cleaned up)
	LIVE session at :2
/run/xpra:
	LIVE session at :0
	LIVE session at :2
$ xpra list
Found the following xpra sessions:
/run/user/1000/xpra:
	LIVE session at :2
/run/xpra:
	LIVE session at :0
	LIVE session at :2
$ xpra stop :0
xpra initialization error:
 failed to connect to '/run/xpra/sntentos-precision-t3620-0':
 [Errno 11] Resource temporarily unavailable
$ xpra list
Found the following xpra sessions:
/run/user/1000/xpra:
	LIVE session at :2
/run/xpra:
	DEAD session at :0 (cleaned up)
	LIVE session at :2

Last edited 6 months ago by stdedos (previous) (diff)

comment:7 Changed 6 months ago by Antoine Martin

More discrepancies (no xpra info, however :/)

No server log?

comment:8 in reply to:  7 Changed 6 months ago by stdedos

Replying to Antoine Martin:

More discrepancies (no xpra info, however :/)

No server log?

No :/ I started killing it before of thinking to collect xpra info.

I assumed it would give the same as trac_1998_new-instance.zip/xpra-info-1.log:

$ xpra info :1
xpra initialization error:
 failed to connect to '/run/xpra/sntentos-precision-t3620-1':
 [Errno 11] Resource temporarily unavailable

$ xpra stop :1
xpra initialization error:
 cannot find live server for display :1

$ xpra info :1
xpra initialization error:
 cannot find live server for display :1

after having it killed from the client; hence I didn't try collecting.


You can see that the problem in:

$ xpra list
Found the following xpra sessions:
/run/user/1000/xpra:
	DEAD session at :0 (cleaned up)
	LIVE session at :2
/run/xpra:
	LIVE session at :0
	LIVE session at :2

is not in the:

Found the following xpra sessions:
/run/user/1000/xpra:
	DEAD session at :0 (cleaned up)
	LIVE session at :2

but in the:

/run/xpra:
	LIVE session at :0
	LIVE session at :2

Changed 6 months ago by stdedos

Attachment: trac_1998.zip added

comment:9 Changed 6 months ago by stdedos

I collected the xpra info as part of #2030.

Then "after a while", I killed the server. You can see the commands I ran, and their result. Server stayed idle for some time, but for all other purposes, I didn't do anything in-between.

Last edited 6 months ago by Antoine Martin (previous) (diff)

comment:10 Changed 6 months ago by Antoine Martin

Resolution: needinfo
Status: closedreopened

In attachment/ticket/1998/trac_1998_new-instance.zip there is no sign of a server shutdown anywhere in the xpra-server.log.
In attachment/ticket/1998/trac_1998.zip there are some shutdown messages in xpra-server-0_2030-2.log:

2018-11-16 01:40:46,320 Shutting down in response to client request
2018-11-16 01:40:46,320 Disconnecting client Protocol(unix-domain socket:/run/user/1000/xpra/sntentos-precision-t3620-0):
2018-11-16 01:40:46,320  server shutdown
(..)
2018-11-16 01:40:46,348 xpra client 1 disconnected.

But nothing about closing sockets, I would expect to see something like this - which is what I get, even on Ubuntu 16.04:

closing tcp socket 0.0.0.0:10000
removing socket /run/user/1000/xpra/desktop-1
removing socket /run/xpra/desktop-1

Can you reproduce this on a server started with -d util?
You should see something like this:

2018-11-16 20:48:25,504 cleanups=[
    <function cleanup_tcp_socket at 0x7fe3b671f500>,
    <function close_gtk_display at 0x7fe3b6c7fb18>,
    <function cleanup_socket at 0x7fe3b7a8ede8>,
    <function cleanup_socket at 0x7fe3b7a8ed70>
    ]

Maybe --systemd-run=no helps?
Or maybe you need to start the session via ssh to trigger this bug?

comment:11 Changed 6 months ago by Antoine Martin

Status: reopenednew

comment:12 Changed 6 months ago by stdedos

I randomly noticed xpra executables staying around:

$ ps -eo pid,lstart,cmd | grep -P '(^\s+P|xpra)'
  PID                  STARTED CMD
12529 Mon Nov 19 11:56:43 2018 /usr/bin/python2 /usr/bin/xpra proxy :14500 --daemon=no --bind-tcp=0.0.0.0:14500 --tcp-auth=sys --ssl-cert=/etc/xpra/ssl-cert.pem --ssl=on --bind=/run/xpra/system --auth=peercred --socket-dirs=/run/xpra --socket-permissions=666 --log-dir=/var/log --pidfile=/run/xpra.pid --debug=
15310 Mon Nov 19 11:59:11 2018 grep --color=auto -P (^\s+PID|xpra)
16253 Fri Nov 16 01:38:45 2018 /usr/bin/python2 /usr/bin/xpra -d encoding,bandwidth,stats,keyboard shadow :0 --systemd-run=no
19273 Thu Nov 15 01:18:57 2018 /usr/bin/python /usr/bin/xpra shadow -d encoding,bandwitdh :0 --systemd-run=no
19606 Thu Nov 15 01:19:15 2018 sh -c xpra initenv;if [ -x $XDG_RUNTIME_DIR/xpra/run-xpra ]; then $XDG_RUNTIME_DIR/xpra/run-xpra _proxy ":0";elif which "xpra" > /dev/null 2>&1; then xpra _proxy ":0";elif [ -x /usr/local/bin/xpra ]; then /usr/local/bin/xpra _proxy ":0";elif [ -x ~/.xpra/run-xpra ]; then ~/.xpra/run-xpra _proxy ":0";else echo "no run-xpra command found"; exit 1; fi
19634 Thu Nov 15 01:19:16 2018 /usr/bin/python /usr/bin/xpra _proxy :0
23490 Fri Nov 16 01:20:29 2018 /usr/bin/python2 /usr/bin/xpra -d encoding,bandwidth,stats,keyboard shadow :0 --systemd-run=no
29441 Thu Nov 15 01:29:55 2018 sh -c xpra initenv;if [ -x $XDG_RUNTIME_DIR/xpra/run-xpra ]; then $XDG_RUNTIME_DIR/xpra/run-xpra _proxy ":0";elif which "xpra" > /dev/null 2>&1; then xpra _proxy ":0";elif [ -x /usr/local/bin/xpra ]; then /usr/local/bin/xpra _proxy ":0";elif [ -x ~/.xpra/run-xpra ]; then ~/.xpra/run-xpra _proxy ":0";else echo "no run-xpra command found"; exit 1; fi
29459 Thu Nov 15 01:29:55 2018 /usr/bin/python /usr/bin/xpra _proxy :0
29674 Tue Nov 13 12:25:02 2018 /usr/bin/python /usr/bin/xpra attach :999 --systemd-run=no
30353 Wed Nov 14 23:53:38 2018 sh -c xpra initenv;if [ -x $XDG_RUNTIME_DIR/xpra/run-xpra ]; then $XDG_RUNTIME_DIR/xpra/run-xpra _proxy_start "--start=gnome-terminal" "--speaker=off" "--opengl=no" "--webcam=no";elif which "xpra" > /dev/null 2>&1; then xpra _proxy_start "--start=gnome-terminal" "--speaker=off" "--opengl=no" "--webcam=no";elif [ -x /usr/local/bin/xpra ]; then /usr/local/bin/xpra _proxy_start "--start=gnome-terminal" "--speaker=off" "--opengl=no" "--webcam=no";elif [ -x ~/.xpra/run-xpra ]; then ~/.xpra/run-xpra _proxy_start "--start=gnome-terminal" "--speaker=off" "--opengl=no" "--webcam=no";else echo "no run-xpra command found"; exit 1; fi
30370 Wed Nov 14 23:53:39 2018 /usr/bin/python /usr/bin/xpra _proxy_start --start=gnome-terminal --speaker=off --opengl=no --webcam=no
30406 Wed Nov 14 23:53:40 2018 /usr/bin/python /usr/bin/xpra start --start=gnome-terminal --speaker=off --opengl=no --env=XPRA_PROXY_START_UUID=8e5834378f9b4c04b6409fdf453829c1 --daemon=yes --systemd-run=no --displayfd=4
30464 Wed Nov 14 23:53:40 2018 pulseaudio --start -n --daemonize=false --system=false --exit-idle-time=-1 --load=module-suspend-on-idle --load=module-null-sink sink_name="Xpra-Speaker" sink_properties=device.description="Xpra\ Speaker" --load=module-null-sink sink_name="Xpra-Microphone" sink_properties=device.description="Xpra\ Microphone" --load=module-native-protocol-unix socket=/run/user/1000/xpra/pulse-1/pulse/native --load=module-dbus-protocol --load=module-x11-publish --log-level=2 --log-target=stderr
30675 Thu Nov 15 01:31:07 2018 sh -c xpra initenv;if [ -x $XDG_RUNTIME_DIR/xpra/run-xpra ]; then $XDG_RUNTIME_DIR/xpra/run-xpra _proxy ":0";elif which "xpra" > /dev/null 2>&1; then xpra _proxy ":0";elif [ -x /usr/local/bin/xpra ]; then /usr/local/bin/xpra _proxy ":0";elif [ -x ~/.xpra/run-xpra ]; then ~/.xpra/run-xpra _proxy ":0";else echo "no run-xpra command found"; exit 1; fi
30705 Thu Nov 15 01:31:08 2018 /usr/bin/python /usr/bin/xpra _proxy :0
$ xpra list
No xpra sessions found

Do I / can I get anything from them, or should I just kill them?

Last edited 6 months ago by stdedos (previous) (diff)

comment:13 Changed 6 months ago by Antoine Martin

We want to see the server log file(s) which should contain either the clean closing statements as per comment:10, or an error during cleanup, or maybe your sessions just got cleaned too quickly as per comment:8 when they were still live.

comment:14 Changed 4 months ago by Antoine Martin

Resolution: needinfo
Status: newclosed

Not heard back, closing.

Note: See TracTickets for help on using tickets.