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

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



こうもとです。

「Keni Matsuda」さんの書かれた、
「[debian-users:49003] Re: tcshがセグメンテーション違反」についての返事です。

 幸か不幸か、再現してしまいました。
 今度は、別のマシンで再現させる方法も確立できました。

 まず結論から書きますと、.historyの読み込み時に落ちています。
 その、落ちる.historyは添付します(文字は置換しています)。
 そのときの、straceの結果も添付します。


> 4. 過去コマンドヒストリーで何か ASCII 以外の文字をコマンド文字列
>    で指定していないか

 これ、非常に重要でした。


> 5. tcsh の実行前に指定する LANG と、tcsh を実行して tcsh のセッション
>    に入った後で実行する setenv LANG の値の組合せを変えてテスト
>    してみるとどうなるか

 .historyをリネームすればば落ちず、戻せば落ちるので、履歴を読み込む
ときのLANG指定が問題とみてよいと思いました。
 なので、これは試しませんでした。


> 6. strace でシステムコールを追ってみてどこで落ちるかみてみる

 今度は、いつでも再現する環境が整ったので、とりました。
 とても長いので、落ちているところだけ。

alarm(0)                                = 0
rt_sigprocmask(SIG_SETMASK, NULL, [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [INT], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, NULL, [INT], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
read(6, "\370\243\370\243\370\243\370\243\370", 9) = 9
read(6, "\n", 1)                        = 1
read(6, "#", 1)                         = 1
read(6, "+", 1)                         = 1
read(6, "1", 1)                         = 1
read(6, "1", 1)                         = 1
read(6, "9", 1)                         = 1
read(6, "0", 1)                         = 1
alarm(0)                                = 0
rt_sigprocmask(SIG_SETMASK, NULL, [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [INT], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, NULL, [INT], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++
Process 11366 detached


----------------------------------------------------------------------
河本陽一(こうもとよういち)
mailto:youichi@xxxxxxxxxxxxxx

Attachment: tcshbug.tgz
Description: Binary data