问题描述
我不知道还有哪些地方可以报告错误,所以也许有人来自微软
正在读这个小组
应用程序在库线程上崩溃。堆栈在下面(最近的
在顶部)。
我认为对于用于报告的功能来说,这是一个非常糟糕的想法。 />
分配内存的内存分配错误。
++ PLS
msvcr80d.dll!__ malloc_dbg()+ 0x1f bytes
msvcr80d.dll!__ calloc_dbg()+ 0x96 bytes
msvcr80d.dll!__ getptd_noexit()+ 0x3d bytes
msvcr80d.dll!__ errno( )+ 0x9字节
msvcr80d.dll!__ VCrtDbgReportA()+ 0x1bb字节
msvcr80d.dll!__ CrtDbgReportV()+ 0x20字节
msvcr80d。 dll!__ CrtDbgReport()+ 0x29字节
msvcr80d.dll!__ CrtCheckMemory()+ 0x2bb bytes
msvcr80d.dll!__ heap_alloc_dbg()+ 0x6d bytes
msvcr80d.dll!__ nh_malloc_dbg()+ 0x19字节
msvcr80d.dll!__ malloc_dbg()+ 0x1f bytes
msvcr80d.dll!__ calloc_dbg()+ 0x96 bytes
msvcr80d.dll!__ getptd_noexit()+ 0x3d bytes
msvcr80d.dll!__ errno()+ 0x9 bytes
msv cr80d.dll!__ VCrtDbgReportA()+ 0x1bb bytes
msvcr80d.dll!__ CrtDbgReportV()+ 0x20 bytes
msvcr80d.dll!__ CrtDbgReport()+ 0x29 bytes
msvcr80d.dll!__ CrtCheckMemory()+ 0x2bb bytes
msvcr80d.dll!__ heap_alloc_dbg()+ 0x6d bytes
msvcr80d.dll!__ nh_malloc_dbg()+ 0x19 bytes
msvcr80d.dll!__ malloc_dbg()+ 0x1f bytes
msvcr80d.dll!__ calloc_dbg()+ 0x96 bytes
msvcr80d.dll!__ getptd_noexit( )+ 0x3d字节
msvcr80d.dll!__ errno()+ 0x9字节
msvcr80d.dll!__ VCrtDbgReportA()+ 0x1bb字节
msvcr80d。 dll!__ CrtDbgReportV()+ 0x20字节
msvcr80d.dll!__ CrtDbgReport()+ 0x29字节
msvcr80d.dll!__ CrtCheckMemory()+ 0x2bb字节
msvcr80d.dll!__ heap_alloc_dbg()+ 0x6d bytes
msvcr80d.dll!__ nh_malloc_dbg()+ 0x19 bytes
msvcr80d.dll!__ malloc_dbg()+ 0x1f bytes
msvcr80d.dll!__ calloc_dbg()+ 0x96字节
msvcr80d .dll!__ getptd_noexit()+ 0x3d bytes
msvcr80d.dll!__ errno()+ 0x9 bytes
msvcr80d.dll!__ VCrtDbgReportA()+ 0x1bb bytes
msvcr80d.dll!__ CrtDbgReportV()+ 0x20字节
msvcr80d.dll!__ CrtDbgReport()+ 0x29字节
msvcr80d.dll!__ CrtCheckMemory()+ 0x2bb bytes
msvcr80d.dll!__ heap_alloc_dbg()+ 0x6d bytes
msvcr80d.dll!__ nh_malloc_dbg()+ 0x19 bytes
msvcr80d.dll!__ malloc_dbg() + 0x1f bytes
msvcr80d.dll!__ calloc_dbg()+ 0x96 bytes
msvcr80d.dll!__ getptd_noexit()+ 0x3d bytes
msvcr80d.dll !__ errno()+ 0x9 bytes
msvcr80d.dll!__ VCrtDbgReportA()+ 0x1bb bytes
msvcr80d.dll!__ CrtDbgReportV()+ 0x20 bytes
msvcr80d.dll!__ CrtDbgReport()+ 0x29字节
msvcr80d.dll!__ CrtCheckMemory()+ 0x2bb bytes
msvcr80d.dll!__ heap_alloc_dbg()+ 0x6d bytes
msvcr80d.dll!__ nh_malloc_dbg()+ 0x19字节
msvcr80d.dll!__ m alloc_dbg()+ 0x1f bytes
msvcr80d.dll!__ calloc_dbg()+ 0x96 bytes
msvcr80d.dll!__ getptd_noexit()+ 0x3d bytes
msvcr80d.dll!__ errno()+ 0x9 bytes
msvcr80d.dll!__ VCrtDbgReportA()+ 0x1bb bytes
msvcr80d.dll!__ CrtDbgReportV()+ 0x20 bytes
msvcr80d.dll!__ CrtDbgReport()+ 0x29字节
msvcr80d.dll!__ CrtCheckMemory()+ 0x2bb bytes
msvcr80d.dll!__ heap_alloc_dbg()+ 0x6d bytes
msvcr80d.dll!__ nh_malloc_dbg()+ 0x19 bytes
msvcr80d.dll!__ malloc_dbg()+ 0x1f bytes
msvcr80d.dll!__ calloc_dbg( )+ 0x96字节
msvcr80d.dll!__ getptd_noexit()+ 0x3d字节
msvcr80d.dll!__ errno()+ 0x9字节
msvcr80d。 dll!__ VCrtDbgReportA()+ 0x1bb bytes
msvcr80d.dll!__ CrtDbgReportV()+ 0x20 bytes
msvcr80d.dll!__ CrtDbgReport()+ 0x29 bytes
msvcr80d.dll!__ CrtCheckMemory()+ 0x2bb bytes
msvcr80d.dll!__ heap_alloc_dbg() + 0x6d bytes
msvcr80d.dll!__ nh_malloc_dbg()+ 0x19 bytes
msvcr80d.dll!__ malloc_dbg()+ 0x1f bytes
msvcr80d.dll !__ calloc_dbg()+ 0x96字节
msvcr80d.dll!__ getptd_noexit()+ 0x3d字节
msvcr80d.dll!__ errno()+ 0x9字节
msvcr80d.dll!__ VCrtDbgReportA()+ 0x1bb bytes
msvcr80d.dll!__ CrtDbgReportV()+ 0x20 bytes
msvcr80d.dll!__ CrtDbgReport()+ 0x29 bytes
msvcr80d.dll!__ CrtCheckMemory()+ 0x2bb bytes
msvcr80d.dll!__ heap_alloc_dbg()+ 0x6d bytes
msvcr80d.dll!__ nh_malloc_dbg()+ 0x19 bytes
msvcr80d.dll!__ malloc_dbg()+ 0x1f bytes
I don''t know where else to report bugs, so maybe someone from Microsoft
is reading this group
Application crashed on a library thread. The stack is below (most recent
at top).
I think is a *REALLY* bad idea for the function that is used to report
memory allocation errors to allocate memory.
++PLS
msvcr80d.dll!__malloc_dbg() + 0x1f bytes
msvcr80d.dll!__calloc_dbg() + 0x96 bytes
msvcr80d.dll!__getptd_noexit() + 0x3d bytes
msvcr80d.dll!__errno() + 0x9 bytes
msvcr80d.dll!__VCrtDbgReportA() + 0x1bb bytes
msvcr80d.dll!__CrtDbgReportV() + 0x20 bytes
msvcr80d.dll!__CrtDbgReport() + 0x29 bytes
msvcr80d.dll!__CrtCheckMemory() + 0x2bb bytes
msvcr80d.dll!__heap_alloc_dbg() + 0x6d bytes
msvcr80d.dll!__nh_malloc_dbg() + 0x19 bytes
msvcr80d.dll!__malloc_dbg() + 0x1f bytes
msvcr80d.dll!__calloc_dbg() + 0x96 bytes
msvcr80d.dll!__getptd_noexit() + 0x3d bytes
msvcr80d.dll!__errno() + 0x9 bytes
msvcr80d.dll!__VCrtDbgReportA() + 0x1bb bytes
msvcr80d.dll!__CrtDbgReportV() + 0x20 bytes
msvcr80d.dll!__CrtDbgReport() + 0x29 bytes
msvcr80d.dll!__CrtCheckMemory() + 0x2bb bytes
msvcr80d.dll!__heap_alloc_dbg() + 0x6d bytes
msvcr80d.dll!__nh_malloc_dbg() + 0x19 bytes
msvcr80d.dll!__malloc_dbg() + 0x1f bytes
msvcr80d.dll!__calloc_dbg() + 0x96 bytes
msvcr80d.dll!__getptd_noexit() + 0x3d bytes
msvcr80d.dll!__errno() + 0x9 bytes
msvcr80d.dll!__VCrtDbgReportA() + 0x1bb bytes
msvcr80d.dll!__CrtDbgReportV() + 0x20 bytes
msvcr80d.dll!__CrtDbgReport() + 0x29 bytes
msvcr80d.dll!__CrtCheckMemory() + 0x2bb bytes
msvcr80d.dll!__heap_alloc_dbg() + 0x6d bytes
msvcr80d.dll!__nh_malloc_dbg() + 0x19 bytes
msvcr80d.dll!__malloc_dbg() + 0x1f bytes
msvcr80d.dll!__calloc_dbg() + 0x96 bytes
msvcr80d.dll!__getptd_noexit() + 0x3d bytes
msvcr80d.dll!__errno() + 0x9 bytes
msvcr80d.dll!__VCrtDbgReportA() + 0x1bb bytes
msvcr80d.dll!__CrtDbgReportV() + 0x20 bytes
msvcr80d.dll!__CrtDbgReport() + 0x29 bytes
msvcr80d.dll!__CrtCheckMemory() + 0x2bb bytes
msvcr80d.dll!__heap_alloc_dbg() + 0x6d bytes
msvcr80d.dll!__nh_malloc_dbg() + 0x19 bytes
msvcr80d.dll!__malloc_dbg() + 0x1f bytes
msvcr80d.dll!__calloc_dbg() + 0x96 bytes
msvcr80d.dll!__getptd_noexit() + 0x3d bytes
msvcr80d.dll!__errno() + 0x9 bytes
msvcr80d.dll!__VCrtDbgReportA() + 0x1bb bytes
msvcr80d.dll!__CrtDbgReportV() + 0x20 bytes
msvcr80d.dll!__CrtDbgReport() + 0x29 bytes
msvcr80d.dll!__CrtCheckMemory() + 0x2bb bytes
msvcr80d.dll!__heap_alloc_dbg() + 0x6d bytes
msvcr80d.dll!__nh_malloc_dbg() + 0x19 bytes
msvcr80d.dll!__malloc_dbg() + 0x1f bytes
msvcr80d.dll!__calloc_dbg() + 0x96 bytes
msvcr80d.dll!__getptd_noexit() + 0x3d bytes
msvcr80d.dll!__errno() + 0x9 bytes
msvcr80d.dll!__VCrtDbgReportA() + 0x1bb bytes
msvcr80d.dll!__CrtDbgReportV() + 0x20 bytes
msvcr80d.dll!__CrtDbgReport() + 0x29 bytes
msvcr80d.dll!__CrtCheckMemory() + 0x2bb bytes
msvcr80d.dll!__heap_alloc_dbg() + 0x6d bytes
msvcr80d.dll!__nh_malloc_dbg() + 0x19 bytes
msvcr80d.dll!__malloc_dbg() + 0x1f bytes
msvcr80d.dll!__calloc_dbg() + 0x96 bytes
msvcr80d.dll!__getptd_noexit() + 0x3d bytes
msvcr80d.dll!__errno() + 0x9 bytes
msvcr80d.dll!__VCrtDbgReportA() + 0x1bb bytes
msvcr80d.dll!__CrtDbgReportV() + 0x20 bytes
msvcr80d.dll!__CrtDbgReport() + 0x29 bytes
msvcr80d.dll!__CrtCheckMemory() + 0x2bb bytes
msvcr80d.dll!__heap_alloc_dbg() + 0x6d bytes
msvcr80d.dll!__nh_malloc_dbg() + 0x19 bytes
msvcr80d.dll!__malloc_dbg() + 0x1f bytes
msvcr80d.dll!__calloc_dbg() + 0x96 bytes
msvcr80d.dll!__getptd_noexit() + 0x3d bytes
msvcr80d.dll!__errno() + 0x9 bytes
msvcr80d.dll!__VCrtDbgReportA() + 0x1bb bytes
msvcr80d.dll!__CrtDbgReportV() + 0x20 bytes
msvcr80d.dll!__CrtDbgReport() + 0x29 bytes
msvcr80d.dll!__CrtCheckMemory() + 0x2bb bytes
msvcr80d.dll!__heap_alloc_dbg() + 0x6d bytes
msvcr80d.dll!__nh_malloc_dbg() + 0x19 bytes
msvcr80d.dll!__malloc_dbg() + 0x1f bytes
msvcr80d.dll!__ getptd_noexit()+ 0x3d bytes
msvcr80d.dll!__ errno( )+ 0x9字节
msvcr80d.dll!__ VCrtDbgReportA()+ 0x1bb字节
msvcr80d.dll!__ CrtDbgReportV()+ 0x20字节
msvcr80d。 dll!__ CrtDbgReport()+ 0x29字节
msvcr80d.dll!__ CrtCheckMemory()+ 0x2bb字节
msvcr80d.dll!__ free_dbg_nolock()+ 0x22字节
msvcr80d.dll!__ free_dbg()+ 0x4e bytes
msvcr80d.dll!__ freefls @ 4()+ 0x1cf bytes
msvcr80d.dll!__ freeptd()+ 0x5d bytes
msvcr80d.dll!__ CRTDLL_INIT @ 12()+ 0x3c9 bytes
msvcr80d.dll!__ CRTDLL_INIT @ 12()+ 0x1f bytes
ntdll。 dll!_LdrpCallInitRoutine @ 16()+ 0x14 bytes
ntdll.dll!_LdrShutdownThread@0()+ 0xed bytes
kernel32.dll!_ExitThread@4()+ 0x3e bytes
kernel32.dll!_FreeLibraryAndExitThread@8()+ 0x1d bytes
ole32.dll!CRpcThreadCache :: Rpc WorkerThreadEntry()+ 0x34字节
kernel32.dll!_BaseThreadStart@8()+ 0x37字节
msvcr80d.dll!__getptd_noexit() + 0x3d bytes
msvcr80d.dll!__errno() + 0x9 bytes
msvcr80d.dll!__VCrtDbgReportA() + 0x1bb bytes
msvcr80d.dll!__CrtDbgReportV() + 0x20 bytes
msvcr80d.dll!__CrtDbgReport() + 0x29 bytes
msvcr80d.dll!__CrtCheckMemory() + 0x2bb bytes
msvcr80d.dll!__free_dbg_nolock() + 0x22 bytes
msvcr80d.dll!__free_dbg() + 0x4e bytes
msvcr80d.dll!__freefls@4() + 0x1cf bytes
msvcr80d.dll!__freeptd() + 0x5d bytes
msvcr80d.dll!__CRTDLL_INIT@12() + 0x3c9 bytes
msvcr80d.dll!__CRTDLL_INIT@12() + 0x1f bytes
ntdll.dll!_LdrpCallInitRoutine@16() + 0x14 bytes
ntdll.dll!_LdrShutdownThread@0() + 0xed bytes
kernel32.dll!_ExitThread@4() + 0x3e bytes
kernel32.dll!_FreeLibraryAndExitThread@8() + 0x1d bytes
ole32.dll!CRpcThreadCache::RpcWorkerThreadEntry() + 0x34 bytes
kernel32.dll!_BaseThreadStart@8() + 0x37 bytes
推荐答案
< snip>
这里是如何报告您的问题:
这很烦人(然后是一些),不是吗?
__getptd_noexit很奇怪分配内存。对我来说,这表明
它是在一个用_beginthread {ex}创建的线程中运行的。
你是否正在链接静态运行时库,偶然? (如果你是
链接到DLL运行时库,你不需要担心使用
_beginthread,但是使用静态运行时,你会这样做) 。
-cd
That is annoying (and then some), isn''t it?
It''s odd that __getptd_noexit is allocating memory. To me, that suggests
that it''s running in a thread that wasn''t created with _beginthread{ex}.
Are you linking with the static runtime library, by chance? (If you''re
linking with the DLL runtime library, you don''t need to worrk about using
_beginthread, but using the static runtime, you do).
-cd
从callstack开始lloks就像一个线程退出而DLL-CRT
现在试图释放线程本地内存( __freeptd)。
这很好......
现在的问题是CRT想用
$ b输出内存泄漏$ b" __ CrtDbgReport"。
现在其中一些函数试图设置errno在TLS中存储了
,之前已被释放;-)
现在又为此TLS分配内存...因此它调用了
__getptd_noexit。
;-))
好错误!
问候
Jochen
From the callstack it lloks like a thread has exited and the DLL-CRT
now tries to free the thread-local-memory (__freeptd).
This is fine...
Now the problem is that the CRT wants to output the memory-leaks with
"__CrtDbgReport".
And now some of those functions tries to set the "errno" which is stored
in TLS, which was previously freed ;-)
And now it allocated again memory for this TLS... therefor it calls
__getptd_noexit.
;-)))
Nice Bug!
Greetings
Jochen
这篇关于一个VC2005错误报告的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!