Subject: Bug#708: x2gosqlitewrapper.pl reports "unable to open database" on session-resume, while the database is there.

From: "Zuck, Daniel" <[email-masked]>
Date: Fri, 19 Dec 2014 10:14:13 +0000

Package: x2goserver
Version: 4.0.1.15

Hello

The environment ist:
x2goagent: 3.5.0.27
x2goserver: 4.0.1.15
x2goserver-compat: 4.0.1.15
x2goserver-extensions: 4.0.1.15
x2goserver-fmbindings: 4.0.1.15
x2goserver-printing: 4.0.1.15
x2goserver-pyhoca: 4.0.1.15
x2goserver-xsession: 4.0.1.15
running on SLES11SP3. We have several servers running X2go, where at two systems a session resume raises an error since the same day:

DBD::SQLite::st execute failed: unable to open database file at /usr/lib/x2go/x2gosqlitewrapper.pl line 320.
syslog: invalid level/facility: error at /usr/lib/x2go/x2gosqlitewrapper.pl line 323

The message is shown by the X2Go-Client on a reconnect, right before the "session-status-info-window" becomes visible. Now at the GUI "Suspend Session" (in German: Anhalten) is selected, after this a reconnect to the session to resume. On clicking "Suspend Session", the error message is shown again. Then the session is selected and "klicked", which results in a "normal" resume of the session, and the remote GUI becomes visible.

The Syslog however has entries which read like the session is suspended/resumed correctly without any issues:

Dec 19 10:15:35 mxxxxxxxxx02 /usr/bin/x2gosuspend-session: session with ID XYZAB-76-1417681012_stDGNOME_dp32 has been suspended successfully
Dec 19 10:16:30 mxxxxxxxxx02 /usr/bin/x2gosuspend-session: session with ID XYZAB-76-1417681012_stDGNOME_dp32 has been suspended successfully
Dec 19 10:16:39 mxxxxxxxxx02 /usr/bin/x2goresume-session: client 10.43.142.67 has successfully resumed session with ID XYZAB-76-1417681012_stDGNOME_dp32
Dec 19 10:16:49 mxxxxxxxxx02 /usr/bin/x2gosetkeyboard: Setting X keyboard according to /home/XYZAB/.x2go/C-XYZAB-76-1417681012_stDGNOME_dp32/keyboard

Investigating further: When calling "x2golistsessions_root", the script lists a number of states, including the error-message above. So it appears to me, there is a consistency issue with the SQLite-DB. I strongly assume, it can be worked-around by recreating the DB, but I would like to sort out the reason, why it came to this status.

My questions:
Is this issue known? - I did not find anything like this at the bugtracker.
What information is needed for further investigations? - The system is still in this state, so we can pull further infos.

Regards

Daniel Zuck

SIX
DGI-OIE
Hardturmstrasse 201
Postfach
8021 Zürich

T +41 58 399 23 56 

http://www.six-group.com
mailto:[email-masked]

The content of this e-mail is intended only for the confidential use of the person addressed. 
If you are not the intended recipient, please notify the sender and delete this email immediately.
Thank you.

---

From: Mike Gabriel <[email-masked]>
Date: Fri, 19 Dec 2014 13:07:58 +0000

HI Daniel,

On  Fr 19 Dez 2014 11:14:13 CET, Zuck, Daniel wrote:

> running on SLES11SP3. We have several servers running X2go, where at  
> two systems a session resume raises an error since the same day:
>
> DBD::SQLite::st execute failed: unable to open database file at  
> /usr/lib/x2go/x2gosqlitewrapper.pl line 320.
> syslog: invalid level/facility: error at  
> /usr/lib/x2go/x2gosqlitewrapper.pl line 323
>
> The message is shown by the X2Go-Client on a reconnect, right before  
> the "session-status-info-window" becomes visible. Now at the GUI  
> "Suspend Session" (in German: Anhalten) is selected, after this a  
> reconnect to the session to resume. On clicking "Suspend Session",  
> the error message is shown again. Then the session is selected and  
> "klicked", which results in a "normal" resume of the session, and  
> the remote GUI becomes visible.
>
> The Syslog however has entries which read like the session is  
> suspended/resumed correctly without any issues:
>
> Dec 19 10:15:35 mxxxxxxxxx02 /usr/bin/x2gosuspend-session: session  
> with ID XYZAB-76-1417681012_stDGNOME_dp32 has been suspended  
> successfully
> Dec 19 10:16:30 mxxxxxxxxx02 /usr/bin/x2gosuspend-session: session  
> with ID XYZAB-76-1417681012_stDGNOME_dp32 has been suspended  
> successfully
> Dec 19 10:16:39 mxxxxxxxxx02 /usr/bin/x2goresume-session: client  
> 10.43.142.67 has successfully resumed session with ID  
> XYZAB-76-1417681012_stDGNOME_dp32
> Dec 19 10:16:49 mxxxxxxxxx02 /usr/bin/x2gosetkeyboard: Setting X  
> keyboard according to  
> /home/XYZAB/.x2go/C-XYZAB-76-1417681012_stDGNOME_dp32/keyboard
>
> Investigating further: When calling "x2golistsessions_root", the  
> script lists a number of states, including the error-message above.  
> So it appears to me, there is a consistency issue with the  
> SQLite-DB. I strongly assume, it can be worked-around by recreating  
> the DB, but I would like to sort out the reason, why it came to this  
> status.
>
> My questions:
> What information is needed for further investigations? - The system  
> is still in this state, so we can pull further infos.

This is indeed a weird issue.

First thing: please note that shortly the X2Go upstream team will  
provide a new source for SLES packages. The x2goserver version you are  
using is a little outdated already.

What makes me worry a bit is this message:

"""
syslog: invalid level/facility: error at  
/usr/lib/x2go/x2gosqlitewrapper.pl line 323
"""

I am not sure what perl-Syslog package version is shipped with SLES  
11.3, but it seems it cannot handle the "error" logging facility. This  
is weird in the first place and maybe you can investigate your system  
a bit more on this. (What version of perl-Syslog is installed, etc.)

Next question is: what file permissions are set on

   /var/lib/x2go/x2go_sessions
   /usr/<lib>/x2go/x2gosqlitewrapper

Next question:

   getent passwd x2gouser
   getent group x2gouser

Once you have provided those infos, you can consider running:

   sudo rm /var/lib/x2go/x2go_sessions
   sudo x2godbadmin --createdb

... and test again...

Mike

-- 

DAS-NETZWERKTEAM
mike gabriel, herweg 7, 24357 fleckeby
fon: +49 (1520) 1976 148

GnuPG Key ID 0x25771B31
mail: [email-masked], http://das-netzwerkteam.de

freeBusy:
https://mail.das-netzwerkteam.de/freebusy/m.gabriel%40das-netzwerkteam.de.xfb

---

From: "Zuck, Daniel" <[email-masked]>
Date: Fri, 19 Dec 2014 17:06:18 +0000

Hello Mike

Thanks for your quick feedback.

In a nutshell: I was as well assuming, that a hard fix would be at the end "x2godbadmin --createdb" - however, it would be good to trace the reason why it came to there. Related the Perl modules on SLES, I am not 100% sure, as I am not a "Perl guy", and resolved dependencies if they have been specifically raised via " "make_path" is not exported by the File::Path module" (see http://wiki.x2go.org/doku.php/doc:installation:x2goserver), which was causing me to lift the version of this module (the SLES provided version was too old, so this issue was sorted after the upgrade; same for the RHEL install as described on the Wiki).

In more details:

>First thing: please note that shortly the X2Go upstream team will provide a new source for SLES packages. The x2goserver version you are using is a >little outdated already.

The version is "backported" from OpenSuSE RPM spec's, satisfying the dependencies on SLES. Notably dependencies included to upgrade some of the SLES-provided Perl modules.

>I am not sure what perl-Syslog package version is shipped with SLES 11.3, but it seems it cannot handle the "error" logging facility. This is weird in >the first place and maybe you can investigate your system a bit more on this. (What version of perl-Syslog is installed, etc.)

The version of Perl is 5.10.0-64.67.52, and there is no specific syslog installed besides the OS-Perl-package (there is a separate perl-Unix-Syslog from SuSE, where I do not know its specific use); it must be a subsequent fault of something else, because syslog and its facilities should be well known since a couple of "decades"...

As we have likely a corrupted DB-file, I would try to lift the version of Perl-DBI (maybe the SLES-version is a bit older and has some errors).

>   /usr/<lib>/x2go/x2gosqlitewrapper

ls -la /var/lib/x2go/x2go_sessions /usr/lib/x2go/x2gosqlitewrapper
-rwxr-sr-x 1 root x2gouser 11978 Nov  4 17:53 /usr/lib/x2go/x2gosqlitewrapper
-rw-rw---- 1 root x2gouser 25600 Dec 19 10:35 /var/lib/x2go/x2go_sessions

>   getent group x2gouser

getent passwd x2gouser
x2gouser:x:404:405:x2go server/user:/var/lib/x2go:/bin/false
getent group x2gouser
x2gouser:!:405:

After removing the DB-file and recreating a new one, I can connect without any error. As expected my "old" session was stale.
Note: This is the behavior where the system was working since a couple of weeks; the error was raised on two systems at a time. What made me a bit perplex is, that it was visible on two systems, since about the same time.

Regards
Daniel