gpt4 book ai didi

c++ - 为什么我的 Redhat 服务器上的 QuickFIX 进程没有将它的核心文件写到它应该写的地方?

转载 作者:行者123 更新时间:2023-11-30 05:05:19 30 4
gpt4 key购买 nike

我有 10 个 C++ 程序在 Redhat 6.9 服务器上运行,全部使用一些内部开发的库。其中一个库实现了日志记录,并为日志文件保持文件描述符 3 打开。如果任何进程收到分段违规信号(信号 11),就会在/tmp 中生成一个核心文件,正如/proc/sys/kernel/core_pattern 所预期的那样。但是,特别是 1 个进程不会这样做。如果它收到信号 11,它会将一个核心文件写入日志文件,这将变得无用,因为日志消息与二进制核心信息交织在一起。此过程的主要不同之处在于它使用 QuickFIX C++ 库版本 1.14.3。我有那个库的源代码,并且已经搜索它以查看它可能在做什么导致了这个。它覆盖的唯一信号处理程序是针对 SIGPIPE 的。它会打开一些文件,但不会对文件描述符 3 执行任何操作。QuickFIX 进程使用大约 8GB 内存,但使用更多内存的进程会正确写入其核心文件,因此我认为这不是文件大小问题。

知道 QuickFIX 库可能做了什么导致核心文件没有到达它应该去的地方,或者任何其他可能会这样做的想法吗?

最佳答案

您确定该进程实际上是将核心转储写入日志文件,而不仅仅是崩溃前的随机数据吗?您是否尝试过禁用 coredump 生成?您是否真的在日志文件中看到了特征 \177ELF 序列?

如果将核心转储写入崩溃进程的打开文件描述符,那将是一个非常严重的内核错误。考虑到内核中的 coredump 实现,我真的不明白这是怎么发生的。

关于c++ - 为什么我的 Redhat 服务器上的 QuickFIX 进程没有将它的核心文件写到它应该写的地方?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48451149/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com