Well, here's the code producing that output:
typeset -i retry='0'
typeset -i max_retry='10'
typeset output=''
for ((retry = 0; retry < max_retry; ++retry)); do
typeset -i free_port="${X2GO_PORT}"
if free_port="$("${X2GO_LIB_PATH}/x2gogetfreeport"
"${current_host_name}" "${ss}" 'display' "${X2GO_PORT}")"; then
X2GO_PORT="${free_port}"
if [[ -n "${SHADREQ_USER}" ]]; then
SESSION_NAME="${SHADREQ_USER}-${X2GO_PORT}-$(date '+%s')"
else
SESSION_NAME="${USER}-${X2GO_PORT}-$(date '+%s')"
fi
if [[ -n "${COLORDEPTH}" ]]; then
SESSION_NAME="${SESSION_NAME}_st${SESSION_TYPE}${X2GO_CMD}_dp${COLORDEPTH}"
SESSION_NAME="${SESSION_NAME//:/PP}"
fi
# sanitize session name
SESSION_NAME="$(perl -pe 's/[^a-zA-Z0-9\.\_\-\@]//g'
<<< "${SESSION_NAME}")"
if [[ -n "${SHADREQ_USER}" ]]; then
"${X2GO_LIB_PATH}/x2gosyslog" "${0}" 'debug'
"initializing new shadow session with ID ${SESSION_NAME}"
output="$("${X2GO_LIB_PATH}/x2goinsertshadowsession" "${X2GO_PORT}"
"${current_host_name}" "${SESSION_NAME}" "${SHADREQ_USER}")"
else
"${X2GO_LIB_PATH}/x2gosyslog" "${0}" 'debug'
"initializing new session with ID ${SESSION_NAME}"
output="$("${X2GO_LIB_PATH}/x2goinsertsession"
"${X2GO_PORT}" "${current_host_name}" "${SESSION_NAME}")"
fi
if [[ "${output}" = 'inserted' ]]; then
break
else
"${X2GO_LIB_PATH}/x2gosyslog" "${0}" 'warning'
"unable to insert display port into database. Retrying (run $((retry +
1)))."
fi
else
"${X2GO_LIB_PATH}/x2gosyslog" "${0}" 'warning' "no
free display number available, cannot start new session. Retrying (run
$((retry + 1)))."
fi
done
if [[ "${output}" != 'inserted' ]]; then
typeset msg="Unable to find free display port or insert new
session into database; parameters: port (${X2GO_PORT}), hostname
(${current_host_name}) and session name (${SESSION_NAME})."
"${X2GO_LIB_PATH}/x2gosyslog" "${0}" 'err' "${msg}"
# Make x2goclient fail.
echo "${msg}" >&2
exit '10'
fi
This boils down to
for ((retry = 0; retry < max_retry; ++retry)); do
typeset -i free_port="${X2GO_PORT}"
if free_port="$("${X2GO_LIB_PATH}/x2gogetfreeport"
"${current_host_name}" "${ss}" 'display' "${X2GO_PORT}")"; then
...
else
"${X2GO_LIB_PATH}/x2gosyslog" "${0}" 'warning' "no
free display number available, cannot start new session. Retrying (run
$((retry + 1)))."
fi
done
-> as you can see x2gofreeport does not seem to report the port as
free. You can try this manually:
/usr/lib/x2go/x2gogetfreeport $(hostname) "$(which ss)" display 50
If that will output a free port x2go should generally work. If not,
you still have something running and blocking these ports. You can
check with lsof -i :6050 and you will see who is blocking the first
checked port.
You can also run the x2gogefreeport with bash -x:
bash -x /usr/lib/x2go/x2gogetfreeport $(hostname) "$(which ss)" display 50
and see what going on.
Hope that helps,
Uli
On Mon, Jan 25, 2021 at 8:50 PM Robert Kudyba <rkudyba@fordham.edu> wrote:
>
> I posted a similar issue back in Nov, 2020 at https://www.mail-archive.com/x2go-dev@lists.x2go.org/msg06284.html
>
> rpm -qa|grep -i x2go
> x2goclient-4.1.2.2-3.fc33.x86_64
> x2goserver-common-4.1.0.3-9.fc33.noarch
> perl-X2Go-Server-4.1.0.3-9.fc33.noarch
> perl-X2Go-Log-4.1.0.3-9.fc33.noarch
> perl-X2Go-Server-DB-4.1.0.3-9.fc33.x86_64
> x2goagent-4.1.0.3-9.fc33.x86_64
> x2goserver-xsession-4.1.0.3-9.fc33.noarch
> x2goserver-4.1.0.3-9.fc33.x86_64
>
> nxagent -display :55
> NXAGENT - Version 3.5.99.25
>
> Jan 25 14:14:29 pascal /usr/bin/x2gostartagent[39654]: no free display number available, cannot start new session. Retrying (run 1).
> Jan 25 14:14:30 pascal /usr/bin/x2gostartagent[39663]: no free display number available, cannot start new session. Retrying (run 2).
> Jan 25 14:14:30 pascal /usr/bin/x2gostartagent[39672]: no free display number available, cannot start new session. Retrying (run 3).
> Jan 25 14:14:30 pascal /usr/bin/x2gostartagent[39681]: no free display number available, cannot start new session. Retrying (run 4).
> Jan 25 14:14:30 pascal /usr/bin/x2gostartagent[39690]: no free display number available, cannot start new session. Retrying (run 5).
> Jan 25 14:14:30 pascal /usr/bin/x2gostartagent[39699]: no free display number available, cannot start new session. Retrying (run 6).
> Jan 25 14:14:30 pascal /usr/bin/x2gostartagent[39708]: no free display number available, cannot start new session. Retrying (run 7).
> Jan 25 14:14:30 pascal /usr/bin/x2gostartagent[39717]: no free display number available, cannot start new session. Retrying (run 8).
> Jan 25 14:14:31 pascal /usr/bin/x2gostartagent[39726]: no free display number available, cannot start new session. Retrying (run 9).
> Jan 25 14:14:31 pascal /usr/bin/x2gostartagent[39736]: no free display number available, cannot start new session. Retrying (run 10).
> Jan 25 14:14:31 pascal /usr/bin/x2gostartagent[39737]: Unable to find free display port or insert new session into database; parameters: port (50), hostname (pascal.dsm.fordham.edu) and session name ().
> Jan 25 14:14:31 pascal kernel: kauditd_printk_skb: 21 callbacks suppressed
>
> Let me to https://unix.stackexchange.com/questions/467507/x2go-unable-to-find-free-display-port-or-insert-new-session-into-database so I ran x2godbadmin --createdb
>
> Then I tried with another use and got:
> Connection failed.
> /usr/lib64/x2go/x2gocheckport: line 131: connect('dbname=/var/lib/x2go/x2go_sessions','',...): syntax error in expression (error token is "('dbname=/var/lib/x2go/x2go_sessions','',...)")
> /usr/lib64/x2go/x2gocheckport: line 131: connect('dbname=/var/lib/x2go/x2go_sessions','',...): syntax error in expression (error token is "('dbname=/var/lib/x2go/x2go_sessions','',...)")
> /usr/lib64/x2go/x2gocheckport: line 131: connect('dbname=/var/lib/x2go/x2go_sessions','',...): syntax error in expression (error token is "('dbname=/var/lib/x2go/x2go_sessions','',...)")
> /usr/lib64/x2go/x2gocheckport: line 131: connect('dbname=/var/lib/x2go/x2go_sessions','',...): syntax error in expression (error token is "('dbname=/var/lib/x2go/x2go_sessions','',...)")
> /usr/lib64/x2go/x2gocheckport: line 131: connect('dbname=/var/lib/x2go/x2go_sessions','',...): syntax error in expression (error token is "('dbname=/var/lib/x2go/x2go_sessions','',...)")
> /usr/lib64/x2go/x2gocheckport: line 131: connect('dbname=/var/lib/x2go/x2go_sessions','',...): syntax error in expression (error token is "('dbname=/var/lib/x2go/x2go_sessions','',...)")
> /usr/lib64/x2go/x2gocheckport: line 131: connect('dbname=/var/lib/x2go/x2go_sessions','',...): syntax error in expression (error token is "('dbname=/var/lib/x2go/x2go_sessions','',...)")
> /usr/lib64/x2go/x2gocheckport: line 131: connect('dbname=/var/lib/x2go/x2go_sessions','',...): syntax error in expression (error token is "('dbname=/var/lib/x2go/x2go_sessions','',...)")
> /usr/lib64/x2go/x2gocheckport: line 131: connect('dbname=/var/lib/x2go/x2go_sessions','',...): syntax error in expression (error token is "('dbname=/var/lib/x2go/x2go_sessions','',...)")
> /usr/lib64/x2go/x2gocheckport: line 131: connect('dbname=/var/lib/x2go/x2go_sessions','',...): syntax error in expression (error token is "('dbname=/var/lib/x2go/x2go_sessions','',...)")
> Unable to find free display port or insert new session into database; parameters: port (50), hostname (oudomain.edu) and session name ().
>
> How does one start X2Go Windows with debug enabled? I only found for Mac you can add the --debug flag.
>
> My colleague also had this error:
>
>
> XSession-x2go: X session started for moniot at Mon Jan 25 09:01:13 EST 2021
> ** Message: 09:01:15.605: couldn't access control socket: /run/user/1200/keyring/control: No such file or directory
> SSH_AUTH_SOCK=/run/user/1200/keyring/ssh
>
> ** (mate-settings-daemon:1436112): WARNING **: 09:01:16.172: Could not open RFKILL control device, please verify your installation
> SSH_AUTH_SOCK=/run/user/1200/keyring/ssh
> SSH_AUTH_SOCK=/run/user/1200/keyring/ssh
> vmware-user: could not open /proc/fs/vmblock/dev
> Error: /usr/bin/vmtoolsd must be run inside a virtual machine on a VMware hypervisor product.
> SSH_AUTH_SOCK=/run/user/1200/keyring/ssh
>
> (caja:1436133): Gtk-WARNING **: 09:01:17.552: Failed to register client: GDBus.Error:org.gnome.SessionManager.AlreadyRegistered: Unable to register client
> *** ERROR ***
> TI:09:01:17 TH:0x56299587f960 FI:gpm-manager.c FN:gpm_manager_systemd_inhibit,1786
> - Error in dbus - GDBus.Error:org.freedesktop.DBus.Error.AccessDenied: Permission denied
> Traceback:
> mate-power-manager(+0x1d474) [0x562995487474]
> mate-power-manager(+0x136ab) [0x56299547d6ab]
> /lib64/libgobject-2.0.so.0(g_type_create_instance+0x248) [0x7f04c0b72498]
> /lib64/libgobject-2.0.so.0(+0x19205) [0x7f04c0b58205]
> /lib64/libgobject-2.0.so.0(g_object_new_with_properties+0x1dd) [0x7f04c0b596ad]
> /lib64/libgobject-2.0.so.0(g_object_new+0xc1) [0x7f04c0b5a331]
> mate-power-manager(+0x15f16) [0x56299547ff16]
> mate-power-manager(+0xb20a) [0x56299547520a]
> /lib64/libc.so.6(__libc_start_main+0xf2) [0x7f04c0708082]
> mate-power-manager(+0xb58e) [0x56299547558e]
> Failure: Module initialization failed
> SELinux Troubleshooter: Applet requires SELinux be enabled to run
> Initializing caja-open-terminal extension
> Initializing caja-xattr-tags extension
> Initializing caja-image-converter extension
> ICE default IO error handler doing an exit(), pid = 1436318, errno = 32
>
> (mate-settings-daemon:1436112): GLib-GIO-WARNING **: 09:02:44.229: Error releasing name org.mate.SettingsDaemon.Rfkill: The connection is closed
> [1611583276,000,xklavier.c:xkl_engine_start_listen/] The backend does not require manual layout management - but it is provided by the application
>
>
>