C++ 有时在SIGABRT之后会丢失coredumps

C++ 有时在SIGABRT之后会丢失coredumps,c++,redhat,coredump,C++,Redhat,Coredump,我目前正在调查我们的软件关于丢失CoreDump的问题 设置: 我们运行一个(c++)应用程序(myapp),它最初是由一个以root用户身份执行的python程序作为子进程启动的。 但是Python程序降级C++应用程序的特权,并将其作为单独的用户(MyUSER)运行。 基本上这是像在 问题: 我们监控了这个过程,最近发生了一次崩溃,我们发现程序中止了(SIGABRT),但没有写入corefile 试图解决问题: 我查看并试图找出一些常见问题 $ ulimit -c unlimited (或

我目前正在调查我们的软件关于丢失CoreDump的问题

设置: 我们运行一个(c++)应用程序(myapp),它最初是由一个以root用户身份执行的python程序作为子进程启动的。 但是Python程序降级C++应用程序的特权,并将其作为单独的用户(MyUSER)运行。 基本上这是像在

问题: 我们监控了这个过程,最近发生了一次崩溃,我们发现程序中止了(SIGABRT),但没有写入corefile

试图解决问题: 我查看并试图找出一些常见问题

$ ulimit -c
unlimited
(或类似的东西)

到目前为止看起来不错-然后我检查了另一个stackoverflow线程中提到的setuid的问题

$ cat /proc/sys/fs/suid_dumpable
0
这似乎表明这可能会停止生成corefiles。还有一个解决方案(即调用prctl)。 为了可靠地测试问题并查看调用prctl(PR_SET_DUMPABLE,1,…)的解决方案是否可行,我首先尝试通过手动向应用程序发送SIGABRT来重现问题

现在奇怪的是:在发送SIGABRT之后,生成了一个CORE文件。总而言之 -在发送SIGABRT时,corefile生成似乎在原则上起作用。 -corefile生成并不总是有效的 这意味着来自python脚本的setuid调用通常不会妨碍corefile的生成


有人知道如何从这一点开始吗?

检查流程的当前目录是什么?此外,在一些现代Linux发行版(如Fedora)上,核心转储被转移并被吸收到systemd灾难中,您需要使用
coredumpctl
将它们拉入。检查进程的当前目录是什么?此外,在一些现代Linux发行版上,如Fedora,核心转储被转移并被吸收到systemd灾难中,您需要使用
coredumpctl
将它们拉进来。
$ cat /proc/sys/fs/suid_dumpable
0