チケット #45763

/dev/urandomを表示するとクラッシュする

登録: 2022-10-03 14:11 最終更新: 2022-12-13 23:34

報告者:
担当者:
チケットの種類:
状況:
完了
コンポーネント:
マイルストーン:
優先度:
5 - 中
重要度:
5 - 中
解決法:
修正済み
ファイル:
4
投票
点数: 0
No votes
0.0% (0/0)
0.0% (0/0)

詳細

Tera Term 5 alpha 1で Linuxへ接続し cat /dev/urandom すると Tera Termがクラッシュします。 TelnetでもSSHでもクラッシュします。 クラッシュしたとき、下記メッセージがポップアップしてきました。

Tera Term: Application Fault

eax=0352AFFC ebx=00000000 ecx=00000000 edx=FFFFFFFF
esi=0352AFFC edi=00000000
ebp=00F3E9D0 esp-00F3E9D0 eip=0041AF5C efi=00010212
cs=0023 ss=002B ds=002B ed=002B fs=0053 gs=002B
Exception: ACCESS_VIOLATION
#1 0x0041af5c in ReadKeyboardCnfExe() + 0xbb6c at C:\Program Files (x86)\teraterm5\ttermpro.exe

チケットの履歴 (18 件中 3 件表示)

2022-10-03 14:11 更新者: tanny
  • 新しいチケット "/dev/urandomを表示するとクラッシュする" が作成されました
2022-10-03 14:51 更新者: tanny
コメント

受信文字コードをUTF-8にして、下記の7バイトを表示すると必ずクラシュするとわかりました

% od -tx1c output
0000000  ba  d1  9b  65  63  cc  bb
        272 321 233   e   c 314 273
0000007%

2022-10-04 00:12 更新者: zmatsuo
コメント

手もとの最新版では再現しませんでした。

これまでのバグ修正で対応済みかもしれません。

snapshottrunk r10294 を 置きました。

再現するか見ていただけないでしょうか。

2022-10-04 10:58 更新者: tanny
コメント

trunk r10294 を置きました。 再現するか見ていただけないでしょうか。

はい、今やりました。再現します。死ぬ場所は変わって、3回中3回全て ACCESS_VIOLATION 0x0029464c in replaceInvalidFileNameChar()でした。 %PROFILE%\AppData\Local\teraterm5にダンプがあるとわかったので添付しました。

2022-10-04 13:41 更新者: tanny
  • 添付ファイル teraterm_r10294_20221004-133937.dmp (File ID: 10456) が付加されました
2022-10-04 13:43 更新者: tanny
コメント

r10294ttermpro.exe /KR=UTF8 /LA=U /R=outputで接続せず再現できました。outputとその時のダンプを添付しました。

(編集済, 2022-10-04 13:54 更新者: tanny)
2022-10-04 13:54 更新者: tanny
  • 添付ファイル teraterm_r10294_20221004-133937.dmp (File ID: 10456) が削除されました
2022-10-04 21:26 更新者: nmaya
コメント

再現用ファイルありがとうございます。

To: zmatsuo

BuffGetDrawInfoW() の

bufW[lenW+i] = b->pCombinationChars16[i];
のところで落ちるようです。

2022-10-04 23:23 更新者: zmatsuo
コメント

調査ありがとうございます。

手もとでも再現しました(内容は同じです)。

echo -e "\xba\xd1\x9b\x65\x63\xcc\xbb"
r10295 で修正しました。

snapshotr10295のzip を 置きました。

ba d1 9b 65 が不正な UTF-8 4byte で 1byteづつ処理されて、9b が 1b(ESC) として処理、 63 が見切れてなくて(1b+65ではなく、1b+63?)、 このあたりで画面が消去されて、 カーソルがバッファの先頭に移動します。

最後の cc bb が UTF-8 2byte で U+033b の結合文字で、 カーソル位置の1つ前から再表示しようとして バッファ外を指してしまい例外が発生していました。

コンパイラのバージョン、バイナリの32/64bitでクラッシュしたりしなかったりするような気配です。

cat /dev/urandom で少しの間動かしてみましたが一応大丈夫そうでした。

2022-10-04 23:24 更新者: zmatsuo
  • 担当者(未割り当て) から zmatsuo に更新されました
  • マイルストーン(未割り当て) から Tera Term 5.0 beta1 (完了済み) に更新されました
2022-10-05 00:51 更新者: zmatsuo
コメント

Tera Term 起動、ホスト接続直後など、バッファがスクロールしていない状態で、

echo -e "\x1b[H\xcc\xbb"
左上にカーソルを戻して U+033b(結合文字)とすると、r10294 でクラッシュの再現ができました。

r10295 だとクラッシュしません。

(編集済, 2022-10-05 00:52 更新者: zmatsuo)
2022-11-09 00:22 更新者: zmatsuo
コメント

TERATERM.INI で、プリンタ関連のシーケンスを使用しない状態(PrinterCtrlSequence=off)にして、 ずっとcat /dev/urandom を続けていると別の原因でクラッシュしました。

手もとではクラッシュしない状態になりました。

もう少しテストしてコミットしようと思います。

2022-11-09 23:39 更新者: zmatsuo
コメント

修正をコミットしました。r10354です。

スナップショットを作りました。

https://osdn.net/projects/ttssh2/storage/snapshot/teraterm-5.0-alpha1-r10354-20221109-appveyor.zip

2022-12-13 23:34 更新者: zmatsuo
  • 状況オープン から 完了 に更新されました
  • 解決法なし から 修正済み に更新されました
コメント

クローズします。

添付ファイルリスト

編集

ログインしていません。ログインしていない状態では、コメントに記載者の記録が残りません。 » ログインする