[Anthy-dev 2223] Re: 複数の同時quit処理をブロック

アーカイブの一覧に戻る

TOKUNAGA Hiroyuki tkng****@xem*****
2005年 8月 14日 (日) 03:35:29 JST


On Sat, 13 Aug 2005 18:12:53 +0900
dai <d+r****@vdr*****> wrote:

> dai と申します。
> 
> いつもありがとうございます。
> 
> On Sat, 13 Aug 2005 17:09:55 +0900
> TOKUNAGA Hiroyuki <tkng****@xem*****> wrote:
> > > > > 風博士とuim-Anthyを使っていていたら,風博士が落ちたので,バッ
> > > > > クとレースを見てみたところuim_quit()を何度も呼び出して落ちて
> > > > > いました.
> > > > > # 2,30回くらい呼び出したところで落ちていた.
> 
> > > uim 0.4.8alpha1 と trunk r1095 でも多分同様の症状で
> > > Mozilla Firefox と sylpheed-gtk2 が落ちました。
> > > Mozilla Firefox が落ちたときには 150 回くらい uim_quit を呼んでい
> > > ます。パッチ等は示すことはできませんが、ご報告させていただきます。
> > 
> > うーん、こういう再現性の低いバグはなやましいですね…。(手元ではまっ
> > たく再現できていません)ちょっとコードを眺めてみたのですが、情報が少
> > なすぎて怪しいところの見当もつけられませんでした。
> > 
> > uim_quitが呼ばれる直前の関数はなにが呼ばれているか、教えていただけな
> > いでしょうか?それがわかれば、もうちょっと怪しいところが絞れるかもし
> > れません。(デバッグオプション付きでのバックトレースとかがあると、
> > もっとうれしいです。)
> 
> Mozilla Firefox と sylpheed-gtk2 では次のようになります。
> これは ochusha で出たものですが、ほぼ同じ感じです。

ありがとうございます。GTK+の方のg_object_unrefから
gtk_im_multicontext_newが呼ばれるというパターンは前に見た覚えはあるので
すが、どうやって解決したのかは思い出せません。

https://bugs.freedesktop.org/show_bug.cgi?id=586
http://lists.sourceforge.jp/mailman/archives/anthy-dev/2004-May/000797.html

あたりかなということで、とりあえず最近の変更のなかで終了処理回りに関して
変わったことが無いかを調べてみましたが、特に怪しげなところは見付かりませ
んでした。

もしよろしければ、以下の質問に答えていただけますか?

使っているOSとバージョンは?
uimのconfigureのオプションは?
使っているIMは?
落ちる頻度は?
どのような動作をした時に落ちるか?


> #0  0x423fd613 in uim_quit () from /usr/lib/libuim.so.0
>         :
> #123 0x423fe31f in uim_quit () from /usr/lib/libuim.so.0
> #124 0x424055df in uim_scm_eval () from /usr/lib/libuim.so.0
> #125 0x42406aff in uim_scm_quit () from /usr/lib/libuim.so.0
> #126 0x423fe4c4 in uim_quit () from /usr/lib/libuim.so.0
>         :
> #152 0x423fa94f in uim_quit () from /usr/lib/libuim.so.0
> #153 0x4240561e in uim_scm_eval_c_string () from /usr/lib/libuim.so.0
> #154 0x424078ef in uim_sizeof_sexp_str () from /usr/lib/libuim.so.0
> #155 0x423f6fc6 in uim_release_context () from /usr/lib/libuim.so.0
> #156 0x423dbecd in im_uim_init (uic=0x8e26f58) at gtk-im-uim.c:635
> #157 0x40713725 in g_object_unref () from /usr/lib/libgobject-2.0.so.0
> #158 0x403e355f in gtk_im_multicontext_new ()
> #from /usr/lib/libgtk-x11-2.0.so.0 159 0x403e3772 in
> #gtk_im_multicontext_new () from /usr/lib/libgtk-x11-2.0.so.0 160
> #0x40713725 in g_object_unref () from /usr/lib/libgobject-2.0.so.0
> #161 0x4048a7dd in gtk_text_view_get_default_attributes ()
>    from /usr/lib/libgtk-x11-2.0.so.0
> #162 0x40713725 in g_object_unref () from /usr/lib/libgobject-2.0.so.0
> #163 0x40714ea9 in g_object_steal_data ()
> #from /usr/lib/libgobject-2.0.so.0 164 0x40732d5f in g_value_unset ()
> #from /usr/lib/libgobject-2.0.so.0 165 0x40722714 in
> #g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0 166
> #0x4072299e in g_signal_emit () from /usr/lib/libgobject-2.0.so.0 167
> #0x4037b830 in gtk_container_remove ()
> #from /usr/lib/libgtk-x11-2.0.so.0 168 0x0806bbcc in hide_popup_real
> #(popup_context=0x8e6ce18)
>     at bbs_thread_ui.c:4088
> #169 0x0806bdf7 in popup_close_delay_timeout (popup_context=0x8e6ce18)
>     at bbs_thread_ui.c:4134
> #170 0x407677d4 in g_main_context_wakeup ()
> #from /usr/lib/libglib-2.0.so.0 171 0x40765a21 in
> #g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0 172
> #0x40768c77 in g_main_context_check () from /usr/lib/libglib-2.0.so.0
> #173 0x407691c8 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
> #174 0x403fb849 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0 175
> #0x08089e8e in main (argc=1, argv=0xbf839d24) at main.c:327
> 
> uim-xim の場合です。
> 
> #0  0x40043633 in uim_quit () from /usr/lib/libuim.so.0
>         :
> #130 0x4004433f in uim_quit () from /usr/lib/libuim.so.0
> #131 0x4004b5ff in uim_scm_eval () from /usr/lib/libuim.so.0
> #132 0x4004cb1f in uim_scm_quit () from /usr/lib/libuim.so.0
> #133 0x400444e4 in uim_quit () from /usr/lib/libuim.so.0
>         :
> #147 0x40044778 in uim_quit () from /usr/lib/libuim.so.0
> #148 0x4004b5ff in uim_scm_eval () from /usr/lib/libuim.so.0
> #149 0x4004cb1f in uim_scm_quit () from /usr/lib/libuim.so.0
> #150 0x400444e4 in uim_quit () from /usr/lib/libuim.so.0
>         :
> #159 0x4004096f in uim_quit () from /usr/lib/libuim.so.0
> #160 0x4004b63e in uim_scm_eval_c_string () from /usr/lib/libuim.so.0
> #161 0x4004d90f in uim_eval_string () from /usr/lib/libuim.so.0
> #162 0x4004ec4d in uim_init_im_subrs () from /usr/lib/libuim.so.0
> #163 0x4004ed60 in uim_press_key () from /usr/lib/libuim.so.0
> #164 0x0806417b in InputContext::pushKey (this=0x81c9d20, k=0x81eef50)
>     at ximserver.cpp:584
> #165 0x08059771 in XimIC::OnKeyEvent (this=0x81c9c88, e=
>         :
>        (長いのではしょります)
>         :
>     at ximic.cpp:440
> #166 0x080607c6 in XimIM_impl::forward_event (this=0x81c8f78,
> #p=0x81f29a0)
>     at ximim.cpp:326
> #167 0x0805ebb6 in Connection::xim_forward_event (this=0x81c8f18,
> #p=0x81f29a0)
>     at ximtrans.cpp:724
> #168 0x0805f056 in Connection::OnRecv (this=0x81c8f18) at
> #ximtrans.cpp:298 169 0x08056c16 in XConnection::readProc
> #(this=0x81c8f18, ev=0xbf8ea178)
>     at connection.cpp:182
> #170 0x08056d3e in procXClientMessage (ev=0xbf8ea178) at
> #connection.cpp:126 171 0x0804bd5d in ProcXEvent (e=0xbf8ea178) at
> #main.cpp:307 172 0x0804bd8f in check_pending_xevent () at
> #main.cpp:320 173 0x0804bdca in xEventRead (fd=4, ev=1) at
> #main.cpp:328 174 0x0804bfd6 in main_loop () at main.cpp:171
> #175 0x0804c88a in main (argc=1, argv=0xbf8ea434) at main.cpp:625
> 
> ちょっと古いですが、検索して見つけたバックトレースを紹介しておきます。
> 
> http://www.freelists.org/archives/ggo-discussion/07-2005/msg00002.html

これはまたちょっとパターンが違うっぽいですね。ううむ…。


-- 
徳永拓之
tkng at xem jp





Anthy-dev メーリングリストの案内
アーカイブの一覧に戻る