1

每当我使用 POSIX 计时器(使用timer_createand timer_settime)并且代码中某处发生段错误时,都不会生成核心转储文件。我用测试错误(使用空指针)对此进行了测试。

注释掉timer_settime并运行到 seg 错误(空指针使用)确实会产生一个核心转储文件(因此 ulimit 被有效地设置正确),从而验证其他一切都正常。

timer_create在 sigevent 设置为 的情况下调用NULL,因此使用默认值SIGALRM

更多信息

我发现在某些系统(都是 Ubuntu 12.04)上会生成核心文件。但不是在其他人身上(特别是在虚拟机中作为猜测运行时)。在所有平台上,不调用 timer_settime 并使用显式分段错误(使用空指针)会导致生成核心转储文件。我测试了 2 个裸机和 2 个 VM(每个裸机 1 个)。在其中一个裸机上,运行 VM 并在裸机中使用程序不会生成核心转储,但停止 VM 确实允许生成文件。所有物理都有 8GB 的​​ RAM,程序 Vm 是几 MB。

4

0 回答 0