2012-02-17 2 views
5

x86_64のLinux 3.0では、シグナルSIGSTKFLTがカーネルによって同期的に呼び出されるのはどのような状況(存在する場合)ですか? man 7 signalによるとLinux 3.0 x86_64:SIGSTKFLTはいつ起きますか?

+0

これはおそらく決してありません。なぜ聞くのですか? – sep332

+1

システムライブラリに適切なエラーメッセージを書き込もうとしています。 –

答えて

3

Signal  Value  Action Comment 

SIGSTKFLT -,16,-  Term Stack fault on coprocessor (unused) 

のx86コプロセッサスタックが(私はかなり確信している)障害することができないので、私はそれが暗黙的にシグナリングすることができるとは思いません。明示的な生成(kill()またはraise()による)のみがそれを引き起こす可能性があります。

grepはカーネルソースです。それを使用しませんが、約50インスタンス(CPUアーキテクチャあたり)があります。

#define SIGSTKFLT 16 
+2

まあ、x87コプロセッサは、FPU制御ワードのIMビットをアンマスクし、 'fstp'またはそれに類するものなしで' fld'命令を9回実行しようとすると失敗する可能性があります。しかしLinuxでは、このようなスタック障害はSIGSTKFLTではなくSIGFPEを生成します。 – Ruslan

+0

@Ruslan:8087がSIGSTKFLTを生成できるとは思っていませんでした。もちろん、SIGSEGVなどの他のタイプのフォールトを作成することはできません。 – wallyk

+1

いいえ、実際に文字通りスタックフォールトを持つことができます(8つのレジスタはスタックで構成されています)。エラー - 彼らはただのSIGFPEアプリです。 – Ruslan

関連する問題