Yesterday I updated my Gentoo system and today i figured out, that my vmware-server-console doesn’t start anymore. Great. It just aborts with a symbol lookup error:

/opt/vmware/server/console/lib/bin/vmware-server-console: symbol lookup error: /usr/lib/libgio-2.0.so.0: undefined symbol: g_thread_gettime

It looks like the old vmware-server-console doesn’t work with newer glib versions. Currently dev-libs/glib-2.18.4-r1 runs on my system. As far as I know the vmware-server-console is quite old and is marked as obsolete by vmware. But nevertheless on my Gentoo system it is still the stable version and I don’t like installing unstable software on productive servers. Also installing the latest Vmware Server 2 by myself doesn’t come into question, because I don’t want to care about security updates by myself. Therefore I have to find a working solution for the old vmware-server-console. After trying a bit, I spotted that

1
sudo vmware-server-console

works. Confusing, eh?

Now the questions is, what is the difference between running the vmware-server-console as superuser and as normal user? The answer is simple: environment variables change while calling sudo. Keeping this in mind, I found out, that the two environment variables GTK_RC_FILES and GTK2_RC_FILES are not set for root. Let’s try if this leads to the solution:

1
2
3
$ unset GTK_RC_FILES
$ unset GTK2_RC_FILES
$ vmware-server-console

Indeed! It Works!

Finally I made these changes permanent by adding the following lines to the beginning of /opt/vmware/server/console/bin/vmware-server-console (near line 13):

1
2
3
4
5
6
7
8
...
#!/bin/sh
# workaround for symbol lookup error:
GTK_RC_FILES_BACKUP=${GTK_RC_FILES}
GTK2_RC_FILES_BACKUP=${GTK2_RC_FILES}
unset GTK_RC_FILES
unset GTK2_RC_FILES
...

and this snippet to the end of the script to restore the environment variables (on my Gentoo system after line 186):

1
2
export GTK_RC_FILES=${GTK_RC_FILES_BACKUP}
export GTK2_RC_FILES=${GTK2_RC_FILES_BACKUP}

Cheers!