Re: vi中に固まるのですが


To teraterm-ml@phys.s.u-tokyo.ac.jp
From osamu <ogawaosm@bs.mmk.fst.pb.nttdata.co.jp>
Date Wed, 17 Jan 2001 17:15:53 +0900
Delivered-To teraterm-ml@phys.s.u-tokyo.ac.jp
In-Reply-To <01cb01c08056$6a3f25c0$d204a8c0@sakurachan.org >
Old-Return-Path <ogawaosm@bs.mmk.fst.pb.nttdata.co.jp>
References <3A6542FF10E.2FBFOGAWAOSM@mail.bs.mmk.fst.pb.nttdata.co.jp > <01cb01c08056$6a3f25c0$d204a8c0@sakurachan.org >
Reply-To teraterm-ml@phys.s.u-tokyo.ac.jp
Resent-Date Wed, 17 Jan 2001 17:14:15 +0900 (JST)
Resent-From teraterm-ml@nucl.phys.s.u-tokyo.ac.jp
Resent-Message-ID <"6TZ4aaI1jE1.0.rg3.JHLPw"@tkynx0.phys.s.u-tokyo.ac.jp>
Resent-Sender teraterm-ml-request@nucl.phys.s.u-tokyo.ac.jp


早速のご返事ありがとうございます

> > teratermでtelnetでログインして
> > vi XXX
> > を行い、i(インサートモード)中にALT+BでBREAK信号を誤って送出してしまうと
> > 固まってしまうのですがなぜでしょうか?
> > この現象は毎回必ず発生します
> >
> > 今現在はこの現象発生時、CNTL+Zでしばらくまてばviを抜けられるのですが
> > ALT+Bを送出しても固まる状態を起こさない方法はないのでしょうか?
> 
> Solaris 標準の vi はよく知らないのですが,
> ブレーク信号で vi の何らかの機能が呼び出されるのではないでしょうか?
> なんだか DoS アタックのように大量にホストからデータが送信されてきます.
> 固まったように見えるのはそのせいです.
> 
> 他の OS の vi や自分で make した vim では起きません.

わかりました

そうですね、確かに、Solaris環境でもviのそれもINSERTモード時にしか
発生しないのだからviの問題であってこのメーリングリストに出すのはおかしな
話ですね。
これ以上質問するのはメーリングリストの趣旨からは
かけ離れてしまう事になりますので書こうかどうか悩みましたが一応
viのmanを見ると異常終了するとありますので、マニュアルどおりならば
core(かどうかわかりませんが)してくれるのが正解のような気がしますが
他のOSではどうなるのでしょうね?単純にエラーリターンですか?

以下man viの抜粋です

【コマンド概要】
  [vi のモード]
     コマンド               標準モードおよび初期モードです。他 の
                    モー ドは完了すると、このコマンドモードへ戻り
                    ます。コマンドの入力を中断するには ESC( エ ス
                    ケープ ) を使用します。

     入力               a A i I o O c C s S R のいずれかを入力 す
                    る と、任意のテキストを入力できます。入力モー
                    ドの終了は、通常、 ESC 文字で行います。 し か
                    し、割り込みでも異常終了できます。
                    
となっています

ttyの設定もついでに載せてしまいます

speed 38400 baud;
行数 = 26; 桁数 = 80; 縦方向ピクセル数 = 0; 横方向ピクセル数 = 0;
eucw 1:0:0:0, scrw 1:0:0:0
intr = ^c; quit = ^\; erase = ^h; kill = ^u;
eof = ^d; eol = <undef>; eol2 = <undef>; swtch = <undef>;
start = ^q; stop = ^s; susp = ^z; dsusp = ^y;
rprnt = ^r; flush = ^o; werase = ^w; lnext = ^v;
-parenb -parodd cs8 -cstopb -hupcl cread -clocal -loblk -crtscts -crtsxoff 
-pare
xt
-ignbrk brkint ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl -iuclc
ixon -ixany -ixoff imaxbel
isig icanon -xcase echo echoe echok -echonl -noflsh
-tostop echoctl -echoprt echoke -defecho -flusho -pendin iexten
opost -olcuc onlcr -ocrnl -onocr -onlret -ofill -ofdel tab3

Partial thread listing: