試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

公式版OpenOffice.org 2.3.0とGTK+ 2.12で落ちる問題と回避方法

公式版OpenOffice.orgが、(32bit版)GTK+ 2のバージョンを2.12系にしてから、突然落ちるようになってしまった。

$ ooffice
javaldx: Could not find a Java Runtime Environment!
*** glibc detected *** /usr/lib32/openoffice/program/soffice.bin: double free or
 corruption (out): 0x08254e10 ***
======= Backtrace: =========
/lib32/libc.so.6[0xf6c75440]
/lib32/libc.so.6(cfree+0x89)[0xf6c77159]
/usr/lib32/libglib-2.0.so.0(g_free+0x31)[0xf52d5ac1]
/usr/lib32/openoffice/program/libvclplug_gtk680li.so[0xf584f3d2]
/usr/lib32/openoffice/program/libvcl680li.so(_ZN11SalGraphics22GetNativeControlR
egionEmmRK6RegionmRK16ImplControlValueR16SalControlHandleRKN3rtl8OUStringERS0_SC
_PK12OutputDevice+0x10f)[0xf7d90f45]
(以下略)

調べたところ、このバグは本家でも確認されていて、ソースの修正も提供されているようだ。

しかし、バイナリ版を使う状況においては、この問題が2.3.1までに修正されて、その実行ファイル(バイナリ)版が出るのを待つ以外には、

$ OOO_FORCE_DESKTOP=none ooffice
もしくは
$ OOO_FORCE_DESKTOP=kde ooffice

で回避するしかない。環境変数OOO_FORCE_DESKTOPは、「gnome」「kde」「none」のいずれかを指定することで、GNU/LinuxOpenOffice.orgのデスクトップ環境統合機能において、自動検出の結果に関わらず、指定されたデスクトップ環境に対する統合を強制的に適用する。
x86_64版Gentoo Linuxを使用しているなら、32bit版GTK+ 2のパッケージ(emul-linux-x86-gtklibs)を2.10入りのバージョンに戻すという手もある(手元の環境ではそれで対処することにした)。
あと、ディストリのOpenOffice.orgのパッケージでは問題が起きていない場合が多い。「x86_64なOpenOffice.orgのバイナリを別のディストリから借りてみるテスト」では、x86_64版Gentoo Linux上で、Fedora 8のパッケージを借りてきて動かしたのだが、GTK+ 2.12による問題は起きていない。