アカウント名:
パスワード:
今回の不具合はこんなプロセスみたい。
1) 新しいIMEでON/OFF時に浮動小数点例外が発生する 診断データの送信をONにすると発生するので、診断データの生成時に何らかの計算をして発生してる?
2) IME側で浮動小数点例外処理を行ってないので呼び出してるアプリで浮動小数点例外が発生する
3) Delphi/C++Builder は浮動小数点例外がデフォルトで有効になってる VC++は浮動小数点例外がデフォルトで無効になってる
4) 想定外(UI)のところで浮動小数点例外が発生するのでアプリが落ちる
Delphi/C++Builderのアプリは(使ってないなら)浮動小数点例外を無効にすれば大丈夫。使用するVCLによっては勝手に浮動小数点例外を無効にするので不具合が発生しない。(↓をしないと浮動小数点例外処理が動かなくなるという副作用がある)使ってる場合は計算で発生する部分だけピンポイントで浮動小数点例外を有効にするとかしないといけない。
知る必要もないのに浮動小数点例外を有効にするやつがいることにちょっとびっくり。(Delphi/C++Builderが悪い)
浮動小数点例外っていっても、IEEE754のやつだったら要因はいろいろあるけど、Invalid Operationが起きてるのか?ふつうNaNを伝搬させるからいいだろとか思ってるとこうなるわけかな?
しかし3)のDelphi/C++Builderは浮動小数点例外がデフォルトで有効っていっても、InexactだのUnderflowだのはOFFになってるよね? めんどくさすぎだろ。
浮動小数点例外といえばPC-9801シリーズ用Windows95
トラップ部分にバグがあり、たとえば -1の平方根を取るとブルースクリーン(PC-9801用はハードウェアの仕様の都合で青くないのだが)になる。Windows98では浮動小数点例外のダイアログボックスが出るだけで落ちなくなった。
無効だと try catch で浮動小数点数例外補足できないじゃん
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
犯人はmoriwaka -- Anonymous Coward
問題の核心は診断データの生成かも (スコア:3, 参考になる)
今回の不具合はこんなプロセスみたい。
1) 新しいIMEでON/OFF時に浮動小数点例外が発生する
診断データの送信をONにすると発生するので、診断データの生成時に何らかの計算をして発生してる?
2) IME側で浮動小数点例外処理を行ってないので呼び出してるアプリで浮動小数点例外が発生する
3) Delphi/C++Builder は浮動小数点例外がデフォルトで有効になってる
VC++は浮動小数点例外がデフォルトで無効になってる
4) 想定外(UI)のところで浮動小数点例外が発生するのでアプリが落ちる
Delphi/C++Builderのアプリは(使ってないなら)浮動小数点例外を無効にすれば大丈夫。
使用するVCLによっては勝手に浮動小数点例外を無効にするので不具合が発生しない。
(↓をしないと浮動小数点例外処理が動かなくなるという副作用がある)
使ってる場合は計算で発生する部分だけピンポイントで浮動小数点例外を有効にするとかしないといけない。
Re:問題の核心は診断データの生成かも (スコア:0)
知る必要もないのに浮動小数点例外を有効にするやつがいることにちょっとびっくり。(Delphi/C++Builderが悪い)
浮動小数点例外っていっても、IEEE754のやつだったら要因はいろいろあるけど、Invalid Operationが起きてるのか?
ふつうNaNを伝搬させるからいいだろとか思ってるとこうなるわけかな?
しかし3)のDelphi/C++Builderは浮動小数点例外がデフォルトで有効っていっても、InexactだのUnderflowだのはOFFになってるよね? めんどくさすぎだろ。
Re: (スコア:0)
浮動小数点例外といえばPC-9801シリーズ用Windows95
トラップ部分にバグがあり、たとえば -1の平方根を取るとブルースクリーン(PC-9801用はハードウェアの仕様の都合で青くないのだが)になる。
Windows98では浮動小数点例外のダイアログボックスが出るだけで落ちなくなった。
Re: (スコア:0)
無効だと try catch で浮動小数点数例外補足できないじゃん