【问题标题】:Valgrind report write error? why?Valgrind报告写入错误?为什么?
【发布时间】:2013-02-07 17:57:19
【问题描述】:

在运行 Valgrind 的 memcheck 时,偶尔 valgrind 会报如下错误:

==2745== Memcheck,内存错误检测器 ==2745== 版权所有 (C) 2002-2010 和 GNU GPL,由 Julian Seward 等人提供。 ==2745== 使用 Valgrind-3.6.0 和 LibVEX;使用 -h 重新运行以获取版权信息 ==2745== 命令:./HSFramework ==2745== ==2745== 大小为 8 的无效写入 ==2745== 在 0x3B81C097C0:do_lookup_x(在 /lib64/ld-2.12.so 中) ==2745== 由 0x1C31032D: ??? ==2745== 由 0x3B81C09E19:_dl_lookup_symbol_x(在 /lib64/ld-2.12.so 中) ==2745== 地址 0x7feffee78 在线程 1 的堆栈上 ==2745== 平台:Linux 2.6.32-220.el6.x86_64 x86_64 x86_64 x86_64 GNU/Linux

此错误报告中没有关于我的代码的线索。 我不知道这个错误报告。
什么原因会导致这个错误?

【问题讨论】:

  • 你能告诉我们你的代码吗
  • 对您的代码一无所知?您可以将代码配对多少并仍然产生此错误,并且频率如何? valgrind 一般不会随心所欲地报告错误,通常是有原因的。
  • 我找到了关于我的代码的线索。
  • 非常感谢您的帮助。

标签: c++ valgrind


【解决方案1】:

这意味着do_lookup_x 函数执行了无效的写访问。该功能是runtime library 的一部分(不太可能是问题的根源)。我会联系 HSFramework 的作者,看看他们是否可以像你一样通过运行 valgrind 来解决这个问题

【讨论】:

  • 我已经解决了这个问题。我在堆而不是堆栈中分配大小较大的内存。
  • 非常感谢您的帮助。
【解决方案2】:

这个错误意味着你在 do_lookup_x 中遇到了缓冲区溢出,如果你得到了它的源代码,请查看它或与我们分享。

http://valgrind.org/docs/manual/quick-start.html

【讨论】:

  • 有一个错误在堆栈中分配了更多的内存,导致堆栈溢出。
  • 非常感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-29
  • 2011-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多