Xpra-org / xpra

Persistent remote applications for X11; screen sharing for X11, MacOS and MSWindows.
https://xpra.org/
GNU General Public License v2.0
1.91k stars 164 forks source link

winswitch xpra package for debian: missing dependency python3-rencode #3427

Closed mviereck closed 2 years ago

mviereck commented 2 years ago

I have installed xpra v4.4-r30818 (gc7abc26db) from winswitch stable repository in a docker container based on Debian bullseye.

The connection between xpra server and client broke:

  Last lines of xpra server log:
(Xpra:66): Gtk-CRITICAL **: 18:00:10.451: gtk_widget_realize: assertion 'widget->priv->anchored || GTK_IS_INVISIBLE (widget)' failed
2022-01-12 18:00:10,502 xpra is ready.
2022-01-12 18:00:10,503 xpra X11 seamless version 4.3.1-r0 64-bit
2022-01-12 18:00:10,503  uid=1000, gid=1000
2022-01-12 18:00:10,503  running with pid 66 on Linux unknown unknown unknown
2022-01-12 18:00:10,504  connected to X11 display :211 with 24 bit colors
2022-01-12 18:00:12,545 New unix-domain connection received
2022-01-12 18:00:12,545  on '/home/lauscher/.cache/x11docker/x11docker-check-10403640584/share/debianlaptop-211'
2022-01-12 18:00:12,548 Disconnecting client /home/lauscher/.cache/x11docker/x11docker-check-10403640584/share/debianlaptop-211:
2022-01-12 18:00:12,548  invalid packet encoding: rencode decoder is not available
---------------------------------
  Last lines of xpra client log:
2022-01-12 19:00:12,333 OpenGL enabled with NVA5
2022-01-12 19:00:12,513  keyboard settings: rules=evdev, model=a4techKB21, layout=de
2022-01-12 19:00:12,519  desktop size is 1600x900:
2022-01-12 19:00:12,520   :0.0 (423x238 mm - DPI: 96x96) workarea: 1563x864  at   37x36  
2022-01-12 19:00:12,520     LEN LVDS-1       (344x193 mm - DPI: 118x118)
2022-01-12 19:00:12,550 Error: failed to connect
2022-01-12 19:00:12,550  received uninterpretable nonsense: 'invalid packet header byte: 0x646973636f6e6e65'
2022-01-12 19:00:12,550  b'disconnect: invalid packet encoding: rencode decoder is not available\n' (70 bytes)
2022-01-12 19:00:12,551  data: 'disconnect: invalid packet encoding: rencode decoder is not available'
2022-01-12 19:00:12,581 removing unix domain socket '/run/user/1000/xpra/clients/debianlaptop-242008'

The key was:

2022-01-12 18:00:12,548  invalid packet encoding: rencode decoder is not available

Installing python3-rencode fixed the issue. It should be added to the dependencies.

totaam commented 2 years ago

I have installed xpra v4.4-r30818 (gc7abc26db) from winswitch stable repository

There is no 4.4 in the stable repo - I have just checked. You must be using beta. BTW, you should use xpra as repository URL, not winswitch.

We've added a builtin rencodeplus: 592f27ad1a4283c6ca37bcc5abfa1db7e92eb027 And I can connect just fine without having python3-rencode installed, that's why it is no longer a hard dependency: bb867cddde5e284658fa45fcc1b7aa895fb84997

Please specify the command lines that reproduce the problem. Perhaps you're mixing versions between client and server?

mviereck commented 2 years ago

There is no 4.4 in the stable repo - I have just checked. Perhaps you're mixing versions between client and server?

Indeed, sorry! I thought I had same server and client installed. The setup is:

Please specify the command lines that reproduce the problem.

xpra server command:

env XAUTHORITY=/home/lauscher/.cache/x11docker/x11docker-check-66304670032/share/Xauthority.client \
  GDK_BACKEND=x11 \
  NO_AT_BRIDGE=1 \
  XPRA_EXPORT_ICON_DATA=0 \
  XPRA_EXPORT_XDG_MENU_DATA=0 \
  XPRA_ICON_OVERLAY=0 \
  XPRA_MENU_ICONS=0 \
  XPRA_UINPUT=0 \
  XPRA_XDG_EXPORT_ICONS=0 \
  XPRA_XDG_LOAD_GLOB=0 \
   xpra start :112 --use-display \
  --csc-modules=none \
  --encodings=rgb \
  --microphone=no \
  --mmap=/home/lauscher/.cache/x11docker/x11docker-check-66304670032/share/xpra.mmap \
  --notifications=no \
  --pulseaudio=no \
  --socket-dirs=/home/lauscher/.cache/x11docker/x11docker-check-66304670032/share \
  --speaker=no \
  --start-via-proxy=no \
  --webcam=no \
  --xsettings=no \
  --clipboard=yes\
  --dbus-launch= \
  --dbus-proxy=no \
  --daemon=no \
  --fake-xinerama=no \
  --file-transfer=off \
  --html=off \
  --opengl=noprobe \
  --mdns=no \
  --printing=no \
  --session-name=x11docker-check \
  --start-new-commands=no \
  --systemd-run=no \
  --video-encoders=none \
  --dpi=96 \
  --bind=/home/lauscher/.cache/x11docker/x11docker-check-66304670032/share/debianlaptop-112

xpra client command:

env DISPLAY=:0.0 XAUTHORITY=/home/lauscher/.cache/x11docker/x11docker-check-66304670032/Xauthority.host.0-0 XSOCKET=/tmp/.X11-unix/X0 XDG_RUNTIME_DIR=/run/user/1000 \
  NO_AT_BRIDGE=1 \
  XPRA_EXPORT_ICON_DATA=0 \
  XPRA_EXPORT_XDG_MENU_DATA=0 \
  XPRA_ICON_OVERLAY=0 \
  XPRA_MENU_ICONS=0 \
  XPRA_UINPUT=0 \
  XPRA_XDG_EXPORT_ICONS=0 \
  XPRA_XDG_LOAD_GLOB=0 \
   xpra attach :112 \
  --csc-modules=none \
  --encodings=rgb \
  --microphone=no \
  --mmap=/home/lauscher/.cache/x11docker/x11docker-check-66304670032/share/xpra.mmap \
  --notifications=no \
  --pulseaudio=no \
  --socket-dirs=/home/lauscher/.cache/x11docker/x11docker-check-66304670032/share \
  --speaker=no \
  --start-via-proxy=no \
  --webcam=no \
  --xsettings=no \
  --clipboard=no \
  --compress=0 \
  --modal-windows=no \
  --opengl=auto \
  --quality=100 \
  --reconnect=no \
  --video-decoders=none

xpra server log:

Warning: XDG_RUNTIME_DIR is not defined
 and '/run/user/1000' does not exist
 using '/tmp'
2022-01-13 09:31:50,267 Error: cannot enable SSH socket upgrades:
2022-01-13 09:31:50,267  No module named 'paramiko'
2022-01-13 09:31:51,087 pointer device emulation using XTest
2022-01-13 09:31:51,091 wrote pid 88 to '/tmp/xpra/112/server.pid'
2022-01-13 09:31:51,130 Warning: socket directory '/home/lauscher/.cache/x11docker/x11docker-check-66304670032/share'
2022-01-13 09:31:51,130  expected permissions 0o700 but found 0o755
2022-01-13 09:31:51,131 created unix domain socket '/home/lauscher/.cache/x11docker/x11docker-check-66304670032/share/debianlaptop-112'
2022-01-13 09:31:51,132 xvfb pid not found
2022-01-13 09:31:51,232 Error setting up server dbus instance:
2022-01-13 09:31:51,232  No module named 'dbus'
2022-01-13 09:31:51,257 7.7GB of system memory

(Xpra:88): Gtk-CRITICAL **: 09:31:51.439: gtk_widget_realize: assertion 'widget->priv->anchored || GTK_IS_INVISIBLE (widget)' failed
2022-01-13 09:31:51,481 xpra is ready.
2022-01-13 09:31:51,485 xpra X11 seamless version 4.3.1-r0 64-bit
2022-01-13 09:31:51,485  uid=1000, gid=1000
2022-01-13 09:31:51,485  running with pid 88 on Linux unknown unknown unknown
2022-01-13 09:31:51,486  connected to X11 display :112 with 24 bit colors
2022-01-13 09:31:53,620 New unix-domain connection received
2022-01-13 09:31:53,621  on '/home/lauscher/.cache/x11docker/x11docker-check-66304670032/share/debianlaptop-112'
2022-01-13 09:31:53,623 Disconnecting client /home/lauscher/.cache/x11docker/x11docker-check-66304670032/share/debianlaptop-112:
2022-01-13 09:31:53,623  invalid packet encoding: rencode decoder is not available

xpra client log:

2022-01-13 10:31:52,118 Xpra GTK3 X11 client version 4.4-r30818 (gc7abc26db) 64-bit
2022-01-13 10:31:52,209  running on Linux Debian 11 bullseye
2022-01-13 10:31:52,211  window manager is 'Xfwm4'
2022-01-13 10:31:52,451 created unix domain socket '/run/user/1000/xpra/clients/debianlaptop-28103'
2022-01-13 10:31:52,623 No OpenGL_accelerate module loaded: No module named 'OpenGL_accelerate'
2022-01-13 10:31:53,391 OpenGL enabled with NVA5
2022-01-13 10:31:53,586  keyboard settings: rules=evdev, model=a4techKB21, layout=de
2022-01-13 10:31:53,601  desktop size is 1600x900:
2022-01-13 10:31:53,602   :0.0 (423x238 mm - DPI: 96x96) workarea: 1563x864  at   37x36  
2022-01-13 10:31:53,602     LEN LVDS-1       (344x193 mm - DPI: 118x118)
2022-01-13 10:31:53,625 Error: failed to connect
2022-01-13 10:31:53,625  received uninterpretable nonsense: 'invalid packet header byte: 0x646973636f6e6e65'
2022-01-13 10:31:53,625  b'disconnect: invalid packet encoding: rencode decoder is not available\n' (70 bytes)
2022-01-13 10:31:53,625  data: 'disconnect: invalid packet encoding: rencode decoder is not available'
2022-01-13 10:31:53,667 removing unix domain socket '/run/user/1000/xpra/clients/debianlaptop-28103'

BTW, you should use xpra as repository URL, not winswitch.

I'll change that, thank you for the hint.

totaam commented 2 years ago

-r0 looks wrong?

That's fine. It just means that there were 0 changes since that branch was created.
Sometimes there are last minute build or packaging fixes, so you may occasionally see rN in the stable repo. Beta builds from master count from the very beginning and are currently at r30839.


I've just tried it in a bullseye VM after removing python3-rencode and I can still connect just fine:

xpra start
sleep 2
xpra attach

What's happening is that your client installation has rencode installed and the server does not. Both have rencodeplus (builtin) but perhaps your package manager decided to keep the old config files in /etc/xpra/conf.d/, which would make it disabled.

That's what happened on my test system.
I've tried to find a reference on Debian packaging and how to tell it to install the config files that come with the package you install. You would think this should be the default and that it should be easy. But this is Debian... so no. It silently just skips them for whatever reason. Perhaps I had modified them in the past. Whatever, I gave up on it and just did:

apt-get purge xpra
apt-get install xpra

And then the configuration was correct.

mviereck commented 2 years ago

Thank you for investigating this!

I've tried to find a reference on Debian packaging and how to tell it to install the config files that come with the package you install. You would think this should be the default and that it should be easy. But this is Debian... so no. It silently just skips them for whatever reason.

Odd. Ok, good to know.

Maybe xpra could check which encoding both server and client do understand to avoid the issue.

totaam commented 2 years ago

Maybe xpra could check which encoding both server and client do understand to avoid the issue.

It does exactly that. But the configuration can override that, and it does when it is out of date.

totaam commented 2 years ago

Closing: installing without the recommended dependencies or with outdated configuration files leads to problems, but this is not something we should try to second guess.