我的程序(它是一个 smtp 服务器程序,由 jmeter 测试)在由 valgrind 运行时运行没有任何问题。但最终失败(得到 SIGABRT),如果它在没有 valgrind 的情况下运行或在“gdb”调试器中运行。
我已经测试了所有 valgrind 的工具(memcheck、helgrind、drd、massif),但没有人报告任何问题。我没有发现任何内存泄漏(通过 mtrace() 检查)。
我有以下内容:
Program received signal SIGABRT, Aborted.
[Switching to Thread 0xb7101b70 (LWP 1639)]
0xb776d416 in __kernel_vsyscall ()
回溯显示了由运行改变和运行的各个位置。问题总是暗示 malloc() 或 free() (并且总是与字符串(字符数组)相关)
问题是:如果 valgrind 和 mtrace 没有显示任何问题并且程序可以在无休止的 jmeter 测试循环中不间断地运行(在 valgrind 内),我怎么能找到问题?