[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:48997] tcshがセグメンテーション違反



いっつです。

 Debian etchで、tcshを実行するとセグメンテーション違反で落ちていま
した(過去形)。
 今までに何度も起きていたのですが、調査しながらメールを書いていたら、
なぜか再現しなくなってしまいました。
 せっかくなので、一応報告しておきます。

 デフォルトシェルをtcshにしていたので、ログインできなくなって焦りま
したが、いろいろと調べていくうちに、tcshを実行したときに落ちることが
わかりました。
 そこで、coreファイルを出力させるようにして、gdbで読んでみました。

$ which tcsh
/usr/bin/tcsh
$ ulimit -c unlimited
$ tcsh
セグメンテーション違反です (core dumped)
$ gdb /usr/bin/tcsh core
GNU gdb 6.4.90-debian
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i486-linux-gnu"...(no debugging symbols found)
Using host libthread_db library "/lib/tls/i686/cmov/libthread_db.so.1".


warning: Can't read pathname for load map: 入力/出力エラーです.
Reading symbols from /lib/libncurses.so.5...(no debugging symbols found)...done.
Loaded symbols for /lib/libncurses.so.5
Reading symbols from /lib/tls/i686/cmov/libcrypt.so.1...(no debugging symbols found)...done.
Loaded symbols for /lib/tls/i686/cmov/libcrypt.so.1
Reading symbols from /lib/tls/i686/cmov/libc.so.6...
(no debugging symbols found)...done.
Loaded symbols for /lib/tls/i686/cmov/libc.so.6
Reading symbols from /lib/tls/i686/cmov/libdl.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib/tls/i686/cmov/libdl.so.2
Reading symbols from /lib/ld-linux.so.2...
(no debugging symbols found)...done.
Loaded symbols for /lib/ld-linux.so.2
Reading symbols from /usr/lib/gconv/EUC-JP.so...(no debugging symbols found)...done.
Loaded symbols for /usr/lib/gconv/EUC-JP.so
Reading symbols from /usr/lib/gconv/libJIS.so...
(no debugging symbols found)...done.
Loaded symbols for /usr/lib/gconv/libJIS.so
Reading symbols from /lib/tls/i686/cmov/libnss_compat.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib/tls/i686/cmov/libnss_compat.so.2
Reading symbols from /lib/tls/i686/cmov/libnsl.so.1...
(no debugging symbols found)...done.
Loaded symbols for /lib/tls/i686/cmov/libnsl.so.1
Reading symbols from /lib/tls/i686/cmov/libnss_nis.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib/tls/i686/cmov/libnss_nis.so.2
Reading symbols from /lib/tls/i686/cmov/libnss_files.so.2...
(no debugging symbols found)...done.
Loaded symbols for /lib/tls/i686/cmov/libnss_files.so.2
Reading symbols from /lib/tls/i686/cmov/libnss_dns.so.2...(no debugging symbols found)...done.
Loaded symbols for /lib/tls/i686/cmov/libnss_dns.so.2
Reading symbols from /lib/tls/i686/cmov/libresolv.so.2...
(no debugging symbols found)...done.
Loaded symbols for /lib/tls/i686/cmov/libresolv.so.2
(no debugging symbols found)
Core was generated by `-csh'.
Program terminated with signal 11, Segmentation fault.
#0  0x080603e0 in ?? ()
(gdb) quit

 なにやら「EUC-JP」とあり、環境変数の「LANG=ja_JP.EUC-JP」との関連
が気になり、これを変えてみることにしました。

$ export LANG=C
$ tcsh
> 

 落ちなくなりました。
 環境変数の問題かと思い、EUC-JPに設定してみました。

> setenv LANG ja_JP.EUC-JP
> 

 さすがにそれだけで落ちることはありませんでしたが、ログアウト(bash
にもどる)すると落ちました。

> exit
Segmentation fault (core dumped)
$ 

 今度は、「LANG=C」のまま抜けてみます。

$ tcsh
> exit
$ 

 正常です。
 やはり環境変数かと思い、EUC-JPに設定すると・・・

$ tcsh
> setenv LANG ja_JP.EUC-JP
> exit
$ 

 正常に終わってしまいました。
 この状態で、デフォルトシェルをtcshに変更すると、正常にログインでき
るようになりました。
 なんだかよくわからないまま直ってしまい、ちょっと気になります。
 ちなみに、tcshで落ちていたときも、rootでは「LANG=ja_JP.EUC-JP」の
ままでも、tcshが正常に実行できていました。

 再現しなくなったので追加調査はできませんが、ファイルの状態とかは変
えていないのでその辺を調べてみることはできます。
 また、今後再現するようになったときに追加調査できるので、そのときに
調べたらよいことなどあればやってみます。


----------------------------------------------------------------------
河本陽一(ハンドル名:いっつ)
mailto:youichi@xxxxxxxxxxxxxx
http://www.plumfield.jp/~youichi/
http://www.plumfield.jp/~youichi/LordMonarch/ (ロードモナークいろいろ)
http://www.plumfield.jp/~youichi/wallpaper/ (壁紙ゲッチュ)