libmap.conf2007年01月26日 11時38分33秒

7.0-CURRENT と 6.1-RELEASE のバイナリ間では pthread に問題が起きるようだ。

手がかりを探していたら、libmap.conf に出会った。/etc/libmap.conf だ。何度か、見たことがあったが、真剣に調べたことは無かった。

libmap.conf を用いて、動的リンクの先を変更できる。実際にやってみる。


libpthread.so.2        libthr.so.2
libpthread.so          libthr.so

を追加した、これで、libpthread.so の代りに libthread.so が使われるようになる。

これを保存した後、sylpheed をデバッガから起動して前回と同じことをする。


#16 0x88ad3f5e in pthread_join () from /usr/lib/libthr.so.2
#17 0x88ad0e5a in pthread_self () from /usr/lib/libthr.so.2
#18 0x88ad14a0 in pthread_rwlock_unlock () from /usr/lib/libthr.so.2
#19 0x88ad3f5e in pthread_join () from /usr/lib/libthr.so.2
#20 0x88ad0e5a in pthread_self () from /usr/lib/libthr.so.2
#21 0x88ad14a0 in pthread_rwlock_unlock () from /usr/lib/libthr.so.2

と出てきた。

参考の為、前回の backtrace も載せる。


#1557 0x88ad5dfc in pthread_rwlock_unlock () from /lib/libpthread.so.2
#1558 0x88ae12b2 in pthread_join () from /lib/libpthread.so.2
#1559 0x88ad574a in pthread_self () from /lib/libpthread.so.2
#1560 0x88ad5dfc in pthread_rwlock_unlock () from /lib/libpthread.so.2
#1561 0x88ae12b2 in pthread_join () from /lib/libpthread.so.2
#1562 0x88ad574a in pthread_self () from /lib/libpthread.so.2
#1563 0x88ad5dfc in pthread_rwlock_unlock () from /lib/libpthread.so.2

/lib/libXXX が入れ替わっている。読むと難しそうだが、設定するだけなら随分簡単だった。

本来の目的を忘れるところだった。残念ながら、libpthread を取り換えても、メモリが肥大して死んでしまうのは同じだった。

前回次回