問題タブ [sigaction]

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.

0 投票する
2 に答える
118 参照

linux - LinuxでQt4を使用してQProcessを終了させたシグナルを特定するにはどうすればよいですか?

起動した がまたはQProcessによって外部的に終了したことを検出したい。これは、自分で起動するプロセスを作成したときに、クラッシュ (バグ) と外部干渉を区別する上で重要です。SIGKILLSIGTERM

に接続されたスロットを介して監視対象のプロセスを登録し、 (を使用して) ハンドラーQProcess::startedを設定して、を使用してプロセスのステータスを取得しようとしました。問題は、内部のカーネル データ構造をクリアすることです。ハンドラーを実装上のハンドラーに適切にチェーンしても、その pid の次の呼び出しが失敗するため、後者は子ステータスを取得できません。プロセスの状態をthroughに設定すると、通常は への呼び出しがハングするのを回避できますが、まだ修正できていないまれなケースがあります。SIGCHLDsigactionwaitpidwaitpidQProcesswaitpidQProcess::ProcessState::NotRunningQProcess::setProcessStatewaitForFinished

Qtのソースコードを変更してステータス情報をどこかに保存する以外に、これを行うためのより良い方法がないかどうか疑問に思っていました。

注:クラッシュもシグナルで終了することを知っていますSIGABRT。ここでの主な問題はSIGKILL、Linux のメモリ不足キラーがプロセスの終了の原因であると教えてくれる可能性があることです。

0 投票する
0 に答える
60 参照

multithreading - 大規模なマルチスレッドCプログラムでSEGFAULTの理由を見つける方法は?

SEGFAULT シグナルによって非常にランダムにクラッシュする Linux 組み込みシステム用のマルチスレッド プログラムを使用しています。

クラッシュは本番環境でのみ発生し、テスト中には発生しないため、gdb を使用せずに問題を見つける必要があります。

プログラムのシンボル テーブルを知っていて、メイン スレッドで sigaction() と backtrace() を使用していますが、十分な情報が得られません。バックトレースされた行は、sigaction 関数自体からのものです。50 フレームのキャプチャを許可し、コンパイルには gcc で -g フラグを使用します。

プログラムは 15 のスレッドを実行しているため、どのスレッドからシグナルが送信されているかを把握して、可能性を制限できるようにしたいと考えています。参考までに、メイン スレッドはフォークを作成し、そのフォークは残りの 14 のスレッドを作成します。

どうすればこれを達成できますか? すでに持っている情報で何ができますか?

ご協力ありがとうございました

PD: コアダンプ ファイルも試しましたが、このオプションがカーネル コンパイルに含まれておらず、変更できないため生成されません。