問題タブ [sigfpe]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - C ++ std ::unordered_setSIGFPE例外
私はプログラムを作成しましたが、それを何十回も実行したという事実に非常に面白がっています。複数の実行の結果を書き留めたことがありますが、現在は機能しません。
私は凧として高いと思うかもしれませんし、単にいくつかの行を変更したかもしれないと思うかもしれませんが、プログラムで変更を加えたことを本当に覚えていません。
問題はSIGFPE
、入力に応じて、プログラムのさまざまな実行で発生するです。に値を挿入しているstd::unordered_set<Point<T> *>
ときに信号が発生しても発生します。
これが私がそのような挿入を行うコードの抜粋です:
valgrindの出力の重要なセクションは次のとおりです。
ここでの問題は、プログラムにゼロ除算が発生する可能性のある計算があるため、これらはこのプロセスに直接関係していませんが、挿入によってバグが隠されている可能性はありますか?または、ポインタを挿入するときに追加の処理を行う必要がありstd::unordered_set<T>
ますか?
私はの下x86_64 GNU/Linux
でプログラムをコンパイルしていて、を使用してg++ (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
います。
c++ - C/C++ ハンドラ SIGFPE は何をしますか?
さて、私は SIGFPE に関する記事を検索し、いくつかのテストを書きましたが、動作が奇妙です。次に、助けを求めるためにここに投稿する必要があります。GCC/G++ または ISO C++ は、ゼロで除算するとどうなるかを明確に定義していますか?
1) 記事を検索しました: Division by zero does not throw SIGFPE it sames the output is inf
2)次のように書き直すと:
その場合、signal_handler は発生しません。しかし、行のコメントを外すと
その後、signal_handler は呼び出しを続けます。
誰かがそれを説明できますか?
c - gdb で SIGFPE 例外を含むプログラムの動作が異なる
gdb を使用してデバッグした場合とそうでない場合で、動作が異なる単純な C プログラムがあります。プログラムは次のとおりです。
単独で実行すると、次の非常に奇妙な結果が得られます。
エラーなし!これは、シグナルが発せられていないということではありません。
GDB では、状況が異なります。
GDBに停止しないように依頼しても違いはありません
どうしたの?!1 つには、SIGFPE がプログラムを強制終了しないのはなぜですか。次に、GDB の動作が異なるのはなぜですか?
アップデート。考えられることの 1 つは、子プロセスが親プロセスのシグナル マスクを継承していることです。 しかし、このトランスクリプトに見られるように、明らかにそうではありません。 この分析は正しくありませんでした。以下を参照してください。
更新 2.私の友人は、trap が親プロセスではなく、シェル自体によって設定されたシグナルのみを報告することを指摘しています。そこで、すべての親の無視マスクを追跡したところ、見よ、rxvt-unicode には SIGFPE がマスクされていました。友人は、rxvt-unicode を使用して実行可能ファイルを実行すると、再現できることを確認しました。
c - 非ゼロ除算の SIGFPE を使用したコア ダンプ
qemu-kvm プロセスが疑わしい SIGFPE でコアダンプされています。
elapsed_time
は(以下のgdbdouble
出力の値) でNANOSECONDS_PER_SECOND
、マクロは次のとおりです。
SIGFPE を引き起こす理由が思いつきません。どんな手掛かり?
シナリオ: RHEL-6.5 をホストとして使用し、Windows ゲストを起動しようとしています。同じコマンドで着実に再現可能です。
完全なバックトレース:
divsd
では、この指示のどこが間違っているのでしょうか? それをデバッグする方法について何か提案はありますか?
自分で答えてください:これは mxcsr を誤って誤った値に設定するカーネルのバグです。ビットが適切にマスクされていない場合、Linux カーネルは SIGFPE コード INEXACT をトリガーします。
c++ - C ++でのSIGFPEの誤指示
次のプログラムの奇妙な動作を理解しようとしています。明らかに、グローバル変数「bug」の定義中にオーバーフローが発生しますが、プログラムは無害な計算 1.0+2.0 中に浮動小数点例外をスローします。
g ++とclang ++の両方でコンパイルしようとしましたが、両方で同じ出力が得られました
c++ - SIGFPE シェナニガン
同じ計算を 2 回繰り返していますが、一方では浮動小数点例外が発生し、他方ではそうではありません。
g ++とclang ++の両方でテストしたところ、両方で次の出力が得られました
どうしたの?
c++ - double 型の変数に値を割り当てることによって発生する浮動小数点例外
プログラムは、シグナル SIGFPE、算術例外を受け取りました。xxx::init (this=0xbffe47fc, aa=0x0) at s.cc:1061 1061 価格 = 100.0;
別の Linux マシン RH5.6 32 ビットでコードを変更せずにコンパイルして実行しようとしましたが、このアプリケーションの所有者は RH5.3 で問題なくコンパイルしました。
gdb bt
B::初期化
b_init
B::B
あ::あ
主要
ここにコードがあります
私にはとても普通に見えます。誰かがそれにいくつかの光を当てることができますか? ありがとう!
linux - SIGFPE シグナルが終了せず、コア ファイルが生成されない
UNIX の高度なプログラミング ドキュメントによると、SIGFPE シグナルはプログラムを終了し、コア ファイルを生成します。
これが私のプログラムです
このプログラムを Linux マシンで実行すると、「SIGFPE signal catch」が繰り返し出力され、終了しません。サンプル出力は
何が問題ですか?