Bug 4753

Summary: tl-xinit doesn't terminate on account of a dead X server
Product: ThinLinc Reporter: Pierre Ossman <ossman>
Component: VSM AgentAssignee: Pierre Ossman <ossman>
Status: CLOSED FIXED    
Severity: Normal CC: aleta, hean01, samuel
Priority: P2 Keywords: aleta_tester, relnotes
Version: trunk   
Target Milestone: 4.11.0   
Hardware: PC   
OS: Unknown   
Acceptance Criteria:

Description Pierre Ossman cendio 2013-07-15 13:46:16 CEST
Although the comment in the code states otherwise, tl-xinit will not terminate a session because just the X server dies. It will wait until the client is also dead.

Although the client almost always terminates when the X server goes away, this isn't always the case. So we should make sure a missing Xvnc is also sufficient.


One note though is that we probably want to run xlogout.d in this scenario as well. Unfortunately we have no way of forcing this to happen, but we could at least give it a few seconds and hope it runs.
Comment 1 Pierre Ossman cendio 2018-03-06 14:04:27 CET
A lot of work was done on tl-xinit on bug 5696, but unfortunately this issue still remains. Tested with the current nightly build and 'bash -c "sleep 1000"' as the session command.
Comment 2 Pierre Ossman cendio 2019-11-20 09:36:57 CET
*** Bug 5999 has been marked as a duplicate of this bug. ***
Comment 4 Pierre Ossman cendio 2019-11-22 15:33:37 CET
For reference, this bug was introduced in r21424 as part of bug 357.
Comment 6 Pierre Ossman cendio 2019-11-22 16:11:24 CET
Fixed now.

Make sure to test both X server terminating first, and client terminating first.

Bonus points for testing with the other ignoring SIGTERM as well.
Comment 8 Alex Tanskanen cendio 2019-11-27 16:10:52 CET
To test that it's fixed, I started a client. In the client, I paused a process (e.g, "gnome-session-binary") and from the server I terminated Xvnc and verified that no other processes from the client was running in the background.

Another check I did was to paused Xvnc from the client. From the server I terminated gnome that was running on the client and checked that it did indeed close the client without having client processes in the background.

To make sure that this fix didn't break anything, I terminated the session in different ways and verified that the session was terminated. I did the following tests: 

  1) Terminate session by logging out normally
  2) Set the -MaxDisconnectionTime 60 and with until client got disconnected
  3) Terminate client from tlwebadmin interface
  4) Terminate Xvnc from server
  5) Selecting "End existing session" from the tl client