シグナリング(割り込み)メカニズムはどのようにカーネルで処理されますか?私が尋ねる理由は、何らかの理由で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シグナルSIG_KILLをプロセスsighandlerで処理できますか?
- 3. linuxカーネルのシステムコールテーブルはどこですか?
- 4. プロセスが終了した後、Linuxカーネルはどこで処理を行い、TCP接続をクリーンアップしますか?
- 5. Wireshark/tcpdump/libpcapは、Linuxカーネル内のどこでパケットを傍受しましたか?
- 6. Linuxカーネルはマルチスレッドを処理しますか?
- 7. Linuxで非同期信号はどのように処理されますか?
- 8. なぜこのフォームは送信ボタンのクリックで送信されますか
- 9. メールキューは処理されましたが、Laravelはメールを送信しません
- 10. PythonでシグナルとKeyboardInterruptはどのように処理されますか?
- 11. Linuxカーネルのコードはどこにオープンされていますか( "/ proc/self/fd/NUM")?
- 12. なぜLinuxカーネルのこのコードはデッドループを起こさないのですか?
- 13. Flaskで送信されたフォームフィールドを反復処理しますか?
- 14. Linuxカーネルをシャットダウンしてリアルモードで再開することはできますか?
- 15. Linuxカーネルのこのソースコードは何をしますか?
- 16. LinuxカーネルのARPソースコードはどこにありますか?
- 17. Linuxカーネル:プロセスページテーブルはどこにありますか?
- 18. 私は楽しいためにLinuxカーネルのどの部分を読むことができますか?
- 19. PyQt5はクラス間でシグナルを送信しますか?
- 20. Linuxカーネルは別のLinuxカーネルを読み込んで実行できますか?
- 21. PCIe割り込み処理用Linuxカーネル
- 22. rabbitMQのメッセージはどこから送信されますか?
- 23. std :: threadsはユーザ空間またはカーネル空間で管理されますか?
- 24. newViewRequestedシグナルが送信されたときに外部ブラウザでURLを開く
- 25. Linuxカーネルでは
- 26. このクラスエラーはどのように処理されますか?
- 27. このリストはどのように処理されますか?
- 28. Erlang受信メッセージ - 内部ではどのように処理されていますか?
- 29. ここからスローされたエラーはSwift 2.0のdo {} catchで処理されません
- 30. ヘッダーはすでに送信されています...どこですか?
'abort'は、その信号を同期して送ります。必要なのは、コアダンプか、デバッガの下で実行され、呼び出されている場所を正確に見つけることだけです。 – Nemo