7.0-CURRENT でのメモリ肥大の原因2007年01月25日 11時52分38秒

とりあえず、CURRENT でも普段使うアプリケーションの半分ぐらいは動くようだ。少しずつ CURRENT を使う時間を伸ばしていくのが当初の目標だろう。

問題のある、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 だったようだ。

前回次回