[pgcluster: 797] Re: 子プロセスが残ったままになります(1.1.1a)

Masanobu Yasui yasui-m @ klab.org
2005年 8月 8日 (月) 20:19:02 JST


お世話になります、安井です。

> 下記の問題については以前pgFoundryで同様のご指摘を頂き、次バージョンで対応予定です。

おっと、、失礼いたしました。
pgcluster-general @ pgfoundry.org の過去ログも見ておくべきでした。


返信メールで別件の質問は失礼とも思いましたが、
下記の件につきましてもご回答頂けないでしょうか。

----
mallocのdebugモードを有効にして pgreplicate を実行し、pgcbench -i を走らせたところ、

$ export MALLOC_CHECK_=1
$ pgreplicate -n
malloc: using debugging hooks
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "branches_pkey" for table "branches"
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "tellers_pkey" for table "tellers"
NOTICE:  CREATE TABLE / PRIMARY KEY will create implicit index "accounts_pkey" for table "accounts"
free(): invalid pointer 0x805bb70!
free(): invalid pointer 0x8061b08!
free(): invalid pointer 0x805bb70!
free(): invalid pointer 0x805bb70!
free(): invalid pointer 0x805bb70!
free(): invalid pointer 0x805bb70!
free(): invalid pointer 0x805bb70!
free(): invalid pointer 0x805bb70!
free(): invalid pointer 0x805bb70!
free(): invalid pointer 0x805bb70!

とのことで、メモリ解放の処理に問題がありそうな雰囲気です。


また、詳細は不明ですが、MALLOC_CHECK_ を定義せずに pgreplicate を実行して pgcbench -i をかけたところ、
%CPU=99.9% のプロセスができあがっていました。

該当プロセスを gdb でアタッチすると、、

(gdb) bt
#0  0xb7e43ce5 in mallopt () from /lib/tls/libc.so.6
#1  0xb7e42c43 in malloc () from /lib/tls/libc.so.6
#2  0x080531cd in PGRread_query ()
#3  0x0805308f in PGRread_packet ()
#4  0x0804c835 in replicate_loop ()
#5  0x0804cd03 in replicate_main ()
#6  0x0804d6c3 in main ()

との事で、mallocで固まってしまっているようです。
とりあえず 環境変数 MALLOC_CHECK_ を定義すると再現しなくなります。

【利用環境】
   Debian 3.1 Sarge
    Kernel: 2.6.12.3-smp
    CPU   : Xeon 3.20GHz x 2
    Memory: 4GBytes

これらの現象に対する対応の目処は立っていらっしゃいますでしょうか。
既知の問題であり、すでに解決済みであれば次のリリースを楽しみにさせて頂きたいと思います。
もし未解決であれば、なんらかの形でお手伝いさせて頂く事ができればと考えております。

よろしくお願い致します。

**************************************************************
KLab 株式会社(クラブかぶしきがいしゃ) http://www.klab.org/
  Kラボラトリー: 安井真伸
**************************************************************





pgcluster メーリングリストの案内