Linux 3.0 x86_64:什么时候提出SIGSTKFLT?

And*_*zos 5 c linux signals gnu x86-64

在什么情况下(如果有的话)信号SIGSTKFLT会在x86_64上的Linux 3.0下由内核同步引发?

wal*_*lyk 6

根据man 7 signal

 Signal       Value     Action   Comment

SIGSTKFLT    -,16,-     Term    Stack fault on coprocessor (unused)
Run Code Online (Sandbox Code Playgroud)

由于 x86 协处理器堆栈不会出错(我非常确定),因此我认为它不能隐式发出信号。只有显式生成(由kill()raise())可能会导致它。

grep找到了内核源代码。它不使用它,但有大约 50 个实例(每个 CPU 架构)

#define SIGSTKFLT   16
Run Code Online (Sandbox Code Playgroud)

  • x87 协处理器可能会出错:只需取消屏蔽 FPU 控制字中的 IM 位,然后尝试在没有“fstp”或类似指令的情况下执行“fld”指令 9 次。但在 Linux 上,此类堆栈错误会生成 SIGFPE 而不是 SIGSTKFLT。 (3认同)