7.0-CURRENT でのメモリ肥大の原因 ― 2007年01月25日 11時52分38秒
問題のある、sylpheed をデバッグしてみた。まだ完全に環境が整っていないので root で作業する事も多い。
$ gdb `which sylpheed`
(gdb) run
Starting program: /usr/X11R6/bin/sylpheed
(gdb) backtrace
#1555 0x88ae12b2 in pthread_join () from /lib/libpthread.so.2
#1556 0x88ad574a in pthread_self () from /lib/libpthread.so.2
#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
どうも、pthread 関連で 6.1-RELEASE と 7.0-CURRENT とで何らかの不整合を起こしているようだ。
一度、6.1-RELEASE に切替えて同じことを試した。
% gdb `which sylpheed`
(gdb) run
[New Thread 0x814c200 (LWP 100144)]
Program received signal SIGINT, Interrupt.
[Switching to Thread 0x814c200 (LWP 100144)]
0x88adb52b in pthread_testcancel () from /usr/lib/libpthread.so.2
(gdb) bt
#0 0x88adb52b in pthread_testcancel () from /usr/lib/libpthread.so.2
#1 0x88ac8b75 in sigaction () from /usr/lib/libpthread.so.2
#2 0x88ac8e61 in sigaction () from /usr/lib/libpthread.so.2
#3 0x88ac9640 in sigaction () from /usr/lib/libpthread.so.2
#4 0x88ac97ec in sigaction () from /usr/lib/libpthread.so.2
#5 0x88ad3e3c in pthread_mutexattr_init () from /usr/lib/libpthread.so.2
#6 0x88627450 in ?? ()
との事だ。6.1 では current-7 の様に無限にメモリを悔い尽くして、以上終了することもない。
原因は gconf2 ではなく、pthread だったようだ。
最近のコメント