[pgpool-general-jp: 92] Re: pgpoolのprepared_listについて

Kenichi Sawada k @ sawada.cc
2007年 2月 14日 (水) 09:38:58 JST


澤田です。

大変遅くなりましたが、浅羽さんに頂いたパッチの動作を確認しました。
どうもありがとうございました。

--澤田 研一
--k @ sawada.cc

From: Yoshiyuki Asaba <y-asaba @ sraoss.co.jp>
Date: Mon, 22 Jan 2007 20:35:05 +0900 (JST)

> 浅羽です。
> 
> From: Kenichi Sawada <k @ sawada.cc>
> Subject: [pgpool-general-jp: 79] Re: pgpoolのprepared_listについて
> Date: Mon, 22 Jan 2007 19:54:32 +0900 (JST)
> 
> > 浅羽さん、パッチありがとうございます。御返信遅くなり申し訳ありません。
> > パッチの中で気になった点がありまして、
> 省略
> > この部分がちょっと良く判らなかったのですが、strdupの対象は
> > stmt->portal_nameの方がよいのでしょうか?
> 
> すみません、その通りです。
> 
> 
> > また、頂いたパッチで前回お送りしたPerlスクリプトを実行すると
> > *** glibc detected *** double free or corruption (faststop): 0xxxxxxxxx ***
> > というエラーが出てしまうようです。
> > これは恐らく2726行目あたりの
> > if (stmt == NULL)
> > 	 free(name);
> > else if (*portal_name == '\0')
> > のfreeでエラーが発生しているものと思われますが、
> > (微妙によくわかっていないのですが
> > 2727行目のfree(name)はどういう場合に必要になるのでしょうか。。?)
> > 遡ると2720〜2721行目のsprintfとlookup_prepared_statement_by_statementが
> > 悪さをしているようです。
> 
> はい、2重解放していました…。
> 
> 
> > 可能であれば、正規化はprepared_listに登録/削除する直前、並びにlookupする直前
> > に行うのがよいかと思いますが、いかがでしょうか?
> > 御検討頂ければと存じます。どうぞ宜しくお願い致します。
> 
> Parse と Bind メッセージの場合は大文字と小文字を区別しないといけないた
> め "" で囲んでいましたが、必要無くなったので strdup() するように修正し
> ました。
> 
> 澤田さんの再現スクリプトでも正しく動くパッチを添付します。
> --
> Yoshiyuki Asaba
> y-asaba @ sraoss.co.jp


pgpool-general-jp メーリングリストの案内