Mandriva Linux 2009.0のGImageViewがまともに動作しない件についてと回避方法(後半)
「Mandriva Linux 2009.0のGImageViewがまともに動作しない件についてと回避方法(前半)」の続き。
サムネイル表示におけるスクロールに不具合?
苦労の末、パッケージのビルドは正常に完了し、画像も開けるようにはなったものの、サムネイル(縮小画像)の一覧をウィンドウに表示している状態でウィンドウからはみ出た項目を開こうとすると落ちる。スクロールバーも出ておらず、端末には(gimv:[プロセスID]): Gtk-WARNING **: gtkwidget.c:4826: signal "GimvZAlbum::set-scroll-adjustments" has wrong signature (gimv:[プロセスID]): Gtk-WARNING **: gtk_scrolled_window_add(): cannot add non scrollable widget use gtk_scrolled_window_add_with_viewport() instead (gimv:[プロセスID]): Gtk-WARNING **: gtkwidget.c:4826: signal "GimvZAlbum::set-scroll-adjustments" has wrong signature (gimv:[プロセスID]): Gtk-WARNING **: gtkwidget.c:4826: signal "GimvZAlbum::set-scroll-adjustments" has wrong signature (gimv:[プロセスID]): Gtk-WARNING **: gtk_scrolled_window_add(): cannot add non scrollable widget use gtk_scrolled_window_add_with_viewport() instead
というメッセージが出ていた。ソース中に「gtk_scrolled_window_add」という文字列はなかった。
また、落ちる代わりに
*** glibc detected *** gimv: free(): invalid pointer: 0x00007f49c7c87f73 ***
のようになって固まることもあった。
GTK+ 2.12系(2.12.12)を別に入れてみると...
2.14系のGTK+に固有の不具合なのかを確かめるため、別の場所に2.12系(バージョン2.12.12を使用)のGTK+を手動でインストールすることにした。GTK+ 2.12.12のソースを展開し、ディレクトリに入ってから下のようにした。
$ ./configure --prefix=/opt/gtk+-2.12.12 --libdir=/opt/gtk+-2.12.12/lib64 $ make $ sudo make install-strip
x86_32版では--libdir=の指定は不要。
この後、強制的にGTK+ 2.12.12を使用するように
(x86_64でlibdirを上のように指定した場合) $ LD_LIBRARY_PATH=/opt/gtk+-2.12.12/lib64 gimv & (それ以外の場合) $ LD_LIBRARY_PATH=/opt/gtk+-2.12.12/lib gimv &
のようにしてGImageViewを起動すると
スクロールバーも出るし、落ちることもなかった。
Mandriva Linux 2009.0のパッケージとして提供されているGTK+ 2.14.3では
上のようになっていて、この下に隠れている項目にアクセスしようとすると落ちていた。
不具合を回避するためには、このようにバージョン2.12系のGTK+を別の場所に手動で入れて、環境変数LD_LIBRARY_PATHをそのライブラリのディレクトリに指定する形で起動するという形をとることになる。
最も好ましい対処方法は2.14系のGTK+を修正することだが、どこをどのように修正すればよいのかは分からない。2008/12/23現在の最新バージョンであるバージョン2.14.6を同様に手動でインストールしてみたが、結果は同じだった。
なお、以前Gentooを使用していたときにはバージョン2.14系は使用していなかったため、この問題に気づくことはなかった。
(2015/1/8)この問題はその後の開発版で修正済み。
使用したバージョン:
- GTK+ 2.12.12, 2.14.3, 2.14.6
- GImageView 0.2.27