Bug 57283 - При завершении xrdp-сессии она зависает
Summary: При завершении xrdp-сессии она зависает
Status: NEW
Alias: None
Product: Simply Linux
Classification: Distributions
Component: bugs (show other bugs)
Version: 11.0
Hardware: x86_64 Linux
: P5 normal
Assignee: Mikhail Efremov
QA Contact: Andrey Cherepanov
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2025-12-19 12:54 MSK by Vladimir Mokrozub
Modified: 2026-02-11 17:00 MSK (History)
2 users (show)

See Also:


Attachments
Рабочий вариант (2.53 KB, text/plain)
2026-02-11 16:34 MSK, rits
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Vladimir Mokrozub 2025-12-19 12:54:40 MSK
Если попытаться выйти из xrdp-сессии, экран становится черным и сессия зависает. Если закрыть окно, процессы пользователя остаются запущенными, и при повторном подключении этим же пользователем опять получаем черный экран.
Проверял в виртуальной машине, на физическом хосте возможности проверить нет.
Comment 1 Alexei V. Mezin 2025-12-19 13:15:41 MSK
После закрытия XFCE через "завершить сессию", на самом деле остаются запущенными куча процессов

● session-1159.scope - Session 1159 of User alexei
     Loaded: loaded (/run/systemd/transient/session-1159.scope; transient)
  Transient: yes
     Active: active (running) since Fri 2025-12-19 13:08:33 MSK; 4min 51s ago
 Invocation: 2a4d35dbfa2d42d2b0c33fe6df67ae0b
      Tasks: 43
     Memory: 204.5M (peak: 404.7M, swap: 8K, swap peak: 8K)
        CPU: 10.499s
     CGroup: /user.slice/user-1000.slice/session-1159.scope
             ├─2427445 xrdp-sesexec
             ├─2427471 Xorg :10 -auth .Xauthority -config xrdp/xorg.conf -noreset -nolisten tcp -logfile .xorgxrdp.%s.log
             ├─2427486 /bin/bash /etc/xrdp/startwm.sh
             ├─2427487 /usr/sbin/xrdp-chansrv
             ├─2427798 /usr/libexec/polkit-1/polkit-gnome-authentication-agent-1
             ├─2427801 /usr/bin/python3 /usr/bin/blueman-applet
             ├─2427804 /usr/lib64/xfce4/notifyd/xfce4-notifyd
             ├─2427807 /usr/bin/python3 /usr/share/system-config-printer/applet.py
             ├─2427810 nm-applet
             └─2427817 xfce4-screensaver
Comment 2 rits 2026-01-28 16:12:38 MSK
Тоже самое и у меня: Если попытаться выйти из xrdp-сессии, экран становится черным и сессия зависает. Если закрыть окно, процессы пользователя остаются запущенными, и при повторном подключении этим же пользователем опять получаем черный экран.

Проверено на SimplyLinux, Startkit_Xfce 
Установка с нуля и далее: (apt-get install xrdp && usermod -a -G tsusers,tsadmins myuser1 && systemctl enable xrdp && systemctl start xrdp  && systemctl status xrdp)
Вход нормальный, а при выходе зависание. Проверено на remmina и mstsc Windows.
После закрытия окна RDP терминала на сервере xrdp видим:
$ xrdp-sesadmin -c=list
Session ID: 1272
	Display: :10
	User: myuser1
	Session type: Xorg
	Screen size: 1920x1080, color depth 24
	Started: Wed Jan 28 16:06:09 2026
	Start IP address: 192.168.8.115
Comment 3 rits 2026-02-11 16:34:34 MSK
Created attachment 20689 [details]
Рабочий вариант
Comment 4 rits 2026-02-11 16:43:09 MSK
В файл  /etc/xrdp/startwm.sh добавили новую функцию:
get_xdg_session_startupcmd()
{
  # If DESKTOP_SESSION is set and valid then the STARTUP command will be taken from there
  # GDM exports environment variables XDG_CURRENT_DESKTOP and XDG_SESSION_DESKTOP.
  # This follows it.
  if [ -n "$1" ] && [ -d /usr/share/xsessions ] \
    && [ -f "/usr/share/xsessions/$1.desktop" ]; then
    STARTUP=$(grep ^Exec= "/usr/share/xsessions/$1.desktop")
    STARTUP=${STARTUP#Exec=*}
    XDG_CURRENT_DESKTOP=$(grep ^DesktopNames= "/usr/share/xsessions/$1.desktop")
    XDG_CURRENT_DESKTOP=${XDG_CURRENT_DESKTOP#DesktopNames=*}
    XDG_CURRENT_DESKTOP=${XDG_CURRENT_DESKTOP//;/:}
    export XDG_CURRENT_DESKTOP
    export XDG_SESSION_DESKTOP="$DESKTOP_SESSION"
  fi
}

Блок:
  # debian, alt
  if [ -r /etc/X11/Xsession ]; then
    pre_start
    . /etc/X11/Xsession
    post_start
    exit 0
  fi

заменили на:
# debian, alt
  if [ -r /etc/X11/Xsession ]; then
    pre_start

    # if you want to start preferred desktop environment,
    # add following line,
    #  [ -n "$XRDP_SESSION" ] && export DESKTOP_SESSION=<your preferred desktop>
    # in either of following file.
    # 1. ~/.profile
    # 2. create a file (any_filename.sh is OK) in /etc/profile.d
    # <your preferred desktop> shall be one of "ls -1 /usr/share/xsessions/|cut -d. -f1"
    # e.g.  [ -n "$XRDP_SESSION" ] && export DESKTOP_SESSION=ubuntu

    # Alternatively, set "PassShellAsEnv=DESKTOP_SESSION" in sesman.ini, which
    # lets the user specify the required session directly.

    # STARTUP is the default startup command.
    # if $1 is empty and STARTUP was not set
    # /etc/X11/Xsession.d/50x11-common_determine-startup will fallback to
    # x-session-manager
    if [ -z "$STARTUP" ] && [ -z "$DESKTOP_SESSION" ] && ! which wm-select >/dev/null 2>&1; then
      RUNWM=/usr/bin/runwm
      DESKTOP_SESSION="$($RUNWM default 2>/dev/null ||:)"
      [ -n "$DESKTOP_SESSION" ] || [ ! -d /usr/share/xsessions ] ||
        DESKTOP_SESSION="$(ls -1 /usr/share/xsessions | head -n 1 | cut -d. -f1)"
    fi
    if [ -z "$STARTUP" ] && [ -n "$DESKTOP_SESSION" ]; then
      get_xdg_session_startupcmd "$DESKTOP_SESSION"
    fi

    if [ -n "$STARTUP" ]; then
      . /etc/X11/Xsession "$STARTUP"
    else
       . /etc/X11/Xsession
    fi
    post_start
    exit 0
  fi

После чего получили некорректный выход. 
Если использовать старый файл то ошибка уходит тут, но может вылезти в других вариантах использования терминала.
Comment 5 rits 2026-02-11 17:00:47 MSK
Выход работает со старым файлом /etc/xrdp/startwm.sh, но в логе xrdp.service
пишет
фев 11 16:57:35 host-sl11 xrdp[9766]: [ERROR] Xorg server closed connection

Нужно искать ошибку в новом файле скрипта startwm.sh