Ticket #45763

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

Date d'ouverture: 2022-10-03 14:11 Dernière mise à jour: 2022-12-13 23:34

Rapporteur:
Propriétaire:
Type:
État:
Atteints
Composant:
Priorité:
5 - moyen
Sévérité:
5 - moyen
Résolution:
Fixed
Fichier:
4
Vote
Score: 0
No votes
0.0% (0/0)
0.0% (0/0)

Détails

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

Ticket History (3/18 Histories)

2022-10-03 14:11 Updated by: tanny
  • New Ticket "/dev/urandomを表示するとクラッシュする" created
2022-10-03 14:51 Updated by: tanny
Commentaire

受信文字コードを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 Updated by: zmatsuo
Commentaire

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

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

snapshottrunk r10294 を 置きました。

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

2022-10-04 10:58 Updated by: tanny
Commentaire

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

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

2022-10-04 13:41 Updated by: tanny
  • File teraterm_r10294_20221004-133937.dmp (File ID: 10456) is attached
2022-10-04 13:43 Updated by: tanny
Commentaire

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

(Edited, 2022-10-04 13:54 Updated by: tanny)
2022-10-04 13:54 Updated by: tanny
  • File teraterm_r10294_20221004-133937.dmp (File ID: 10456) is deleted
2022-10-04 21:26 Updated by: nmaya
Commentaire

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

To: zmatsuo

BuffGetDrawInfoW() の

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

2022-10-04 23:23 Updated by: zmatsuo
Commentaire

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

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

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 Updated by: zmatsuo
2022-10-05 00:51 Updated by: zmatsuo
Commentaire

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

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

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

(Edited, 2022-10-05 00:52 Updated by: zmatsuo)
2022-11-09 00:22 Updated by: zmatsuo
Commentaire

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

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

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

2022-11-09 23:39 Updated by: zmatsuo
Commentaire

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

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

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

2022-12-13 23:34 Updated by: zmatsuo
  • État Update from Ouvert to Atteints
  • Résolution Update from Aucun to Fixed
Commentaire

クローズします。

Attachment File List

Modifier

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Connexion