パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

Windows 11 22H2、Delphi/C++Builder製アプリが日本語変換時にクラッシュ」記事へのコメント

  • by Anonymous Coward

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

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

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

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

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

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

    • by Anonymous Coward on 2022年10月18日 18時33分 (#4346044)

      知る必要もないのに浮動小数点例外を有効にするやつがいることにちょっとびっくり。(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

        無効だと try catch で浮動小数点数例外補足できないじゃん

犯人はmoriwaka -- Anonymous Coward

処理中...