Database JUNKY

MySQL,MariaDBを中心としたブログです

EnterpriseDB(PostgreSQL Plus 9.0) – glibc detectedのエラー

PostgreSQLでも、EnterpriseDBでもきっと同じだと思うのだけれども、コマンドラインでたとへな、\qとか、\hとかのコマンドをうった途端にスタックトレース(エラー)がでてしまう現象に対して、いや、本当に俺なんかした? とあせりましたが、この現象はどうもバグみたいです。あ、ちなみにエラーメッセージがこんな感じで出力されます

勘弁してくれよ、オイオイ・・・・

[shell] pgis=# \q glibc detected psql: realloc(): invalid next size: 0x0000000005774070 *** ======= Backtrace: ========= /lib64/[0x30ac8747a4] /lib64/libc.so.6(realloc+0x102)[0x30ac875292] /opt/PostgresPlus/9.0SS/bin/../lib/libedit.so[0x2ab1c22cae4a] /opt/PostgresPlus/9.0SS/bin/../lib/libedit.so(history+0x63e)[0x2ab1c22cb775] /opt/PostgresPlus/9.0SS/bin/../lib/libedit.so(write_history+0x47)[0x2ab1c22dbd1e] psql[0x40a024] psql[0x40a270] /lib64/libc.so.6(exit+0xe5)[0x30ac8333a5] /lib64/libc.so.6(__libc_start_main+0xfb)[0x30ac81d99b] psql[0x403a69] [/shell]

glibc detected というキーワードがでてきたら十中八九、以下の対応で改善されるかと思いますので、同じ現象に見舞われ、もう、PostgreSQL 9はいいや・・とかあきらめている方、おりましたらぜひとも試してみてください。 以下に手順を記載します。

  1. yum から、libedit モジュールをインストールする(リポジトリは、epelを指定します) [shell] # yum install libedit.x86_64 [/shell]
  2. 無事インストールされたか確認する [shell] # rpm -q libedit.x86_64 libedit-2.11-2.20080712cvs.el5 [/shell]
  3. インストールされたパッケージの中身を確認する [shell] # rpm -q libedit.x86_64 --filesbypkg libedit                   /usr/lib64/libedit.so.0 libedit                   /usr/lib64/libedit.so.0.0.27 libedit                   /usr/share/doc/libedit-2.11 libedit                   /usr/share/doc/libedit-2.11/COPYING libedit                   /usr/share/doc/libedit-2.11/ChangeLog libedit                   /usr/share/doc/libedit-2.11/THANKS [/shell]
  4. ディレクトリを切り替え、シンボリックリンクを張りなおす [shell] # cd /opt/PostgresPlus/9.0SS/lib/ # ls -l libedit* -rwxr-xr-- 1 root daemon 192738 12月 17 02:53 libedit.so # mv libedit.so libedit.so.bk # ln -s /usr/lib64/libedit.so.0 libedit.so [/shell]

以上で問題はほぼ改善されます。