Logo
IT Dienstleistungen

xcb_xlib_unlock: Assertion `c->xlib.lock

Some Java based applications (ex. Maple, Neverwinter Nights) did not work for me from openSuse 10.3 on (Did not test in 11.1 yet). They throw an console-exception about some xlib.lock:

java: xcb_xlib.c:52: xcb_xlib_unlock: Assertion `c->xlib.lock' failed. 

As quick „get it running“ work around you can hit this command in your running bash before the startup call of the program:

export LIBXCB_ALLOW_SLOPPY_LOCK=1

More solid sollution

The Bug-hunters pointed at a Java-bug in the static linked xinerama relationship. If a fixed JRE is not available, here is the permanent fix for that.

Search for the awt library with

locate xawt/libmawt.so

You need the findutil-locate package installed on opensuse, as it is non-standard in newer versions. Also remember to have run at updatedb if your installed program (jre, maple, etc) is newer than a few days

If this finally works, you shoudl get a list of the libawt.so files on your system. The following must be done with every file to work with the programs, as some programs bring their own jre-version in their install-directory:

sed -i 's/XINERAMA/FAKEEXTN/g' <YOUR_LIBAWT.SO_FILES_HERE>

like

sed -i 's/XINERAMA/FAKEEXTN/g' /usr/java/jdk1.6.0_03/jre/lib/i386/xawt/libmawt.so 

in my case. Oh ausführen (der Pfad zur Datei könnte natürlich auch anders lauten, bei mir ist es die Standardinstallation von Sun, keine distributionsspezifische Version). Bei mehreren Installation auch durchaus mit allen gefunden Dateien durchführen

Maple (ACHTUNG)

Bei Maple (und evtl auch anderen Programmen!!) gilt es zu beachten, daß diese eine eigene Javaversion mitbringen. Dort muss natürlich auch gepatcht werden. (Selbst in dem Fall, dass das Original-Java schon fehlerfrei läuft!)

Für meine Mapleinstallation unter /opt/maple11 lautet der Befehl

sed -i 's/XINERAMA/FAKEEXTN/g' /opt/maple11/jre.IBM_INTEL_LINUX/lib/i386/xawt/libmawt.so

Seiten-Werkzeuge