|
sylpheed-jp:2262
From: 吉山 晃 <yosshy@xxxxxxxxxx> 吉山です。 Debian GNU/Linux (current)上で、 Content-Type: text/html;charset="GB2312" のメールをプレビューした時に時々 sylpeed が落ちる現象を調査していましたが、 ようやく原因を特定しました。 --with-native-locale=no で build した gdk を使用していると、 gdk_mbstowcs() の処理中に以下の function call が起こります。 #0 0x404cda51 in kill () from /lib/libc.so.6 #1 0x4034024b in pthread_kill () from /lib/libpthread.so.0 #2 0x40340521 in raise () from /lib/libpthread.so.0 #3 0x404ce986 in abort () from /lib/libc.so.6 #4 0x404c7ae9 in __assert_fail () from /lib/libc.so.6 #5 0x4001327f in gconv () from /usr/lib/gconv/EUC-JP.so #6 0x40012c0f in gconv () from /usr/lib/gconv/EUC-JP.so #7 0x40519e9c in mbrtowc () from /lib/libc.so.6 #8 0x404cfdf4 in mbtowc () from /lib/libc.so.6 <--- here #9 0x400188db in _init () from /usr/X11R6/lib/X11/locale/common/xlibi18n.so.2 #10 0x402080a9 in _XlcConvert () from /usr/X11R6/lib/libX11.so.6 #11 0x4020def1 in _XlcDeInitLoader () from /usr/X11R6/lib/libX11.so.6 #12 0x4020dfda in _XwcTextPropertyToTextList () from /usr/X11R6/lib/libX11.so.6 #13 0x401ea5b6 in XwcTextPropertyToTextList () from /usr/X11R6/lib/libX11.so.6 #14 0x401720b2 in gdk_mbstowcs () from /usr/lib/libgdk-1.2.so.0 #15 0x400b3638 in gtk_label_set_text () from /usr/lib/libgtk-1.2.so.0 #16 0x400b3556 in gtk_label_new () from /usr/lib/libgtk-1.2.so.0 #17 0x0806d49b in summary_set_column_titles (summaryview=0x81d9848) at summaryview.c:1556 ここで、glibc (標準Cライブラリは全て?)の mbtowc() が thread safe でない ために、内部保持しているエンコーディング変換ステートが不正になってabort() が呼ばれてしまいまい、結果 sylpeed が core dump します。 --with-native-locale=yes にした gdk ではこの問題は起こりません。 Debian 以外のディストリビューションで再現するかどうか知りませんが、同様 の現象に困っている人は gdk を疑ってみて下さい。 --- 吉山あきら <yosshy@xxxxxxxxxx> |