2007/05/19

java などが xlib.lock のassert を出して止るとき。

xcbのversion が 1以上ではlockの管理が厳密になり、lock をしていないときにunlockをすると止まるようになった。参考debian-devl-announce libx11 with Xlib/XCB now in experimental; please test with your packages
止ると
java: xcb_xlib.c:52: xcb_xlib_unlock: Assertion `c->xlib.lock'
failed
というエラーが出る。
upstreamが対応するのが筋だが、debianのlibxcb 1.0-1.2 以降のバージョンでは 対応するまでの間の対策パッチがあたっている。それは、
環境変数 LIBXCB_SLOPPY_LOCK を 0にすることで、assertを止めることができる。
bashならばLIBXCB_SLOPPY_LOCK=0 java
と実行したらよい。

次のエントリに追記したが、この対応方法は、debian experimental libxcb-1.0-1.2 のみでしか効果がない。

ラベル: ,