【发布时间】:2019-03-20 20:01:26
【问题描述】:
我有一个链接到 libkcapi(Linux 内核加密 API 用户空间接口库)的 Linux C++ 应用程序。
当我使用以下方法进行测试时,应用程序无法生成核心转储:
- ulimit -c 无限制
- 运行应用程序
- kill -6 pid_of_application
但是如果对 libkcapi 的依赖被移除,那么核心转储就会按预期创建。
为什么 libkcapi 会阻止创建核心转储?
【问题讨论】:
我有一个链接到 libkcapi(Linux 内核加密 API 用户空间接口库)的 Linux C++ 应用程序。
当我使用以下方法进行测试时,应用程序无法生成核心转储:
但是如果对 libkcapi 的依赖被移除,那么核心转储就会按预期创建。
为什么 libkcapi 会阻止创建核心转储?
【问题讨论】:
查看源代码,libkcapi 有意禁用核心转储。
来自 kcapi-kernel-if.c:
/* Disable the dumping of this process as we handle with keys */
if (prctl(PR_SET_DUMPABLE, 0) < 0)
kcapi_dolog(KCAPI_LOG_ERR,
"Cannot set prctl(PR_SET_DUMPABLE)");
【讨论】: