Windows 11 22H2 の新しいMicrosoft IME によって既存のVCL アプリケーションがクラッシュする
対象となるWindowsのバージョン
- Windows 11 (22H2)
問題
Windows 11の最新バージョン(22H2)では、新しいMicrosoft IMEに対していくつかの機能変更が加えられており、IMEの変更によって、古いバージョンまでさかのぼるとDelphi 7 から最新リリースの RAD Studio 11.2 を含む既存の VCL アプリケーションに大きな影響を与え、アプリケーションがクラッシュする症状が報告されております。
アプリケーションがクラッシュした際、デバッガでは以下のようなエラーメッセージが表示される場合があります。
32ビットの場合:
プロジェクト Project1.exe は例外クラス $C0000090 (メッセージ 'floating point invalid operation at 0x6de1a449')を送出しました。
64ビットの場合:
プロジェクト Project1.exe は例外クラス $C0000090 (メッセージ 'c0000090 FLOAT_INVALID_OPERATION')を送出しました。
この例外が発生した後、それ以降、処理が継続できないためアプリケーションは強制終了いたします。
なお、アプリケーションがリリースモードの際は、上記の例外エラーは表示されず、アプリケーション自体が日本語入力時にクラッシュし、強制終了いたします。
解決
この問題は、Delphi/C++Builder/RAD StudioでビルドしたほとんどのVCLアプリケーションで発生いたします。
(FMXアプリケーションは影響ありません)
もしお客様のアプリケーションで影響を受けるようであれば、以下のいずれかの方法によって、Windows 11の設定を変更することで回避できます。
- 以前のバージョンの Microsoft IME を使う (詳しくは、こちらを参照)
- [プライバシーとセキュリティ | 診断とフィードバック | オプションの診断データを送信する] のチェックボックスを外す
2022年12月5日 追記
2022年11月29日にリリースされたWindows 11 (22H2) KB5020044で、本件は修正済みです。
2022年12月15日 追記
2022年12月13日にリリースされたWindows 11 22H2 向け累積更新プログラム KB5021255 (OS ビルド 22621.963)は、KB5020044を含んでおり、 このアップデートを適用することで、本件は改善されます。