看板 C_and_CPP 關於我們 聯絡資訊
呃, 基本上我知道這個錯誤是 memory leak 或是釋放空指標等的錯誤訊息 今天遇到 NTDLL.DLL 的錯誤不只一個, 有 user breakpoint 、no symbols 的問題, 網路上也有人出了一個 patch 來解 但是這個 DLL 檔的 access violation 問題也一堆人遇到, 我是在vc6下run程式, 程式結束時發生的。 估狗好久沒看到有解出的人, 有點懷疑真的是我的記憶體管理失當了嗎 我檢查自己的 code 所有 new delete 已經好一陣子, 也用斷點去看死在哪 -> 看不到, 每次死都死在這個 dll 檔, 也只有 ASM 碼可以看 call stack 也看不出所以然 會不會是 third-party 的程式(如wxWidgets) 使用到這個部分而其中還有問題? 有沒有人遇過阿? 囧 雖然直接雙擊執行不會發生問題, 但總覺得不踏實。 以下是 debugger 的訊息, 有人可以告訴我是怎麼回事嗎? CommandLine: "C:\Documents and Settings\Administrator\桌面\wxConfig 0430\vc_mswd\conftest.exe" Symbol search path is: srv*;C:\WINDOWS\Symbols Executable search path is: C:\WINDOWS\Symbols ModLoad: 00400000 00849000 conftest.exe ModLoad: 7c920000 7c9b7000 ntdll.dll ModLoad: 7c800000 7c91f000 C:\WINDOWS\system32\kernel32.dll ModLoad: 77d10000 77d9f000 C:\WINDOWS\system32\USER32.dll ModLoad: 77ef0000 77f39000 C:\WINDOWS\system32\GDI32.dll ModLoad: 76320000 76367000 C:\WINDOWS\system32\comdlg32.dll ModLoad: 77da0000 77e47000 C:\WINDOWS\system32\ADVAPI32.dll ModLoad: 77e50000 77ee2000 C:\WINDOWS\system32\RPCRT4.dll ModLoad: 77fc0000 77fd1000 C:\WINDOWS\system32\Secur32.dll ModLoad: 77180000 77283000 C:\WINDOWS\WinSxS\X86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.5512_x-ww_35d4ce83\COMCTL32.dll ModLoad: 77be0000 77c38000 C:\WINDOWS\system32\msvcrt.dll ModLoad: 77f40000 77fb6000 C:\WINDOWS\system32\SHLWAPI.dll ModLoad: 7d590000 7dd85000 C:\WINDOWS\system32\SHELL32.dll ModLoad: 76990000 76acd000 C:\WINDOWS\system32\ole32.dll ModLoad: 770f0000 7717b000 C:\WINDOWS\system32\OLEAUT32.dll ModLoad: 10000000 100f3000 C:\Program Files\OpenCV\bin\cxcore110.dll ModLoad: 78130000 781cb000 C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.4053_x-ww_e6967989\MSVCR80.dll ModLoad: 72880000 72890000 C:\WINDOWS\WinSxS\x86_Microsoft.VC80.OpenMP_1fc8b3b9a1e18e3b_8.0.50727.4053_x-ww_e79c4723\vcomp.dll ModLoad: 00850000 008f1000 C:\Program Files\OpenCV\bin\highgui110.dll ModLoad: 73ac0000 73ad7000 C:\WINDOWS\system32\AVIFIL32.dll ModLoad: 76b10000 76b3a000 C:\WINDOWS\system32\WINMM.dll ModLoad: 77bb0000 77bc5000 C:\WINDOWS\system32\MSACM32.dll ModLoad: 73b40000 73b60000 C:\WINDOWS\system32\MSVFW32.dll ModLoad: 73af0000 73b02000 C:\WINDOWS\system32\AVICAP32.dll ModLoad: 77bd0000 77bd8000 C:\WINDOWS\system32\VERSION.dll ModLoad: 00900000 009df000 C:\Program Files\OpenCV\bin\cv110.dll ModLoad: 7c420000 7c4a7000 C:\WINDOWS\WinSxS\x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.4053_x-ww_e6967989\MSVCP80.dll ModLoad: 71a30000 71a3b000 C:\WINDOWS\system32\WSOCK32.dll ModLoad: 71a10000 71a27000 C:\WINDOWS\system32\WS2_32.dll ModLoad: 71a00000 71a08000 C:\WINDOWS\system32\WS2HELP.dll (15bc.198c): Break instruction exception - code 80000003 (first chance) eax=00261eb4 ebx=7ffd5000 ecx=00000002 edx=00000004 esi=00261f48 edi=00261eb4 eip=7c92120e esp=0013fb20 ebp=0013fc94 iopl=0 nv up ei pl nz na po nc cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000202 ntdll!DbgBreakPoint: 7c92120e cc int 3 0:000> g ModLoad: 5c2e0000 5c306000 C:\WINDOWS\system32\ShimEng.dll ModLoad: 715e0000 71659000 C:\WINDOWS\AppPatch\AcLayers.DLL ModLoad: 759d0000 75a7f000 C:\WINDOWS\system32\USERENV.dll ModLoad: 72f70000 72f96000 C:\WINDOWS\system32\WINSPOOL.DRV ModLoad: 58600000 587ca000 C:\WINDOWS\AppPatch\AcGenral.DLL ModLoad: 5a410000 5a447000 C:\WINDOWS\system32\UxTheme.dll ModLoad: 76300000 7631d000 C:\WINDOWS\system32\IMM32.DLL ModLoad: 621f0000 621f9000 C:\WINDOWS\system32\LPK.DLL ModLoad: 73fa0000 7400b000 C:\WINDOWS\system32\USP10.dll ModLoad: 74680000 746cc000 C:\WINDOWS\system32\MSCTF.dll ModLoad: 76d70000 76d92000 C:\WINDOWS\system32\Apphelp.dll ModLoad: 73640000 7366e000 C:\WINDOWS\system32\msctfime.ime ModLoad: 01650000 01669000 C:\WINDOWS\system32\btmmhook.dll BTMMHOOK 30.04.2010 19:54:01 Thread<198C> Hook DLL loaded (15bc.198c): Access violation - code c0000005 (first chance) First chance exceptions are reported before any exception handling. This exception may be expected and handled. eax=010b5e78 ebx=7ffd5000 ecx=00000000 edx=010b5e78 esi=008fdc28 edi=013af558 eip=0040bea8 esp=0013f78c ebp=0013fdcc iopl=0 nv up ei pl nz ac po nc cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010212 *** WARNING: Unable to verify checksum for conftest.exe conftest!MyFrame::MyFrame+0x4dfe: 0040bea8 8b5144 mov edx,dword ptr [ecx+44h] ds:0023:00000044=???????? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.118.20.167
Bencrie:也許是VC6 有 bug ? 換個compiler試試 04/30 23:18
saxontai:建議檢查所有你的class的dtor還有程式內做deinit相關的碼 04/30 23:30
tinlans:你有自己 delete 從 DLL 裡面的 code new 出來的東西嗎? 05/01 08:13
holyspectral:通常死在NTDLL都是因為程式寫錯,不是因為它有bug.. 05/01 23:36
holyspectral:stack/heap corruption都可能會導致物件 05/01 23:37
holyspectral:在delete時失敗...檢查看看吧... 05/01 23:37
VictorTom:通常九成都是自己記憶體管理寫爛了, access了不合法的記 05/02 15:42
VictorTom:憶體位址才報這種error吧....@_@" 05/02 15:42