2013-10-28

MALLOC_PERTURB_

あるソフトを使っていたら, 私だけエラーが起こる. 同じマシン (RHEL 6がインストールされたマシンをリモートログインで共有していた) を使っている人に聞くと, 同様のエラーは起こらないという. 私とその人との違いは, ログインシェル. 私は bash, その人は tcsh を使っていた. ログインシェルを tcsh に変更してみると, このエラーは起こらなくなった. しかし, ログインシェルを tcsh にした後, bash を起動し, その中でそのソフトを起動するとエラー. こんな時には環境変数が原因だろうと考え, diff をとってみた.
> env | sort > tcsh-env.out
> bash
$ env | sort > bash-env.out
$ diff tcsh-env.out bash-env.out
ここで分かったのは, bash 環境では MALLOC_PERTURB_ が設定されているということ. この環境変数を消すと, エラーは起こらなくなった.

この環境変数がどこで設定されているのかを探ってみると, debugmode というパッケージが原因であることが分かった.

$ rpm -ql debugmode 
/etc/profile.d/debug.csh
/etc/profile.d/debug.sh
/etc/sysconfig/debug
私の使っている bash では, /etc/profile.d にある設定を律儀に読んでいたのでエラーが起こり, 彼の tcsh (の設定である .cshrc) はこのディレクトリを無視していたのでエラーが起こっていなかったらしい.

今回使っていたマシンは, パッケージの選択を面倒に思ったのかフルインストールされていたのだが, どんなパッケージでも闇雲にインストールしてしまうのはダメだという例になった.

0 件のコメント:

コメントを投稿