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

domingo, 7 de octubre de 2007
Hace unos dias atrás formatié mi equipo ya que habia descargado openSUSE 10.3 x86_64 (64 bits) y procedi a instalarlo, hasta hoy todo perfecto, actualize el sistema, me reconoció todo mi hardware, veo nuevos módulos, un nuevo sistema de instalación de software que hace esa tarea un juego de niños, etc.

El problema fué cuando quize instalar el netbeans 5.5.1, cuando ejecuté por consola
./netbeans-5_5_1-linux.bin

me salio el siguiente error:
java: xcb_xlib.c:52: xcb_xlib_unlock: Assertion `c->xlib.lock' failed.

algo que en openSUSE 10.2 no habia visto, bueno, buscando en google me encuentro con esto donde basicamente dicen que, al parecer, hay un problema cuando java encuentra una extensión de xinerama.

Bueno, hasta ahí puros problemas, no puedo ejecutar nada hecho en java, que se puede hacer ? pues muy simple. Por default openSUSE trae una versión de java, la 1.5.0_12, como root hay que ejecutar el siguiente comando:
sed -i 's/XINERAMA/FAKEEXTN/g' /usr/lib64/jvm/java-1.5.0-sun-1.5.0_update12/jre/lib/amd64/xawt/libmawt.so

con eso ya estamos listos.

En mi caso instalé, además, el jdk 1.6.0 update 3 y si se quiere usar hay que hacer el mismo proceso, yo lo instale en /opt y el comando fue el siguiente:
sed -i 's/XINERAMA/FAKEEXTN/g' /opt/jdk1.6.0_03/jre/lib/amd64/xawt/libmawt.so

y listo, problema solucionado.

Si se fijan las versiones de java que estoy usando son para procesadores de 64 bits, en el caso de quienes tengan este problema con procesadores de 32 bits entonces tendrán que modificar el comando en dos partes, donde dice lib64 lo cambian por lib y donde dice amd64 lo cambian por i386.

De forma genérica el comando quedaria de esta forma, sirviendo para cualquier distro:
32 bits:
sed -i 's/XINERAMA/FAKEEXTN/g' /JRE_HOME/lib/i386/xawt/libmawt.so

64 bits:
sed -i 's/XINERAMA/FAKEEXTN/g' /JRE_HOME/lib/amd64/xawt/libmawt.so

en ambos casos deben modificar donde dice JRE_HOME por el directorio donde se encuentra la carpeta jre del java que estan configurando.

Espero les sirva, les dejo unas capturas para que vean que funciona, donde estoy corriendo JKiltro 3.0.2, Netbeans 5.5.1 y Netbeans 6.0.





saludos !!!

12 comentarios:

Anónimo dijo...

que tal! primero muchas gracias, me funciono a la perfeccion la informacion que diste aqui para hacer funcionar netbeans. ahora tengo otro problema, como puedo hacer para que firefox utilice el jre que viene con el jdk1.6.0_03? espero que me puedas ayudar, tengo instalado opensuse 10.3 tambien. gracias de antemano!

Daniel Morales Salas dijo...

hola !!, es muy simple, debes hacer un enlace simbolico del plugin de jre hacia la carpeta de plugins de mozilla, eso se hace asi:

ln -sf /opt/jdk1.6.0_03/jre/plugin/i386/ns7/libjavaplugin_oji.so /usr/lib/firefox/plugins/

y con eso ya está.

claro que ahi estoy suponiendo que tu jdk esta en el directorio /opt

saludos!!

Anónimo dijo...

Hola que tal, yo tengo ese mismo error, al instalr oracle 11g en suse10.3
java: xcb_xlib.c:52: xcb_xlib_unlock: Assertion `c->xlib.lock' failed.

Ya hice como lo indicaste.

pero aun asi me genra el error

ATT. Chago

Anónimo dijo...

Hola que tal, yo tengo ese mismo error, al instalr oracle 11g en suse10.3
java: xcb_xlib.c:52: xcb_xlib_unlock: Assertion `c->xlib.lock' failed.

Ya hice como lo indicaste.

pero aun asi me genra el error

ATT. Chago

Felipe Donoso dijo...

test

Felipe Donoso dijo...

perdon ... Mi nombre es Felipe Donoso soy administrador de base de datos en Neuronet ... mira el problema es muy simple de solucionar me gustaria explicar más en detalle pero estoy un poquito ocupado ...

tienes que ingresar el siguiente comando como root, como dice nuestro amigo anterior:

sed -i 's/XINERAMA/FAKEEXTN/g' /usr/lib/jvm/java-1.5.0-sun-1.5.0_update12/jre/lib/i386/xawt/libmawt.so

*sería bueno que hicieras un respaldo de ese archivo.

- luego lanza la instalación de Oracle con los siguientes parámetros:

. runInstaller -jreLoc /usr/lib/jvm/java-1.5.0-sun-1.5.0_update12/jre -ignoresysprereqs

- el segundo parámetro es para que te ignore los requisitos como el tipo de sistema operativo (en 11g no es necesario ponerlo, pero talvez 10g les va a reclamar), recordemos que Oracle está diseñado para sistemas certificados como RedHat o Suse (que es != de OPENSUSE)

- y eso sería todo para la instalación.

PD: cuando uses el dbca tendrás el mismo problema. Arreglalo con lo siguiente, como oracle:

sed -i 's/XINERAMA/FAKEEXTN/g' $ORACLE_HOME/jdk/jre/lib/i386/xawt/libmawt.so

y eso sería todo.
saludos.

Felipitux.
DBA y Adm. S.O.

Daniel Morales Salas dijo...

notable aporte felipe donoso, gracias, yo la verdad no sabia como solucionar lo de oracle ya que no lo tengo instalado, pero veo q la solucion es la misma, me da la impresion que oracle tiene una jre en su mismo directorio y usa ese para levantar servicios.

genial tu aporte, vale :)

saludos !!

Anónimo dijo...

Hola, instale el netbeans 5.1.1 en suse 10.3 ejecute la instrucion -sed ...

y al momento de ejecutar el netbeans se queda la ventana en blanco. Posteriormente me di cuenta de que si desactivo los efectos de escritorio (cubo, etc) el netbeans abre sin problema, no se si pudieran ayudarme con èste problema, de antemano agradezco su atenciòn.

Daniel Morales Salas dijo...

es un problema de java con compiz y beryl, la mayoria de las aplicaciones java funcionan mal (las gui) al tener activados esos efectos. Hasta ahora solo me ha funcionado bien el netbeans 6 teniendo compiz fusion corriendo ... prueba a ver que tal, netbeans 6 esta excelente por lo demas, no bajes la beta 2, baja las daily builds http://bits.netbeans.org/download/6.0/nightly/

saludos!!

kei dijo...

de maravilla... muchas gracias probado en fedora 8 (solo cambie la ruta) i todo bn.. gracias

cheperobert dijo...

A mi me dio el mismo problema, solo que instalando Lotus Notes 8, sin embargo lo solucione con la sigueinte line
a:

export LIBXCB_ALLOW_SLOPPY_LOCK=1

Este error se debe a la librería libxc la cual provee de una interfaz para aplicaciones basadas en X11, esta lanza una aserción cuando esta en uso. Buscando en google información referente a este tema me encontre con esta solucion, para lo cual se crea una variable colocandole el valor 1 lo cual esto hará que se salte la asercion.

Esto lo probe en OpenSuse 10.3

Anónimo dijo...

@cheperobert
Buenisimo men, esta solución funciona a la perfección. Tenia instalado la jvm por default de openSuse 10.3 instale la version jdk 5 y al reiniciar la pc empezo a lanzar el Assertion.
1000 Gracias.

Publicar un comentario en la entrada