[pgpool-general-jp: 587] Re: pgpool-IIのsegfaultについて
Tatsuo Ishii
ishii @ sraoss.co.jp
2009年 8月 10日 (月) 17:49:00 JST
石井です。
レポートありがとうございます。
segfaultになる直接の原因は、pgpool-IIからPostgreSQLに対してコネクショ
ンを貼ろうとして失敗したことによるものです。このときpgpool-IIのログに
何かエラーメッセージが出ていると思うのですが、それを見せて頂けますか?
--
Tatsuo Ishii
SRA OSS, Inc. Japan
> 初めまして、上之薗と申します。
>
> pgpool周りでコネクションが異常になる障害が多発していたので、
> 調査していたところ、segfaultがログに出力されていました。
> 原因として考えられそうな事象、対処方法などご存じではないでしょうか?
>
> [発生した環境]
> OS:
> CentOS 5.3 64bit
> PostgreSQL:
> ここからダウンロードしたrpmを使用しました。
> https://projects.commandprompt.com/public/pgcore
>
> postgresql.x86_64 8.3.7-1PGDG.rhel5
> postgresql-devel.x86_64 8.3.7-1PGDG.rhel5
> postgresql-libs.x86_64 8.3.7-1PGDG.rhel5
> postgresql-server.x86_64 8.3.7-1PGDG.rhel5
> pgpool:
> pgpool-II 2.2.2、最新のCVSのソース(8月7日時点)で確認しましたが結果は同じでした。
>
> [詳細]
> 下記のページを参考にして、segfault時にコアダンプを取得しました。
> http://www.mail-archive.com/pgpool-general@pgfoundry.org/msg01076.html
>
> コアダンプの内容をみると、pool_stream.cの320行目でコケているようです。
>
> ====================================================================================
> # gdb /usr/local/pgpool/bin/pgpool core.5309
>
> Core was generated by `pgpool: accept connection
> '.
> Program terminated with signal 11, Segmentation fault.
> [New process 5309]
> #0 pool_write (cp=0x554245442036313a, buf=0x4572cf, len=1) at pool_stream.c:320
> 320 if (cp->no_forward)
> (gdb) bt
> #0 pool_write (cp=0x554245442036313a, buf=0x4572cf, len=1) at pool_stream.c:320
> #1 0x0000000000412ca5 in pool_send_frontend_exits (backend=0xe7d88e0)
> at pool_process_query.c:1482
> #2 0x0000000000406dd6 in send_frontend_exits () at child.c:1318
> #3 0x0000000000406e5d in child_exit (code=1) at child.c:1382
> #4 0x0000000000418f88 in new_connection (p=0xe7d88e0) at
> pool_connection_pool.c:597
> #5 0x000000000040848d in do_child (unix_fd=6, inet_fd=7) at child.c:1155
> #6 0x000000000040412a in fork_a_child (unix_fd=6, inet_fd=7, id=0) at
> main.c:828
> #7 0x00000000004058de in main (argc=<value optimized out>,
> argv=<value optimized out>) at main.c:434
> =====================================================================================================
>
> pool_stream.cの320行目でチェックをしています。
>
> -- pool_stream.c抜粋 --
> if (cp->no_forward)
> return 0;
>
> たぶん、cp->no_forwardがおかしなところを参照していると思われます。
>
> 以上、よろしくお願い致します。
> _______________________________________________
> pgpool-general-jp mailing list
> pgpool-general-jp @ sraoss.jp
> http://www.sraoss.jp/mailman/listinfo/pgpool-general-jp
pgpool-general-jp メーリングリストの案内