【发布时间】:2015-02-26 11:47:41
【问题描述】:
我正在调试一个链接到商业 API 库(在 Linux 下)的程序。我正在使用 valgrind memcheck,因为我遇到了奇怪的行为,这可能是由于写入超出了分配的内存块:
valgrind --tool=memcheck --error-limit=no --log-file=memcheck.log ./executable
然而,首先映入我眼帘的是许多类型的错误
Use of uninitialised value of size (4/8/16)
Invalid read of size (4/8/16)
Conditional jump or move depends on uninitialised value(s)
其中一些(但不是全部)出现在 __intel_sse2_strcpy 或 __intel_sse2_strlen 中。此外,根据 valgrind 的说法,确实存在内存泄漏。
出现在图书馆中。当我编译库附带的示例之一时,它们也会出现,因此它们不是我的编程错误。此外,它们始终出现在不同版本的库中。由于该库是封闭源代码,我似乎无法澄清错误是否致命。
实际上,这让我很难识别自己潜在的错误。看到这么多警告我有点惊讶,因为我倾向于修复我自己的程序,直到 memcheck 不再打印这些(至少在我放弃之前)。问题是:我是否可以考虑保存忽略之类的错误,它们是否通常出现在打包软件中,或者它们甚至可能是误报(例如因为库是经过优化编译的)?
【问题讨论】:
-
显然,您应该通过供应商的技术支持来解决这个问题。
-
是的,但我不希望这方面(从经验上)得到很多真正的帮助,即使我们谈论的数学库是一个昂贵的产品。
-
谢谢,这可能会有所帮助。但是,如果是这样,我遇到的问题可能会出现在同一个库中。