Thunderbird 6からそうなったのか、以前からそうだったのか、きちんと調べていませんが、今日、Thunderbird 6にアップデートしたら、Thunderbirdがまったく動かなくなってしまいました。
gdbで調べてみると、こんな感じでsegmentation faultしてました。
#0 0x000000080402d4d7 in free () from /lib/libc.so.7
#1 0x0000000805255d35 in ldap_set_lderrno ()
from /usr/local/lib/thunderbird/libldap60.so
#2 0x00000008052694ed in ldap_set_option ()
from /usr/local/lib/thunderbird/libldap60.so
#3 0x0000000808530b27 in ldap_initialize ()
from /usr/local/lib/libldap-2.4.so.8
#4 0x0000000808406d6d in _nss_ldap_locate_userpassword ()
from /usr/local/lib/nss_ldap.so.1
#5 0x00000008084099e0 in _nss_ldap_search_s ()
from /usr/local/lib/nss_ldap.so.1
#6 0x000000080840a0f3 in _nss_ldap_getbyname ()
from /usr/local/lib/nss_ldap.so.1
#7 0x000000080840a379 in _nss_ldap_getpwuid_r ()
from /usr/local/lib/nss_ldap.so.1
#8 0x0000000803feedde in __nss_compat_getpwuid_r () from /lib/libc.so.7
#9 0x000000080407ddfd in nsdispatch () from /lib/libc.so.7
#10 0x000000080406ac14 in getpwuid_r () from /lib/libc.so.7
#11 0x00000008036e9a98 in g_get_system_data_dirs ()
from /usr/local/lib/libglib-2.0.so.0
#12 0x00000008036eb5ef in g_get_home_dir ()
from /usr/local/lib/libglib-2.0.so.0
#13 0x0000000805ff124c in gtk_rc_add_default_file ()
from /usr/local/lib/libgtk-x11-2.0.so.0
#14 0x0000000805ff406d in gtk_rc_parse_string ()
from /usr/local/lib/libgtk-x11-2.0.so.0
#15 0x0000000805fa6c65 in gtk_init_with_args ()
from /usr/local/lib/libgtk-x11-2.0.so.0
#16 0x00000008036c4fce in g_option_context_parse ()
以下省略
どうやら、/etc/nsswitch.confでLDAPを使うようにしていると、thunderbirdが起動しない、というところまで切り分けできました。
openldapのライブラリからldap_set_optionという名前の関数を呼ぼうとしたら、なぜかthunderbirdのライブラリ(libldap60.so)側にある同名の関数が呼ばれてしまい、それで落ちているようです。
% nm /usr/local/lib/libldap-2.4.so.8 | grep ldap_set_option
0000000000027880 T ldap_set_option
% nm /usr/local/lib/thunderbird/libldap60.so
nm: /usr/local/lib/thunderbird/libldap60.so: no symbols
% strings /usr/local/lib/thunderbird/libldap60.so | grep ldap_set_option
ldap_set_option
じゃあ、libdap60.soをリネームして、見なくしてしまえば・・・
# mv /usr/local/lib/thunderbird/libldap60.so /usr/local/lib/thunderbird/libldap60.so-
% thunderbird
/libexec/ld-elf.so.1: Shared object "libldap60.so" not found, required by "libxul.so"
まあ、そりゃーとうぜん、そうなりますか。
ひょっとして、libldap60.soの代わりに、openldapのライブラリを使わせてしまえば・・・
# ln -s /usr/local/lib/libldap-2.4.so /usr/local/lib/thunderbird/libldap60.so
% thunderbird
Assertion failed: (LBER_VALID( ber )), function ldap_sasl_bind, file sasl.c, line 103.
Abort
だめですか。そううまい話はない、と。
ネット検索してみると、以下にように、何年も前から、バグ登録されていました。FreeBSDに限らず、Linuxでも同様とのこと。
https://bugzilla.mozilla.org/show_bug.cgi?id=292127
https://bugzilla.mozilla.org/show_bug.cgi?id=532601
■ とりあえずの回避策
vipwして、thunderbirdを実行するユーザーをローカルなpasswdに登録すればOK、でした。
☆
これまで、/usr/ports/deskutils/lightning-thunderbird にあるLightningというプラグインが、Thunderbird3でしか動かず、Thunderbird4にアップデートしないでいました。
ふと気がつけば、/usr/ports/mail/thunderbird は現在、Thunderbird 6になっていて、ここでmake configすると、Lightningも一緒にビルドされることがわかり、じゃあ!ということで、Thunderbird 6にしてみました。そして動作確認しようかと思ったら、いきなり、上記のような不具合にぶち当たりました。
これで万事解決と思ったら、添付ファイルを送ろうとすると、segmentation faultして落ちることがわかりました。送信しなくても、保存するだけで、落ちます。IMAPを使っているのと関係あるかもしれません。
gdbで見たけど、簡単に解決しそうもないので、Thunderbird 3に戻しました。
今日一日の苦労は無駄骨だったのか。
0 件のコメント:
コメントを投稿