WinDbg堆栈跟踪显示了malloc的崩溃点
VC++ 6.0 - WinDbg stack trace shows a crash point at malloc
应用程序崩溃后windbg中的堆栈跟踪如下:
ntdll+0x11766
msvcrt!free+0x1ae
msvcrt!free+0x1cc
msvcrt!malloc+0x27
mfc42!Ordinal823+0x2f
请让我知道这个序数是什么意思,为什么调用两次free ?
当崩溃发生在malloc或free内部时,最可能的原因是堆损坏。损坏的原因可能发生在与当前堆栈无关的代码中。要验证堆是否已损坏,请使用
!heap –s –v
您将需要符号,提前使用
.symfix
由于缺少显示堆栈的符号,您可能根本没有空闲对最近的导出进行偏移,因此偏移量很大(free+0x1cc)检查.symfix之后的堆栈,享受吧!
要找到内存损坏的根本原因,可以使用不同的方法,但如果可能的话,全页堆是一个很好的方法。
相关文章:
- 当回溯以零开始时,如何调试崩溃
- 如果没有malloc,链表实现将失败
- 内联映射初始化的动态atexit析构函数崩溃
- 执行函数时导致崩溃的变量
- 程序崩溃并显示"std::out_of_range"错误
- malloc() 可能出现内存泄漏
- Cuda C++:设备上的Malloc类,并用来自主机的数据填充它
- CoInitialize()在单独的线程上崩溃而不返回
- 使用调试/崩溃报告将应用程序部署到客户端
- 为什么所有C++编译器都会崩溃或挂起此代码
- 为什么lambda在clang上崩溃而不是在gcc上崩溃
- Malloc()/free()在Windows上的几个线程中崩溃
- Malloc导致程序崩溃,在哪里寻找下一个线索
- 每当我输入长度为4的字符串时,下面的cpp代码就会崩溃(向量中的malloc失败)
- C++对象池:使用 malloc 时程序崩溃
- 在 malloc 之后为数组赋值会导致崩溃
- libpng 的C++抽象导致 malloc 崩溃 -- 删除 2D 数组"Jagged"
- 当绕过c++中的函数从目标进程的ExtTextOut复制数据字符串时,malloc会导致崩溃吗?
- WinDbg堆栈跟踪显示了malloc的崩溃点
- allocc函数崩溃,但malloc没有问题