X2Go Bug report logs - #888
x2gocleansessions suspends resuming sessions

version graph

Package: x2goserver; Maintainer for x2goserver is X2Go Developers <x2go-dev@lists.x2go.org>; Source for x2goserver is src:x2goserver.

Reported by: Florian Wicke - Hetzner Online AG <florian.wicke@hetzner.de>

Date: Thu, 18 Jun 2015 06:35:01 UTC

Severity: normal

Tags: pending

Found in version 4.1.0.0-0~1281~ubuntu14.04.1

Fixed in version 4.0.1.20

Done: X2Go Release Manager <git-admin@x2go.org>

Bug is archived. No further changes may be made.

Full log


🔗 View this message in rfc822 format

MIME-Version: 1.0
X-Mailer: MIME-tools 5.502 (Entity 5.502)
X-Loop: owner@bugs.x2go.org
From: owner@bugs.x2go.org (X2Go Bug Tracking System)
Subject: Bug#888 closed by X2Go Release Manager <git-admin@x2go.org> (X2Go
 issue (in src:x2goserver) has been marked as closed)
Message-ID: <handler.888.c.147965594819689.notifdone@bugs.x2go.org>
References: <20161120114259.3401C408B7@ymir.das-netzwerkteam.de>
X-X2go-PR-Keywords: pending
X-X2go-PR-Message: they-closed 888
X-X2go-PR-Package: x2goserver
X-X2go-PR-Source: x2goserver
Date: Sun, 20 Nov 2016 15:35:03 +0000
Content-Type: multipart/mixed; boundary="----------=_1479656103-20680-0"
[Message part 1 (text/plain, inline)]
This is an automatic notification regarding your Bug report
which was filed against the x2goserver package:

#888: x2gocleansessions suspends resuming sessions

It has been closed by X2Go Release Manager <git-admin@x2go.org>.

Their explanation is attached below along with your original report.
If this explanation is unsatisfactory and you have not received a
better one in a separate message then please contact X2Go Release Manager <git-admin@x2go.org> by
replying to this email.


-- 
X2Go Bug Tracking System
Contact owner@bugs.x2go.org with problems
[Message part 2 (message/rfc822, inline)]
From: X2Go Release Manager <git-admin@x2go.org>
To: 888-submitter@bugs.x2go.org
Cc: control@bugs.x2go.org, 888@bugs.x2go.org
Subject: X2Go issue (in src:x2goserver) has been marked as closed
Date: Sun, 20 Nov 2016 12:42:59 +0100 (CET)
close #888
thanks

Hello,

we are very hopeful that X2Go issue #888 reported by you
has been resolved in the new release (4.0.1.20) of the
X2Go source project »src:x2goserver«.

You can view the complete changelog entry of src:x2goserver (4.0.1.20)
below, and you can use the following link to view all the code changes
between this and the last release of src:x2goserver.

    http://code.x2go.org/gitweb?p=x2goserver.git;a=commitdiff;h=71e1e82d82acc718da71301d2fbd67eb0a71ad44;hp=8a494e794402c1b124d861893d649726a9016eb7

If you feel that the issue has not been resolved satisfyingly, feel
free to reopen this bug report or submit a follow-up report with
further observations described based on the new released version
of src:x2goserver.

Thanks a lot for contributing to X2Go!!!

light+love
X2Go Git Admin (on behalf of the sender of this mail)

---
X2Go Component: src:x2goserver
Version: 4.0.1.20-0x2go1
Status: RELEASE
Date: Sun, 20 Nov 2016 12:39:36 +0100
Fixes: 799 812 888 889 903 922 923 985 1065 1068 1073
Changes: 
 x2goserver (4.0.1.20-0x2go1) RELEASED; urgency=low
 .
   [ Mike DePaulo ]
   * New upstream version (4.0.1.20):
     - TERMINAL Session: Add support for qterminal
       (Lightweight terminal emulator written in Qt)
     - TRINITY: Add support for Q4OS
 .
   [ Mihai Moldovan ]
   * New upstream version (4.0.1.20):
     - x2goserver/bin/x2gogetapps: respect NoDisplay and Hidden values, don't
       parse the full desktop file if there are non-Desktop Entries groups.
       Based on a patch submitted by Jason Alavaliant. Fixes: #812.
     - x2goserver/bin/x2gogetapps: do not print spurious newlines.
     - Change string "X2go" to "X2Go" where appropriate.
     - Add runcommand.d hooks to x2goserver-extensions Makefile.
     - x2goserver/bin/x2gosessionlimit: don't iterate over the whole groups
       file. Only check the primary and secondary groups as returned by
       getgid()/getgroups(). Fixes long delays in session startup on machines
       with a gazillion of groups.
     - x2goserver/sbin/x2gocleansessions: re-fetch the current sessions' status
       before handling it. Using the "cached" value from the initial
       x2golistsessions run may be desynchronized with the actual current
       value. Avoids a race condition logging users out after they attached to a
       session.
     - x2goserver/sbin/x2gocleansessions: rename %remembered_sessions_since to
       %remembered_sessions_status_since. That's what it really is. Add
       comments to further clarify what it's actually doing. Change it to
       include a timestamp instead of the "iteration count multiplied by two"
       value. Compare timestamps to see if killing hanging nxagent processes is
       necessary.
     - x2goserver/sbin/x2gocleansessions: rename
       %remembered_sessions_status_since to
       %remembered_sessions_status_since_time. Add
       %remembered_sessions_status_since_iterations that will come in handy for
       the next change.
     - x2goserver/sbin/x2gocleansessions: give suspended-but-running sessions a
       grace period of one iteration. Fixes: #888.
     - x2goserver/sbin/x2gocleansessions: fix ugly missing whitespace.
     - x2goserver/sbin/x2gocleansessions: move up session status sync a bit,
       don't update session state when session has been removed from the
       database.
     - x2goserver/sbin/x2gocleansessions: unify log messages. Move dangling
       line around.
     - x2goserver/sbin/x2gocleansessions: whitespace only.
     - x2goserver/sbin/x2gocleansessions: also delete entries in the other,
       overlooked hashes.
     - x2goserver/sbin/x2gocleansessions: move socket and lock file cleanup
       into time-based block for finished/failed sessions.
     - x2goserver/sbin/x2gocleansessions: add @remembered_finished_sessions
       array. Merge with session list as queried from the database (won't
       include finished/failed sessions) and remember F-state sessions via this
       array. Only delete elements once work on these has been finished.
     - x2goserver/sbin/x2gocleansessions: don't add failed/finished sessions to
       remembered list if that list already includes them.
     - x2goserver/sbin/x2gocleansessions: don't use gmtime (time ()) but merely
       time (). The former one returns a formatted date-time string, which
       can't be checked by forming a difference. The latter one returns an UNIX
       timestamp, which is what we really want... minus leap seconds. Let's
       hope this doesn't bite back some time or later...
     - x2goserver/sbin/x2gocleansessions: add debugging output to show the
       state change when updating the cached state result.
     - x2goserver/sbin/x2gocleansessions: only output status refreshing debug
       message if the old and new states actually differ. Prevents log spam.
     - x2goserver/bin/x2gostartagent: changes to Robert Nowotny's SSH_PORT
       patch. Fixes: #922. Use default outgoing interface to determine IP
       address. Use the whole range of ${RANDOM}'s pool. Seed it for good
       measure. Change the default method to randomization instead of IP-based
       initialization. If IP-based initialization was requested but the default
       outgoing IP address unavailable, fall back to randomization.
     - x2goserver/bin/x2goruncommand: whitespace and comment changes only.
     - x2goserver/bin/x2gocleansessions: replace system_capture_stdout_output()
       with actual implementation. We don't have that function on the release
       branch.
     - x2goserver-xsession/etc/Xsession: use /bin/bash explicitly on RedHat-,
       Gentoo- and SuSE-based systems. Users might change /bin/sh to point to a
       shell like mksh or dash, which do not support the -l or -c flags to
       exec. C.f., BGO #575022 (Gentoo.)
     - x2goserver/bin/x2gomountdirs: remove blowfish Cipher spec hardcoded for
       sshfs mounts. The speed improvement is probably mostly an illusion
       (unless talking about high-bandwidth links) and more importantly recent
       OpenSSH server versions seem to disable the Blowfish cipher by default,
       leading to errors like "Connection reset by peer."
     - x2goserver/bin/x2goruncommand: whitespace only.
     - x2goserver/sbin/x2gocleansessions: add Perl documentation and --help,
       -h, -? and --man options. Fixes: #1065. Also print a usage message on
       unknown options.
     - x2goserver/man/man8/x2gocleansessions.8: drop obsolete man page.
     - x2goserver-xsession/etc/Xsession: fix uname calls when (potentially)
       creating session log/error file and add uname call where necessary.
     - x2goserver-xsession/etc/Xsession: include hostname in
       xsession-x2go-errors file name. Part of #923.
     - x2goserver-xsession/etc/Xsession: rotate old log/error file before
       appending new data. Fixes: #923.
     - x2goserver-xsession/etc/Xsession: fix wrong variable usage.
       Fixes: #1073.
     - x2goserver/sbin/x2gocleansessions: move in-file POD to end of file,
       rather than "commenting" out all the remaining code. Fixes: #1068.
     - x2goserver/sbin/x2godbadmin: exit earlier when not finding the required
       "x2gouser" user.
   * x2goserver.spec:
     - Add sudo and logcheck as BuildRequires and Requires. Don't own
       directories that are owned by sudo and logcheck. Logcheck is not
       available on *SUSE, FC < 20 and RHEL, so for those distros still own the
       directories.
     - Typo fix in comment: Recommands -> Recommends.
     - Fix installation on OpenSUSE 12.3 and higher: has replaced pwdutils with
       shadow. Also affects SLE{S,D} 12.
     - Add workaround documentation for sudoers on *SUSE 11.
     - Add shadow/shadow-utils/pwdutils Requires to x2goserver-printing
       sub package.
     - Add new dependency on bash.
     - Add new dependency on xkeyboard-config to x2goserver. Fixes: #903.
     - Add new dependency on perl and the Cwd module to x2goserver-xsession.
       Part of #923.
   * debian/control:
     - Add new dependency on bash.
     - Add new dependency on xkb-data to x2goserver.
     - Maintainer change in package: X2Go Developers <x2go-dev@lists.x2go.org>.
     - Uploaders: add myself. Also, force a rebuild due to the changed
       versioning.
     - Add new dependency on perl-modules for Cwd. Part of #923.
 .
   [ Henning Heinold ]
   * New upstream version (4.0.1.20):
     - x2goserver/sbin/x2godbadmin: remove trailing whitespace.
     - x2goserver/sbin/x2godbadmin: revoke all PRIVILEGES before trying to
       delete a user on postgres. Fixes: #889.
 .
   [ Mike Gabriel ]
   * debian/x2goserver.preinst:
     + Use proper comment header explaining about preinst script argument
       calls (not postinst).
 .
   [ Robert Nowotny ]
   * New upstream version (4.0.1.20):
     - x2goserver/bin/x2gostartagent: original patch for SSH_PORT
       randomization/IP-based initialization. Submitted as #922.
 .
   [ Stefan Baur ]
   * New upstream version (4.0.1.20):
     - x2goserver/bin/x2goruncommand: add the other trinity launcher scripts in
       order from newest to oldest. Fixes: #985.
 .
   [ Tor Perkins ]
   * New upstream version (4.0.1.20):
     - x2goserver/bin/x2goruncommand: capture x2goruncommand debug output for
       x2gofeature X2GO_XSESSION.
 .
   [ Orion Poplawski ]
   * New upstream version (4.0.1.20):
     - x2goserver/bin/x2golistdesktops: drop -u parameter to ss. Fixes: #799.
       We would filter out UDP sockets later anyway and the combination -lxu is
       known to be broken with some versions of iproute2.

[Message part 3 (message/rfc822, inline)]
From: Florian Wicke - Hetzner Online AG <florian.wicke@hetzner.de>
To: submit@bugs.x2go.org
Subject: x2gocleansessions suspends resuming sessions
Date: Thu, 18 Jun 2015 08:33:46 +0200
[Message part 4 (text/plain, inline)]
Package: x2goserver
Version: 4.1.0.0-0~1281~ubuntu14.04.1

Current workflow of x2gocleansessions:

- read the sessions from database
- loop over this session list
-> check state of session (S,R,...)
-> if state S (suspended) check if session is running
-> if the session that should be suspended in the datase is running then
suspend the session


Unfortunately this leads to the following problem:
If you have many sessions the time between generating the session list
from the database and the "is_running"-checks of sessions at the end of
the list is enough as time window that a user can log in via x2goclient
and getting logged out because x2gocleansessions suspends the now
running/resumed session.

Suggestions to fix:
Reread the state of the session from the database on each iteration of
the session-list-loop to minimize the timeframe between database read
and check execution and use counters like "the check has to be the same
result for the last three "sleep 2"-big-loop-runs of x2gocleansessions"
because the extra seconds don't matter in a valid case of unsuspended
sessions but matter a lot to fix this bug.




-- 
Kind regards

 Florian Wicke

Hetzner Online AG
Industriestr. 25
91710 Gunzenhausen / Germany
Tel: +49 9831 505-187
Fax: +49 9831 505-387
florian.wicke@hetzner.de
www.hetzner.com

Register Court: Registergericht Ansbach, HRB 3204
Management Board: Dipl. Ing. (FH) Martin Hetzner
Chairwoman of the Supervisory Board: Diana Rothhan

[signature.asc (application/pgp-signature, attachment)]

Send a report that this bug log contains spam.


X2Go Developers <owner@bugs.x2go.org>. Last modified: Wed Dec 4 08:35:07 2024; Machine Name: ymir.das-netzwerkteam.de

X2Go Bug tracking system

Debbugs is free software and licensed under the terms of the GNU Public License version 2. The current version can be obtained from https://bugs.debian.org/debbugs-source/.

Copyright © 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson, 2005-2017 Don Armstrong, and many other contributors.