シグナリング(割り込み)メカニズムはどのようにカーネルで処理されますか?私が尋ねる理由は、何らかの理由でSIGABRT信号がアプリケーションによって受信され、どこから来たのかを知りたいのです。ここで、Linuxシグナルはカーネル内部で送信または処理されますか?
0
A
答えて
6
1
シクタルの答えが最善の推測IMHOです。
SIGBARTの場合には、abort(3)
libc関数を介してシグナルを受け取るプロセスと同じプロセスからシグナルが放出される可能性がありますが、シグナルが別のプロセスによって放出されている可能性があります。
strace -e kill yourapp you args ...
でアプリケーションを実行して、kill
システムコールがプログラムまたは依存ライブラリから実際に呼び出されたかどうかを素早く確認できます。または、gdb catch syscall
を使用してください。
悪意のある「OOMキラー」が動いたときに、カーネル自体がSIGKILL
のような信号を発することがあることに注意してください。
ところで、シグナルは非同期で配信されるため、プログラムの通常のワークフローが妨げられます。このため、彼らは追跡するのが苦痛です。 SystemTapのような機械の他に、私はカーネル内で信号の放出と配送を追跡する方法やロギングする方法を知らない。
関連する問題
- 1. 複製されたスレッド上でシグナルを送信して処理する
- 2. linuxカーネルのシステムコールテーブルはどこですか?
- 3. プロセスが終了した後、Linuxカーネルはどこで処理を行い、TCP接続をクリーンアップしますか?
- 4. Linuxカーネルはマルチスレッドを処理しますか?
- 5. Linuxで非同期信号はどのように処理されますか?
- 6. なぜこのフォームは送信ボタンのクリックで送信されますか
- 7. Flaskで送信されたフォームフィールドを反復処理しますか?
- 8. rabbitMQのメッセージはどこから送信されますか?
- 9. 私は楽しいためにLinuxカーネルのどの部分を読むことができますか?
- 10. Linuxカーネル:プロセスページテーブルはどこにありますか?
- 11. LinuxカーネルのARPソースコードはどこにありますか?
- 12. Linuxカーネルをシャットダウンしてリアルモードで再開することはできますか?
- 13. std :: threadsはユーザ空間またはカーネル空間で管理されますか?
- 14. Erlang受信メッセージ - 内部ではどのように処理されていますか?
- 15. ヘッダーはすでに送信されています...どこですか?
- 16. ここからスローされたエラーはSwift 2.0のdo {} catchで処理されません
- 17. このデータは安全に送信されていますか?
- 18. これは内部クラスですか?
- 19. Linuxカーネルでは
- 20. エラー処理 - これはまともなパターンですか?
- 21. 注釈の処理はどこで行われますか?
- 22. ShoreTelデータベースではどこでライブコールが処理されていますか?
- 23. Linuxカーネルのtcp処理後のパケット処理
- 24. Linuxのプロセスグループに送信されるシグナルはどのような順序ですか?
- 25. Linuxカーネル機能をモジュールに置き換えることはできますか?
- 26. ここで事前処理されたドキュメント
- 27. SIGCHLDシグナル処理
- 28. Linuxでの複数スレッドによるシグナル処理
- 29. Mailchimpキャンペーンの送信エラー - このキャンペーンはすでに送信されており、再度送信することはできません。
- 30. これを処理するには、これは悪いですか?バックボーンかエバーは私を助けますか?
'abort'は、その信号を同期して送ります。必要なのは、コアダンプか、デバッガの下で実行され、呼び出されている場所を正確に見つけることだけです。 – Nemo