質問者
VisualStudio2003で作成したアプリのロードでntdll.dllよりAccessViolationが発生する

質問
-
現在VisualStudio2003(.netFramework1.1)で作成したアプリを
Windows7で動作させようとすると「Access Violation」(0xc0000005)が発生します。
VisualStudio2008(.netFramework2.0)で作成した場合は発生しません。
CrashDumpを見ましたが良くわかりませんでした。
***********************************************************************
Microsoft (R) Windows Debugger Version 6.12.0002.633 X86
Copyright (c) Microsoft Corporation. All rights reserved.
User Mini Dump File with Full Memory: Only application data is available
Symbol search path is: C:\OtherMsBinary;C:\SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols;SRV*c:\websymbols*http://msdl.microsoft.com/download/symbols
Executable search path is:
Windows 7 Version 7601 (Service Pack 1) MP (2 procs) Free x86 compatible
Product: WinNt, suite: SingleUserTS
Machine Name:
Debug session time: Fri Jun 28 15:17:26.000 2013 (UTC + 9:00)
System Uptime: 0 days 0:02:40.263
Process Uptime: not available
..
This dump file has an exception of interest stored in it.
The stored exception information can be accessed via .ecxr.
(2078.20ac): Access violation - code c0000005 (first/second chance not available)
eax=00000000 ebx=00000000 ecx=0018f8f4 edx=77e00010 esi=00010000 edi=00002078
eip=77e0f8b1 esp=0018ef74 ebp=0018eff8 iopl=0 nv up ei pl zr na pe nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00000246
ntdll!NtWaitForSingleObject+0x15:
77e0f8b1 83c404 add esp,4
0:000> !analyze -v
*******************************************************************************
* *
* Exception Analysis *
* *
*******************************************************************************
*** WARNING: Unable to verify checksum for myApp.exe
*** ERROR: Module load completed but symbols could not be loaded for myApp.exe
GetPageUrlData failed, server returned HTTP status 404
FAULTING_IP:
+25
76b8492d ?? ???
EXCEPTION_RECORD: ffffffff -- (.exr 0xffffffffffffffff)
ExceptionAddress: 76b8492d
ExceptionCode: c0000005 (Access violation)
ExceptionFlags: 00000000
NumberParameters: 2
Parameter[0]: 00000008
Parameter[1]: 76b8492d
Attempt to execute non-executable address 76b8492d
PROCESS_NAME: myApp.exe
ERROR_CODE: (NTSTATUS) 0xc0000005 - "0x%08lx"
EXCEPTION_CODE: (NTSTATUS) 0xc0000005 - "0x%08lx"
EXCEPTION_PARAMETER1: 00000008
EXCEPTION_PARAMETER2: 76b8492d
WRITE_ADDRESS: 76b8492d
FOLLOWUP_IP:
ntdll!KiUserApcDispatcher+25
77e0004d 8b8fcc020000 mov ecx,dword ptr [edi+2CCh]
FAILED_INSTRUCTION_ADDRESS:
+4392faf01f7df58
76b8492d ?? ???
MOD_LIST: <ANALYSIS/>
NTGLOBALFLAG: 0
APPLICATION_VERIFIER_FLAGS: 0
FAULTING_THREAD: 000020ac
BUGCHECK_STR: APPLICATION_FAULT_SOFTWARE_NX_FAULT_INVALID
PRIMARY_PROBLEM_CLASS: SOFTWARE_NX_FAULT_INVALID
DEFAULT_BUCKET_ID: SOFTWARE_NX_FAULT_INVALID
LAST_CONTROL_TRANSFER: from 77e0004d to 76b8492d
STACK_TEXT:
WARNING: Frame IP not in any known module. Following frames may be wrong.
0018f4d0 77e0004d 001c0000 00000000 00000000 0x76b8492d
0018f810 77e2c578 00000024 00000000 00000000 ntdll!KiUserApcDispatcher+0x25
0018f904 77e2c3a9 0018f950 01ef01a0 00000000 ntdll!LdrpFindOrMapDll+0x333
0018fa84 77e2c4d5 0018faec 77ef01a0 00000000 ntdll!LdrpLoadDll+0x2b2
0018fabc 77e425c5 77ef01a0 00000000 0018faec ntdll!LdrLoadDll+0xaa
0018fb24 77e424c5 0018fcb0 77e426e1 7efde008 ntdll!LdrpCorInitialize+0x106
0018fb2c 77e426e1 7efde008 002f248c 7efdd000 ntdll!LdrpCorValidateImage+0x13
0018fcb0 77e352d6 0018fd24 77df0000 77f5acff ntdll!LdrpInitializeProcess+0xfe2
0018fd00 77e29e79 0018fd24 77df0000 00000000 ntdll!_LdrpInitialize+0x78
0018fd10 00000000 0018fd24 77df0000 00000000 ntdll!LdrInitializeThunk+0x10
SYMBOL_STACK_INDEX: 1
SYMBOL_NAME: ntdll!KiUserApcDispatcher+25
FOLLOWUP_NAME: MachineOwner
MODULE_NAME: ntdll
IMAGE_NAME: ntdll.dll
DEBUG_FLR_IMAGE_TIMESTAMP: 4ec49b8f
STACK_COMMAND: dt ntdll!LdrpLastDllInitializer BaseDllName ; dt ntdll!LdrpFailureData ; ~0s; .ecxr ; kb
FAILURE_BUCKET_ID: SOFTWARE_NX_FAULT_INVALID_c0000005_ntdll.dll!KiUserApcDispatcher
BUCKET_ID: APPLICATION_FAULT_SOFTWARE_NX_FAULT_INVALID_BAD_IP_ntdll!KiUserApcDispatcher+25
Followup: MachineOwner
---------
0:000> kv
ChildEBP RetAddr Args to Child
0018ef74 77e984d7 00000030 00000001 00000000 ntdll!NtWaitForSingleObject+0x15 (FPO: [3,0,0])
0018eff8 77e98605 0018f19c 0018f1ec 00000002 ntdll!RtlReportExceptionEx+0x14b (FPO: [Non-Fpo])
0018f050 77e90f40 0018f19c 0018f1ec 00000002 ntdll!RtlReportException+0x86 (FPO: [Non-Fpo])
0018f068 77e714e1 0018f09c 0018fce0 77e673bc ntdll!LdrpInitializeProcessWrapperFilter+0x63 (FPO: [Non-Fpo])
0018f074 77e673bc 00000000 0018fd00 77e1be90 ntdll!_LdrpInitialize+0xef (FPO: [SEH])
0018f088 77e67261 00000000 00000000 00000000 ntdll!_EH4_CallFilterFunc+0x12 (FPO: [Uses EBP] [0,0,4])
0018f0b0 77e4b459 fffffffe 0018fcf0 0018f1ec ntdll!_except_handler4+0x8e (FPO: [Non-Fpo])
0018f0d4 77e4b42b 0018f19c 0018fcf0 0018f1ec ntdll!ExecuteHandler2+0x26 (FPO: [Uses EBP] [5,3,1])
0018f0f8 77e4b3ce 0018f19c 0018fcf0 0018f1ec ntdll!ExecuteHandler+0x24 (FPO: [5,0,3])
0018f184 77e00133 0118f19c 0018f1ec 0018f19c ntdll!RtlDispatchException+0x127 (FPO: [Non-Fpo])
0018f184 76b8492d 0118f19c 0018f1ec 0018f19c ntdll!KiUserExceptionDispatcher+0xf (FPO: [2,0,0]) (CONTEXT @ 0018f1ec)
WARNING: Frame IP not in any known module. Following frames may be wrong.
0018f4d0 77e0004d 001c0000 00000000 00000000 0x76b8492d
0018f810 77e2c578 00000024 00000000 00000000 ntdll!KiUserApcDispatcher+0x25
0018f904 77e2c3a9 0018f950 01ef01a0 00000000 ntdll!LdrpFindOrMapDll+0x333 (FPO: [Non-Fpo])
0018fa84 77e2c4d5 0018faec 77ef01a0 00000000 ntdll!LdrpLoadDll+0x2b2 (FPO: [Non-Fpo])
0018fabc 77e425c5 77ef01a0 00000000 0018faec ntdll!LdrLoadDll+0xaa (FPO: [Non-Fpo])
0018fb24 77e424c5 0018fcb0 77e426e1 7efde008 ntdll!LdrpCorInitialize+0x106 (FPO: [Non-Fpo])
0018fb2c 77e426e1 7efde008 002f248c 7efdd000 ntdll!LdrpCorValidateImage+0x13 (FPO: [Non-Fpo])
0018fcb0 77e352d6 0018fd24 77df0000 77f5acff ntdll!LdrpInitializeProcess+0xfe2 (FPO: [Non-Fpo])
0018fd00 77e29e79 0018fd24 77df0000 00000000 ntdll!_LdrpInitialize+0x78 (FPO: [Non-Fpo])
0018fd10 00000000 0018fd24 77df0000 00000000 ntdll!LdrInitializeThunk+0x10 (FPO: [Non-Fpo])
0:000> .exr 0xffffffffffffffff
ExceptionAddress: 76b8492d
ExceptionCode: c0000005 (Access violation)
ExceptionFlags: 00000000
NumberParameters: 2
Parameter[0]: 00000008
Parameter[1]: 76b8492d
Attempt to execute non-executable address 76b8492d
0:000> lmvm ntdll
start end module name
77df0000 77f70000 ntdll (pdb symbols) c:\websymbols\wntdll.pdb\D74F79EB1F8D4A45ABCD2F476CCABACC2\wntdll.pdb
Loaded symbol image file: ntdll.dll
Image path: C:\Windows\SysWOW64\ntdll.dll
Image name: ntdll.dll
Timestamp: Thu Nov 17 14:28:47 2011 (4EC49B8F)
CheckSum: 0014909F
ImageSize: 00180000
File version: 6.1.7601.17725
Product version: 6.1.7601.17725
File flags: 0 (Mask 3F)
File OS: 40004 NT Win32
File type: 2.0 Dll
File date: 00000000.00000000
Translations: 0409.04b0
CompanyName: Microsoft Corporation
ProductName: Microsoft® Windows® Operating System
InternalName: ntdll.dll
OriginalFilename: ntdll.dll
ProductVersion: 6.1.7601.17725
FileVersion: 6.1.7601.17725 (win7sp1_gdr.111116-1503)
FileDescription: NT Layer DLL
LegalCopyright: © Microsoft Corporation. All rights reserved.
***********************************************************************
DEP機能で拒否されているのかと思い、例外設定に入れましたが駄目でした。
こちらのクラッシュダンプで何かご存知の方、または今後のアプローチ方法に関してご教授いただきたいです。
すべての返信
-
どのような環境でしょうか? とりあえず.NET Framework 1.1 からの移行には
Windows 7 と Windows 8 のオペレーティング システムでは、.NET Framework 1.1はサポートされません。
とあります。実行時にはどのバージョンを使用しているのでしょうか。それ以前に、上記ページを見て、どのような対処を選択したのでしょうか?
-
ふと思ったことなのですが.netFramework1.1でビルドされているため32bitプロセスとして起動すると思うのですが
ロードされているモジュールを確認したところ以下の情報が出力されました。
***********************************************************************
0:000> lm
start end module name
00400000 0040a000 myApp (deferred)
77df0000 77f70000 ntdll (pdb symbols) c:\websymbols\wntdll.pdb\D74F79EB1F8D4A45ABCD2F476CCABACC2\wntdll.pdb
0:000> !dlls
0x002f3a80: C:\Test\myApp.exe
Base 0x00400000 EntryPoint 0x00404b8e Size 0x0000a000
Flags 0x00404000 LoadCount 0x0000ffff TlsIndex 0x00000000
LDRP_ENTRY_PROCESSED
LDRP_COR_IMAGE
0x002f3b00: C:\Windows\SysWOW64\ntdll.dll
Base 0x77df0000 EntryPoint 0x00000000 Size 0x00180000
Flags 0x00000004 LoadCount 0x0000ffff TlsIndex 0x00000000
LDRP_IMAGE_DLL***********************************************************************
どんなアプリ(32bit or 64bit)であれ起動時は、C:\Windows\System32\ntdll.dllから
C:\Windows\SysWOW64\ntdll.dllが呼ばれると思っていたのですが、
認識違いなのでしょうか?