【问题标题】:gdb: malloc(): memory corruption (fast):gdb: malloc(): 内存损坏(快速):
【发布时间】:2013-02-15 00:19:48
【问题描述】:

执行 gdb> core-file 时,gdb 给出以下错误,然后在创建核心文件时崩溃:

Reading symbols from ./libtcmalloc_minimal.so.0...
*** glibc detected *** gdb: malloc(): memory corruption (fast): 0x0000000000ec04a0 ***

我没有找到任何关于 gdb 因此错误而崩溃的参考。有没有人遇到过这个?如果是这样,可以做些什么呢。

GDB的版本是:GNU gdb (GDB) SUSE (6.8.50.20090302-1.5.18)

谢谢

【问题讨论】:

  • 使用-g 编译。它是否说明了某些行号?是否愿意展示一些展示问题的最小可编译代码?
  • 我自己并没有编译代码 - 只是试图获取堆栈跟踪以提交分析。澄清一下,这个错误是在运行 gdb 来分析内核时发生的,而不是在应用程序本身运行时发生的。
  • 尝试使用程序和核心文件名作为参数调用gdb,即'gdb prog-file core-file'
  • 从命令行调用会出现相同的错误(不同的内存位置),然后在内存映射期间,gdb cores
  • 原来 malloc 错误是由于 LD_LIBRARY_PATH 中的路径顺序造成的。 tcmalloc 位于 O/S 内存管理器之前的 var 中。更改顺序消除了此错误。现在我有一个不同的错误,但这是另一篇文章的主题。

标签: gdb


【解决方案1】:

可以做些什么

GDB 本身的任何崩溃都是错误。

但是,没有人会关心这个错误,除非它可以用 current GDB 重现(你的已经 5 岁了)。

所以,download 当前版本的 GDB(当前为 7.5.1),并构建它。

如果可行,请使用它来调试您的问题。

如果不起作用,请在 GDB bugzilla 中提交错误。

【讨论】:

    【解决方案2】:

    如果您因调用而收到此错误

    ptr = (ptr_t*)malloc(sizeof(ptr_t));
    

    在您的程序中,可能是由于缺少 stdlib.h 标头。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-26
      • 2023-03-16
      • 1970-01-01
      相关资源
      最近更新 更多