[問題] NTDLL.DLL 0xc0000005 access violation

看板C_and_CPP作者 (C語言)時間15年前 (2010/04/30 12:32), 編輯推噓4(404)
留言8則, 5人參與, 最新討論串1/1
呃, 基本上我知道這個錯誤是 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

04/30 23:18, , 1F
也許是VC6 有 bug ? 換個compiler試試
04/30 23:18, 1F

04/30 23:30, , 2F
建議檢查所有你的class的dtor還有程式內做deinit相關的碼
04/30 23:30, 2F

05/01 08:13, , 3F
你有自己 delete 從 DLL 裡面的 code new 出來的東西嗎?
05/01 08:13, 3F

05/01 23:36, , 4F
通常死在NTDLL都是因為程式寫錯,不是因為它有bug..
05/01 23:36, 4F

05/01 23:37, , 5F
stack/heap corruption都可能會導致物件
05/01 23:37, 5F

05/01 23:37, , 6F
在delete時失敗...檢查看看吧...
05/01 23:37, 6F

05/02 15:42, , 7F
通常九成都是自己記憶體管理寫爛了, access了不合法的記
05/02 15:42, 7F

05/02 15:42, , 8F
憶體位址才報這種error吧....@_@"
05/02 15:42, 8F
文章代碼(AID): #1BsitogI (C_and_CPP)