gpt4 book ai didi

c - Valgrind memcheck 在商业库中发现大量条件跳转和无效读取

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

我正在调试一个链接到商业 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 不再打印这些警告(至少在我放弃它之前)。问题是:我是否可以考虑诸如保存忽略之类的错误,它们是否经常出现在打包软件中,或者它们甚至可能是误报(例如,因为库是通过优化编译的)?

最佳答案

我会说:

  1. 不,您不能认为忽略它们是安全的。 Valgrind 很好。
  2. 是的,如果原始开发人员从未在其代码中使用过 Valgrind 或类似工具,那么它们可能非常常见,因此可以合理地预期会出现一些点击。
  3. 我不认为它们是误报,这种情况很少见。

关于c - Valgrind memcheck 在商业库中发现大量条件跳转和无效读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28741650/

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