Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dead shadow session, but process is still alive #2099

Closed
totaam opened this issue Jan 7, 2019 · 10 comments
Closed

Dead shadow session, but process is still alive #2099

totaam opened this issue Jan 7, 2019 · 10 comments
Labels

Comments

@totaam
Copy link
Collaborator

totaam commented Jan 7, 2019

Issue migrated from trac ticket # 2099

component: server | priority: minor | resolution: needinfo

2019-01-07 15:28:37: stdedos created the issue


Xpra server:

$ lsb_release -rd
Description:	Ubuntu 16.04.5 LTS
Release:	16.04
$ xpra --version
xpra v2.5-[r21174](../commit/c7c5255f90f057b252742085724aa011b75bac86)

The machine hasn't been restarted in a month (or more!). Session has long been closed:

$ xpra list
Found the following xpra sessions:
/run/user/1000/xpra:
	LIVE session at :1
/run/xpra:
	LIVE session at :1
$ xpra stop :0
xpra initialization error:
 cannot find live server for display :0

However, I still have multiple xpra processes:

$ descendent_pids xpra
5551 5579 5629 7270 7304 10209 12534 12561 12599 12661 20683 20702 25932 25949 28464 28481 29139
systemd,1,1 splash
  └─sh,5551,5551 -c xpra initenv;if [ -x $XDG_RUNTIME_DIR/xpra/run-xpra ]; then $XDG_RUNTIME_DIR/xpra/run-xpra _shadow_start ":0" "--desktop-scaling=0.75" "--opengl=no";elif which "xpra" > /dev/null 2>&1; then xpra _shadow_start ":0" "--desktop-scaling=0.75" "--opengl=no";elif [ -x /usr/local/bin/xpra ]; then /usr/local/bin/xpra _shadow_start ":0" "--desktop-scaling=0.75" "--opengl=no";elif [ -x ~/.xpra/run-xpra ]; then ~/.xpra/run-xpra _shadow_start ":0" "--desktop-scaling=0.75" "--opengl=no";else echo "no run-xpra command found"; exit 1; fi
      └─python2,5579,5551 /usr/bin/xpra _shadow_start :0 --desktop-scaling=0.75 --opengl=no
          └─{python2},5982,5551
systemd,1,1 splash
  └─sh,5551,5551 -c xpra initenv;if [ -x $XDG_RUNTIME_DIR/xpra/run-xpra ]; then $XDG_RUNTIME_DIR/xpra/run-xpra _shadow_start ":0" "--desktop-scaling=0.75" "--opengl=no";elif which "xpra" > /dev/null 2>&1; then xpra _shadow_start ":0" "--desktop-scaling=0.75" "--opengl=no";elif [ -x /usr/local/bin/xpra ]; then /usr/local/bin/xpra _shadow_start ":0" "--desktop-scaling=0.75" "--opengl=no";elif [ -x ~/.xpra/run-xpra ]; then ~/.xpra/run-xpra _shadow_start ":0" "--desktop-scaling=0.75" "--opengl=no";else echo "no run-xpra command found"; exit 1; fi
      └─python2,5579,5551 /usr/bin/xpra _shadow_start :0 --desktop-scaling=0.75 --opengl=no
          └─{python2},5982,5551
systemd,1,1 splash
  └─xpra,5629,5628 /usr/bin/xpra shadow :0 --desktop-scaling=0.75 --exit-with-client=yes --opengl=no --env=XPRA_PROXY_START_UUID=ecce49eafb2e4d68bc00e0ee4b5432f4 --daemon=yes --systemd-run=no
      ├─{xpra},5988,5628
      ├─{xpra},5989,5628
      ├─{xpra},5991,5628
      ├─{xpra},5992,5628
      ├─{xpra},5994,5628
      ├─{xpra},5996,5628
      ├─{xpra},5997,5628
      ├─{xpra},5998,5628
      ├─{xpra},5999,5628
      ├─{xpra},6000,5628
      ├─{xpra},6001,5628
      ├─{xpra},6002,5628
      ├─{xpra},6003,5628
      ├─{xpra},6004,5628
      ├─{xpra},6005,5628
      ├─{xpra},6006,5628
      ├─{xpra},6007,5628
      ├─{xpra},6008,5628
      ├─{xpra},6009,5628
      ├─{xpra},6010,5628
      ├─{xpra},6011,5628
      ├─{xpra},6014,5628
      ├─{xpra},6015,5628
      ├─{xpra},6016,5628
      ├─{xpra},6017,5628
      ├─{xpra},6018,5628
      ├─{xpra},6019,5628
      ├─{xpra},6020,5628
      ├─{xpra},6021,5628
      └─{xpra},6045,5628
systemd,1,1 splash
  └─sh,7270,7270 -c xpra initenv;if [ -x $XDG_RUNTIME_DIR/xpra/run-xpra ]; then $XDG_RUNTIME_DIR/xpra/run-xpra _proxy ":1";elif which "xpra" > /dev/null 2>&1; then xpra _proxy ":1";elif [ -x /usr/local/bin/xpra ]; then /usr/local/bin/xpra _proxy ":1";elif [ -x ~/.xpra/run-xpra ]; then ~/.xpra/run-xpra _proxy ":1";else echo "no run-xpra command found"; exit 1; fi
      └─python2,7304,7270 /usr/bin/xpra _proxy :1
          └─{python2},7323,7270
systemd,1,1 splash
  └─sh,7270,7270 -c xpra initenv;if [ -x $XDG_RUNTIME_DIR/xpra/run-xpra ]; then $XDG_RUNTIME_DIR/xpra/run-xpra _proxy ":1";elif which "xpra" > /dev/null 2>&1; then xpra _proxy ":1";elif [ -x /usr/local/bin/xpra ]; then /usr/local/bin/xpra _proxy ":1";elif [ -x ~/.xpra/run-xpra ]; then ~/.xpra/run-xpra _proxy ":1";else echo "no run-xpra command found"; exit 1; fi
      └─python2,7304,7270 /usr/bin/xpra _proxy :1
          └─{python2},7323,7270
systemd,1,1 splash
  └─xpra,10209,10209 /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=
systemd,1,1 splash
  └─sh,12534,12534 -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" "--start-new-commands=yes" "--opengl=no" "--webcam=no";elif which "xpra" > /dev/null 2>&1; then xpra _proxy_start "--start=gnome-terminal" "--speaker=off" "--start-new-commands=yes" "--opengl=no" "--webcam=no";elif [ -x /usr/local/bin/xpra ]; then /usr/local/bin/xpra _proxy_start "--start=gnome-terminal" "--speaker=off" "--start-new-commands=yes" "--opengl=no" "--webcam=no";elif [ -x ~/.xpra/run-xpra ]; then ~/.xpra/run-xpra _proxy_start "--start=gnome-terminal" "--speaker=off" "--start-new-commands=yes" "--opengl=no" "--webcam=no";else echo "no run-xpra command found"; exit 1; fi
      └─python2,12561,12534 /usr/bin/xpra _proxy_start --start=gnome-terminal --speaker=off --start-new-commands=yes --opengl=no --webcam=no
          └─{python2},12808,12534
systemd,1,1 splash
  └─sh,12534,12534 -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" "--start-new-commands=yes" "--opengl=no" "--webcam=no";elif which "xpra" > /dev/null 2>&1; then xpra _proxy_start "--start=gnome-terminal" "--speaker=off" "--start-new-commands=yes" "--opengl=no" "--webcam=no";elif [ -x /usr/local/bin/xpra ]; then /usr/local/bin/xpra _proxy_start "--start=gnome-terminal" "--speaker=off" "--start-new-commands=yes" "--opengl=no" "--webcam=no";elif [ -x ~/.xpra/run-xpra ]; then ~/.xpra/run-xpra _proxy_start "--start=gnome-terminal" "--speaker=off" "--start-new-commands=yes" "--opengl=no" "--webcam=no";else echo "no run-xpra command found"; exit 1; fi
      └─python2,12561,12534 /usr/bin/xpra _proxy_start --start=gnome-terminal --speaker=off --start-new-commands=yes --opengl=no --webcam=no
          └─{python2},12808,12534
systemd,1,1 splash
  └─xpra,12599,12598 /usr/bin/xpra start --start=gnome-terminal --speaker=off --start-new-commands=yes --opengl=no --env=XPRA_PROXY_START_UUID=22ad4363ef7043589222ed4c5bf2e0bb --daemon=yes --systemd-run=no --displayfd=4
      ├─{xpra},7340,12598
      ├─Xvfb,12600,12600 +extension GLX +extension Composite -screen 0 5760x2560x24+32 -dpi 96 -nolisten tcp -noreset -auth /home/sntentos/.Xauthority -displayfd 5
      │   ├─{llvmpipe-0},12601,12600
      │   ├─{llvmpipe-1},12602,12600
      │   ├─{llvmpipe-2},12603,12600
      │   ├─{llvmpipe-3},12604,12600
      │   ├─{llvmpipe-4},12605,12600
      │   ├─{llvmpipe-5},12606,12600
      │   ├─{llvmpipe-6},12607,12600
      │   └─{llvmpipe-7},12608,12600
      ├─pulseaudio,12661,12598 --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
      │   ├─{null-sink},12665,12598
      │   └─{null-sink},12666,12598
      ├─{xpra},12814,12598
      ├─{xpra},12843,12598
      ├─{gmain},15864,12598
      ├─{gdbus},15865,12598
      ├─{xpra},20734,12598
      ├─{xpra},25998,12598
      ├─{xpra},28518,12598
      ├─{xpra},29253,12598
      ├─{xpra},29254,12598
      ├─{xpra},29256,12598
      └─{xpra},29257,12598
systemd,1,1 splash
  └─xpra,12599,12598 /usr/bin/xpra start --start=gnome-terminal --speaker=off --start-new-commands=yes --opengl=no --env=XPRA_PROXY_START_UUID=22ad4363ef7043589222ed4c5bf2e0bb --daemon=yes --systemd-run=no --displayfd=4
      └─pulseaudio,12661,12598 --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
          ├─{null-sink},12665,12598
          └─{null-sink},12666,12598
systemd,1,1 splash
  └─sh,20683,20683 -c xpra initenv;if [ -x $XDG_RUNTIME_DIR/xpra/run-xpra ]; then $XDG_RUNTIME_DIR/xpra/run-xpra _proxy ":1";elif which "xpra" > /dev/null 2>&1; then xpra _proxy ":1";elif [ -x /usr/local/bin/xpra ]; then /usr/local/bin/xpra _proxy ":1";elif [ -x ~/.xpra/run-xpra ]; then ~/.xpra/run-xpra _proxy ":1";else echo "no run-xpra command found"; exit 1; fi
      └─python2,20702,20683 /usr/bin/xpra _proxy :1
          └─{python2},20730,20683
systemd,1,1 splash
  └─sh,20683,20683 -c xpra initenv;if [ -x $XDG_RUNTIME_DIR/xpra/run-xpra ]; then $XDG_RUNTIME_DIR/xpra/run-xpra _proxy ":1";elif which "xpra" > /dev/null 2>&1; then xpra _proxy ":1";elif [ -x /usr/local/bin/xpra ]; then /usr/local/bin/xpra _proxy ":1";elif [ -x ~/.xpra/run-xpra ]; then ~/.xpra/run-xpra _proxy ":1";else echo "no run-xpra command found"; exit 1; fi
      └─python2,20702,20683 /usr/bin/xpra _proxy :1
          └─{python2},20730,20683
systemd,1,1 splash
  └─sh,25932,25932 -c xpra initenv;if [ -x $XDG_RUNTIME_DIR/xpra/run-xpra ]; then $XDG_RUNTIME_DIR/xpra/run-xpra _proxy ":1";elif which "xpra" > /dev/null 2>&1; then xpra _proxy ":1";elif [ -x /usr/local/bin/xpra ]; then /usr/local/bin/xpra _proxy ":1";elif [ -x ~/.xpra/run-xpra ]; then ~/.xpra/run-xpra _proxy ":1";else echo "no run-xpra command found"; exit 1; fi
      └─python2,25949,25932 /usr/bin/xpra _proxy :1
          └─{python2},25974,25932
systemd,1,1 splash
  └─sh,25932,25932 -c xpra initenv;if [ -x $XDG_RUNTIME_DIR/xpra/run-xpra ]; then $XDG_RUNTIME_DIR/xpra/run-xpra _proxy ":1";elif which "xpra" > /dev/null 2>&1; then xpra _proxy ":1";elif [ -x /usr/local/bin/xpra ]; then /usr/local/bin/xpra _proxy ":1";elif [ -x ~/.xpra/run-xpra ]; then ~/.xpra/run-xpra _proxy ":1";else echo "no run-xpra command found"; exit 1; fi
      └─python2,25949,25932 /usr/bin/xpra _proxy :1
          └─{python2},25974,25932
systemd,1,1 splash
  └─sh,28464,28464 -c xpra initenv;if [ -x $XDG_RUNTIME_DIR/xpra/run-xpra ]; then $XDG_RUNTIME_DIR/xpra/run-xpra _proxy ":1";elif which "xpra" > /dev/null 2>&1; then xpra _proxy ":1";elif [ -x /usr/local/bin/xpra ]; then /usr/local/bin/xpra _proxy ":1";elif [ -x ~/.xpra/run-xpra ]; then ~/.xpra/run-xpra _proxy ":1";else echo "no run-xpra command found"; exit 1; fi
      └─python2,28481,28464 /usr/bin/xpra _proxy :1
          └─{python2},28512,28464
systemd,1,1 splash
  └─sh,28464,28464 -c xpra initenv;if [ -x $XDG_RUNTIME_DIR/xpra/run-xpra ]; then $XDG_RUNTIME_DIR/xpra/run-xpra _proxy ":1";elif which "xpra" > /dev/null 2>&1; then xpra _proxy ":1";elif [ -x /usr/local/bin/xpra ]; then /usr/local/bin/xpra _proxy ":1";elif [ -x ~/.xpra/run-xpra ]; then ~/.xpra/run-xpra _proxy ":1";else echo "no run-xpra command found"; exit 1; fi
      └─python2,28481,28464 /usr/bin/xpra _proxy :1
          └─{python2},28512,28464
systemd,1,1 splash
  └─lightdm,1247,1247
      └─lightdm,5852,1247 --session-child 12 21
          └─upstart,5882,5882 --user
              └─gnome-terminal-,7247,5981
                  └─bash,15607,15607
                      └─xpra,29139,29139 /usr/bin/xpra attach :1
                          ├─{dconf worker},29200,29139
                          ├─{gmain},29201,29139
                          ├─{gdbus},29202,29139
                          ├─{xpra},29236,29139
                          ├─{xpra},29237,29139
                          ├─{xpra},29238,29139
                          ├─{xpra},29240,29139
                          └─{xpra},29258,29139

(Generated with:

descendent_pids() {
    pids=$(pgrep -f $1)
    echo $pids
    for pid in $pids; do
        pstree -achglnspU $pid
    done
}

)

I can outright kill them, that is no issue. However, do you worry about leaks? / Would you want to investigate?

@totaam
Copy link
Collaborator Author

totaam commented Jan 7, 2019

2019-01-07 15:35:04: stdedos commented


My initial purpose was:

I wanted to shutdown a simple session (xpra start gnome-terminal). The session is open around one month, so, I don't remember "if there is something else running". Is there a "smart" way to ask xpra, what does it "think" it is still running inside? Both window titles (if available) and processes.

I have seen the "raise windows" thing, but I am worried if somehow windows end up in a different desktop than the one I am looking at (be it windows or linux)

@totaam
Copy link
Collaborator Author

totaam commented Jan 19, 2019

2019-01-19 17:25:41: antoine changed owner from antoine to stdedos

@totaam
Copy link
Collaborator Author

totaam commented Jan 19, 2019

2019-01-19 17:25:41: antoine commented


Is there a "smart" way to ask xpra, what does it "think" it is still running inside? Both window titles (if available) and processes.

  • for windows, see xpra info | grep windows (those may have pid information if the application exposes it)
  • for processes, you can only get information on those that xpra started itself, see xpra info | grep commands

How do I reproduce this xpra process leak?

@totaam
Copy link
Collaborator Author

totaam commented Jan 19, 2019

2019-01-19 17:33:35: stdedos commented


Replying to [comment:2 Antoine Martin]:

How do I reproduce this xpra process leak?

I have no idea. This is a working station / server that has been up at least 2 months, and I have been trying to connect (multiple times) to the shadow session and a gnome-terminal. On said gnome-terminal I had started pidgin (which is how the bug was discovered). Along with all kinds of weirdeness like connection drop, quality / framerate issues, wifi-to-ethernet transitions back-and-forth etc.

I didn't expect that to happen, nor have I done anything "out of the ordinary". I might have changed connection settings, but that's about it. Sadly, I had to restart for kernel updates, so, the processes are lost.

I couldn't/cannot obviously give you access to the server. Regardless, any data collection and/or running from sources I would be willing to do, if that happens again. (Provided I can somehow solve the BitDefender issue).

@totaam
Copy link
Collaborator Author

totaam commented Jan 19, 2019

2019-01-19 17:35:28: antoine changed status from new to closed

@totaam
Copy link
Collaborator Author

totaam commented Jan 19, 2019

2019-01-19 17:35:28: antoine set resolution to needinfo

@totaam
Copy link
Collaborator Author

totaam commented Jan 19, 2019

2019-01-19 17:35:28: antoine commented


OK, thanks.

Let's close this for now and re-open if it happens again.

@totaam totaam closed this as completed Jan 19, 2019
@totaam
Copy link
Collaborator Author

totaam commented Feb 6, 2019

2019-02-06 10:33:22: stdedos commented


It happened again. I guess it's not funny anymore, considering output's size (check attachment).

@totaam
Copy link
Collaborator Author

totaam commented Feb 6, 2019

2019-02-06 10:33:40: stdedos uploaded file xpra_leaks.log (44.6 KiB)

@totaam
Copy link
Collaborator Author

totaam commented Feb 12, 2019

2019-02-12 07:53:28: stdedos commented


I will need to restart this week for kernel updates.

Kindly act in due time, or I will just shoot them where they stand

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant