Windows 8.1環境のマルチディスプレイ間のウィンドウ移動時にTeraTermが強制終了する
TeraTerm Version: 4.104(SVN# 8043)
Windows Version: Windows 8.1 Pro
Windows 8.1環境にて、TeraTermメインウィンドウをマルチディスプレイ間の移動を行うと強制終了します。
Ver 4.102 では発生せず、Ver 4.103 で発生するようになりました。
デバッグ環境があるので確認してみたところ、
vtwin.cpp 内の LRESULT CVTWindow::OnDpiChanged(WPARAM wp, LPARAM) の pAdjustWindowRectExForDpi(&Rect, Style, TRUE/*menu*/, ExStyle, NewDPI);
で落ちていました。
AdjustWindowRectExForDpi() は Windows 10 1607 以降で実装された関数ですが、 Windows 8.1 環境で WM_DPICHANGED メッセージが飛んでくると、呼べずに落ちているようです(pAdjustWindowRectExForDpiがNULLになってます)
以下、トレースログです。
--------------------------- Tera Term: Application fault --------------------------- eax=00000310 ebx=00A597B4 ecx=14EF0000 edx=00A5957C esi=000002E0 edi=00BC4310 ebp=00A595F0 esp=00A59518 eip=00000000 efl=00010202 cs=0023 ss=002B ds=002B es=002B fs=0053 gs=002B Exception: ACCESS_VIOLATION #1 0x00000000 in --- at <Unknown Module> #2 0x00c107a6 in CVTWindow::OnDpiChanged() + 0x126 at ***\Debug\ttermpro.exe ***\teraterm\teraterm\vtwin.cpp:6339 #3 0x00c11343 in CVTWindow::Proc() + 0x7b3 at ***\Debug\ttermpro.exe ***\teraterm\teraterm\vtwin.cpp:6620 #4 0x00bc4358 in TTCFrameWnd::ProcStub() + 0x48 at ***\Debug\ttermpro.exe ***\\teraterm\common\tmfc_frame.cpp:102 #5 0x74f28e71 in CallNextHookEx() + 0xb1 at C:\Windows\SYSTEM32\USER32.dll --------------------------- OK ---------------------------
修正が完了しました。次のリリースに反映されています。
詳細な報告ありがとうございました。
Tera Term 4.105 で修正されました。
TeraTerm Version: 4.104(SVN# 8043)
Windows Version: Windows 8.1 Pro
Windows 8.1環境にて、TeraTermメインウィンドウをマルチディスプレイ間の移動を行うと強制終了します。
Ver 4.102 では発生せず、Ver 4.103 で発生するようになりました。
デバッグ環境があるので確認してみたところ、
vtwin.cpp 内の LRESULT CVTWindow::OnDpiChanged(WPARAM wp, LPARAM) の pAdjustWindowRectExForDpi(&Rect, Style, TRUE/*menu*/, ExStyle, NewDPI);
で落ちていました。
AdjustWindowRectExForDpi() は Windows 10 1607 以降で実装された関数ですが、 Windows 8.1 環境で WM_DPICHANGED メッセージが飛んでくると、呼べずに落ちているようです(pAdjustWindowRectExForDpiがNULLになってます)
以下、トレースログです。