パスワードを忘れた? アカウント作成
15825449 story
Windows

Windows 11 22H2、Delphi/C++Builder製アプリが日本語変換時にクラッシュ 73

ストーリー by nagazou
IME関係のトラブル多いなあ 部門より
Windows 11の最新バージョン「22H2」では、日本語入力システム(IME)にいくつかの機能変更が加えられているが、その影響により複数のトラブルが発生しているようだ。窓の杜の記事によれば、「Delphi」「C++Builder」「RAD Studio」で作成されたアプリケーションでクラッシュする症状が報告されているという(窓の杜)。

窓の杜の記事によれば、2002年リリースの「Delphi 7」から最新の「RAD Studio 11.2 Alexandria」までの、幅広いバージョンに影響するという。この問題により、テキストエディター「TeraPad」や「Mery」、クリップボード履歴ツール「Clibor」に影響が出ているとしている。当面の対策としては旧バージョンの「Microsoft IME」に戻すか、[オプションの診断データを送信する]オプションを無効化する方法をEmbarcadero Technologiesは案内しているとのこと(Embarcadero Technologies)。
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by Anonymous Coward on 2022年10月18日 17時48分 (#4345996)

    今回の不具合はこんなプロセスみたい。

    1) 新しいIMEでON/OFF時に浮動小数点例外が発生する
      診断データの送信をONにすると発生するので、診断データの生成時に何らかの計算をして発生してる?

    2) IME側で浮動小数点例外処理を行ってないので呼び出してるアプリで浮動小数点例外が発生する

    3) Delphi/C++Builder は浮動小数点例外がデフォルトで有効になってる
      VC++は浮動小数点例外がデフォルトで無効になってる

    4) 想定外(UI)のところで浮動小数点例外が発生するのでアプリが落ちる

    Delphi/C++Builderのアプリは(使ってないなら)浮動小数点例外を無効にすれば大丈夫。
    使用するVCLによっては勝手に浮動小数点例外を無効にするので不具合が発生しない。
    (↓をしないと浮動小数点例外処理が動かなくなるという副作用がある)
    使ってる場合は計算で発生する部分だけピンポイントで浮動小数点例外を有効にするとかしないといけない。

    • 診断データの生成で死んだん
      // 言っとけ
      親コメント
    • by Anonymous Coward

      知る必要もないのに浮動小数点例外を有効にするやつがいることにちょっとびっくり。(Delphi/C++Builderが悪い)

      浮動小数点例外っていっても、IEEE754のやつだったら要因はいろいろあるけど、Invalid Operationが起きてるのか?
      ふつうNaNを伝搬させるからいいだろとか思ってるとこうなるわけかな?

      しかし3)のDelphi/C++Builderは浮動小数点例外がデフォルトで有効っていっても、InexactだのUnderflowだのはOFFになってるよね? めんどくさすぎだろ。

      • by Anonymous Coward

        浮動小数点例外といえばPC-9801シリーズ用Windows95

        トラップ部分にバグがあり、たとえば -1の平方根を取るとブルースクリーン(PC-9801用はハードウェアの仕様の都合で青くないのだが)になる。
        Windows98では浮動小数点例外のダイアログボックスが出るだけで落ちなくなった。

    • by Anonymous Coward
      1) 新しいIMEでON/OFF時に浮動小数点例外が発生する

      IEEE Doubleのデフォルトに合わせてプログラム側でチェックさせたほうがいいと思う。

      # rustはそうなってる

    • by Anonymous Coward

      スラド民は、インストールしてすぐに、プライバシー重視側設定にして、
      診断データとか取得しない・送らない設定にしてそう

      多くの大企業も、プライバシー重視設定にしてるはず

  • by tamaco (19059) on 2022年10月18日 12時29分 (#4345740)

    コンパイラ依存で排除できるようOSを改変したとは思いたくないが

    Microsoft Visual StudioとVisual Studio Codeの世界にようこそ

    • by Anonymous Coward

      vclだったかなんだか使用ライブラリと11がカチ合ってるみたいっすよ

      • by Anonymous Coward

        VCLはちょくちょくなにかとぶつかる記憶あるなぁ…

    • by Anonymous Coward

      Embarcadero RAD Studio 英語のWikipedia に項目作られてない。
      日本語版で動作確認はWindows10になっているし。
      悲しいな。
      客でも何でもないけど。

    • by Anonymous Coward

      浮動小数点例外を利用しているアプリは駄目らしいよ。

      • Re:あたらしいな (スコア:5, 参考になる)

        by Anonymous Coward on 2022年10月18日 16時45分 (#4345943)

        VC++でも浮動小数点例外を利用していると落ちるという……

        こんな低次元で再現率100%の不具合とか
        ちゃんとテストしてるのか?とか言いたくなる。

        親コメント
        • by Anonymous Coward on 2022年10月19日 14時36分 (#4346527)

          ちゃんとテストしてるのか?とか言いたくなる。

          テストした結果不具合が発覚したのですよ

          # 本リリース=テストみたいな

          親コメント
  • by mars12 (28939) on 2022年10月18日 12時29分 (#4345742) 日記

    最初からGoogle日本語入力かATOK買収していれとけば。
    最近トラブルばっかりだね > MS IME

    • by Anonymous Coward

      選択肢が減るだけだからそういう発想マジ害悪。
      それらを使ってる人は現状でも何も困ってないし。

    • by Anonymous Coward

      少し前にはATOKもテキスト入力フレームワーク周りで不具合起こしていたはず。

      • by Anonymous Coward on 2022年10月18日 14時02分 (#4345821)

        しばらく前から FireFox + ATOK の組み合わせで使っていると
        なにかの拍子にリモートプロシージャコールが暴走して
        OS巻き込んで固まるという現象があるけど
        対象者が少なすぎてさほど問題になってないという。
        #FireFoxに accessibility.force_disabled = 1 の呪文を唱えると幸せになれるらしい

        親コメント
    • by Anonymous Coward

      IMEはマジに国費を入れてもまともなのが選べるようにしないとやばいと思う。

    • by Anonymous Coward

      もうかなり変わってるだろうけど、今のMS IMEのベースはエー・アイ・ソフトのWX3ですよ。元にしたのが何だろうが、そこから何十年もかけていろいろ手を加えていったら同じような結果になる。

      • by Anonymous Coward

        WX2ですね。DOS版MS-IMEの頃は辞書をダンプするとWX2の文字が残ってました。

        • by Anonymous Coward

          なんかWin95の時点でWX3ベースに切り替えたらしいです。ダンプは取ってないので未確認だけど。

          • by Anonymous Coward

            辞書のフォーマットが同じなのか、辞書データがインポート・エクスポートすることなく流用できた、と聞きます。

          • by Anonymous Coward

            MS IMEは今はもうWXシリーズとは無関係なものになってそうな気がする
            まともに文節変換出来ないし

            • by Anonymous Coward

              WX-Gってあったけどいつの間にか消失

              (⁠*⁠´⁠ω⁠`⁠*⁠)

    • by Anonymous Coward

      MS IMEはそんなダメじゃ無くね?
      標準だからずっと使ってるけど、そんな大きな問題を感じたことはないよ。

      一方でiOSのIME、お前はダメだ。
      何度直しても変なところで区切ったりカタカナになったりするし、お前は何とかせえよ。

      • by Anonymous Coward

        MS IMEは旧バージョンは良いんだよ
        新バージョンが相当挙動変えてしまっていて
        今回のような問題を起こしてる
        新バージョンが導入されて2年ぐらい経ってる筈なんだけど
        未だに改善しきれてない
        苦肉の策で旧バージョンに戻す設定項目追加して
        対応終わりという感じになってる

        • by Anonymous Coward

          え? MS-IMEは昔からひどいでしょ。

          すみません。新しいバージョンを使ったら、たしかにもっとひどくなってました。
          って、15年くらい前にも言ったことがある。
          2年前のもたしかにそうだし、旧バージョンに戻す機能があって助かった。

    • by Anonymous Coward

      ATOKはともかくGoogle IMEはMS IMEより後じゃん。

    • by Anonymous Coward

      Google日本語入力もパフォーマンスダウンの挙動に遭遇したことあるし、ATOKなんてOSバージョンアップのたびにパッチが必要なほど不具合連発してるんだが。

  • by Anonymous Coward on 2022年10月18日 12時50分 (#4345756)

    「オプションの診断データを送信する」をオフにすれば収まるって事はユーザの行動情報収集用の処理でホストアプリを巻き込んで落ちてる訳か。
    余計なことの為になんてことを。

    • by Anonymous Coward on 2022年10月18日 13時05分 (#4345771)

      Embarcadero Technologiesの説明見た感じ、Windowsのコンポーネントが想定外の挙動してVCLのコンポーネントが処理できず例外吐いて
      そんなの想定してないアプリがcatchしてなくて死ぬみたいな流れかなあ。

      親コメント
      • by Anonymous Coward

        ライブラリが元々投げることになっている例外はすべて掴むべき。絵投げてきた理由が間違ってる?知らん。

        • by Anonymous Coward

          OSのAPIが例外を投げているのだし発生するタイミングもプログラム対象外じゃない?

          • by Anonymous Coward

            例外投げてるのはOSではなくVCL。その理由がOS側APIの挙動が変わったせい。APIの挙動がVCL側が想定していないものだったようなので「ライブラリが元々投げることになっている例外すべて掴む」で対処可能かどうかは疑わしい。

        • by Anonymous Coward

          Win32 APIはそう簡単に例外投げない。出るのはNULLとHRESULTと不具合。

          • by Anonymous Coward

            C言語(C++ではない)向けのインターフェースなんだから例外を投げるわけがない。

            • by Anonymous Coward on 2022年10月18日 21時40分 (#4346171)

              WindowsはOSレベルで構造化例外処理 [microsoft.com]をサポートしてる
              エラーの時に例外を投げるよう指示できるAPIもある


              メモリ割り当て方法の比較 [microsoft.com]

              GlobalAlloc、LocalAlloc、HeapAlloc 関数は最終的に同じヒープからメモリを割り当てますが、それぞれ少し異なる機能セットを提供します。 たとえば、メモリを割り当てられなかった場合に例外を発生するように HeapAlloc に指示できます。

              親コメント
            • by Anonymous Coward

              というか例外の実装って処理系によってけっこう違うから、OSをどのような言語で書こうがプロセス側で例外を受け取るのは難しい。JavaVMや.NETランタイム内とかだと例外の実装も決められてるので言語をまたいで扱えるけどね。

    • by Anonymous Coward

      ほんそれ。
      ワクチンの副作用で死ぬ、みたいな。
      いや、検診で病気になる、か。
      でも悪いことにこっちは再現率は100%

  • by Anonymous Coward on 2022年10月18日 17時56分 (#4346006)

    https://qiita.com/ht_deko/items/d572f0b965e21c8125f4#-microsoft-%E3%81... [qiita.com]
    そのうち22H2にもバックポートされるかな

  • by Anonymous Coward on 2022年10月18日 12時04分 (#4345725)

    Delphi で作っていたような気がする

    • by Anonymous Coward

      2面ファイラーのあふwもDelphiだったような。

  • by Anonymous Coward on 2022年10月18日 12時19分 (#4345731)

    WXにしておけと...

    • by Anonymous Coward

      まだあるの?
      # Wnn(の流れのもの)はまだある らしい

  • by Anonymous Coward on 2022年10月18日 12時25分 (#4345736)

    ときメモのために互換性を維持するなんてevilな所業を行っていた
    Microsoftはもういないんだな

  • by Anonymous Coward on 2022年10月18日 12時29分 (#4345741)

    Edge上で日本語入力してる時にも時々クラッシュしますよね。
    クラッシュするのはIMEの方で別ウインドウに切り替えて戻れば再起動するので大分マシですけども。

  • なんで今頃アップデートされたのかと思ったらこの対策だったのか。
    https://forest.watch.impress.co.jp/docs/news/1447895.html [impress.co.jp]

typodupeerror

にわかな奴ほど語りたがる -- あるハッカー

読み込み中...