Ubuntu11.10で Diaのレイヤウインドウが使えない問題
Bug #892815 “[Oneiric] Layers support is completely broken in Di...” : Bugs : dia package : Ubuntu
ここにある通りなんですが、単に壊れているとか使えないとかじゃなく
CPU使用率もやたらと増えるのでその観点で少し調べてみた。
gdbでアタッチして backtraceを取得
% sudo gdb > (gdb) attach (diaのプロセスID) > (gdb) bt #0 0x00007fa7e378cf88 in g_hash_table_lookup () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #1 0x00007fa7e3c70b9d in g_param_spec_pool_lookup () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 #2 0x00007fa7e4d6e74a in gtk_widget_style_get_valist () from /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0 #3 0x00007fa7e4d6ea37 in gtk_widget_style_get () from /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0 #4 0x00007fa7e4d6eab8 in ?? () from /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0 #5 0x00007fa7e4d6ec2b in ?? () from /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0 #6 0x00007fa7e4b9b92b in ?? () from /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0 #7 0x00007fa7e4d6eb15 in ?? () from /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0 #8 0x00007fa7e4d6eb90 in gtk_widget_region_intersect () from /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0 #9 0x00007fa7e4bd16b4 in gtk_container_propagate_expose () from /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0 #10 0x00007fa7e4bd02c4 in ?? () from /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0 #11 0x00007fa7e4dc4265 in ?? () from /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0 #12 0x00007fa7e4c4e828 in ?? () from /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0 #13 0x00007fa7e3c640a4 in g_closure_invoke () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 #14 0x00007fa7e3c75e5f in ?? () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 #15 0x00007fa7e3c7f483 in g_signal_emit_valist () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 #16 0x00007fa7e3c7f852 in g_signal_emit () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 #17 0x00007fa7e4d68dc1 in ?? () from /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0 #18 0x00007fa7e4c4d080 in gtk_main_do_event () from /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0 #19 0x00007fa7e48a8704 in ?? () from /usr/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0 #20 0x00007fa7e48a86b3 in ?? () from /usr/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0 #21 0x00007fa7e48a86b3 in ?? () from /usr/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0 #22 0x00007fa7e48a86b3 in ?? () from /usr/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0 #23 0x00007fa7e48a86b3 in ?? () from /usr/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0 #24 0x00007fa7e48a86b3 in ?? () from /usr/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0 #25 0x00007fa7e48a3633 in ?? () from /usr/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0 #26 0x00007fa7e48a57d1 in gdk_window_process_all_updates () from /usr/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0 #27 0x00007fa7e48a5839 in ?? () from /usr/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0 #28 0x00007fa7e4882d26 in ?? () from /usr/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0 #29 0x00007fa7e379ea5d in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #30 0x00007fa7e379f258 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #31 0x00007fa7e379f792 in g_main_loop_run () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #32 0x00007fa7e4c4bdb7 in gtk_main () from /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0 #33 0x000000000041b975 in main ()
perf topでの結果
Linuxに付属するツール perfを利用して見てみました。
こちらがとても参考になりました。
% sudo perl top
psやら, タスクマネージャ的なソフトで見ると CPU利用率は結構高いけど、
これだとあんまり高くないですね。しばらく回してみたんですが、同じところで
ぐるぐる回っているということではないということなんですかね。
でもやっぱり glib周りかな怪しいのは。
Ubuntu以外では使えているそうなので、Ubuntuの問題なんじゃないか
っていうのが出ていますが、どうなんですかね?dia自体はある程度
完成されており、開発がガンガン行われているわけでもないので、
やっぱりほかとの兼ね合いなんでしょうね。
これ以上はソースを見ていくしかないのかな。
レイヤ機能は使えても、レイヤウインドウで操作ができないという
のは辛すぎるので、早く解決してほしい問題です。