Простое приложение C прекрасно компилируется на MSVC6, но при запуске вызывает нарушение прав доступа.
При запуске приложения в WinDbg возникает ошибка AV при загрузке rasadhlp.dll (файл Windows).
Вопрос: Что может вызвать нарушение прав доступа при загрузке Windows DLL?
Я привык работать над различными никсами, а не окнами, поэтомуможет быть что-то действительно очевидное, что я упускаю.
[...]
ModLoad: 77920000 77a13000 C:\WINDOWS\system32\SETUPAPI.dll
ModLoad: 76fc0000 76fc6000 C:\WINDOWS\system32\rasadhlp.dll
(f38.a08): Access violation - code c0000005 (first chance)
First chance exceptions are reported before any exception handling.
This exception may be expected and handled.
eax=00000000 ebx=00000000 ecx=00000000 edx=0049f8f0 esi=0049f8f0 edi=00000000
eip=7c918fea esp=0012fbdc ebp=0012fc50 iopl=0 nv up ei ng nz na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010286
ntdll!RtlpWaitForCriticalSection+0x5b:
7c918fea ff4010 inc dword ptr [eax+10h] ds:0023:00000010=????????
0:000> g
(f38.a08): Access violation - code c0000005 (!!! second chance !!!)
eax=00000000 ebx=00000000 ecx=00000000 edx=0049f8f0 esi=0049f8f0 edi=00000000
eip=7c918fea esp=0012fbdc ebp=0012fc50 iopl=0 nv up ei ng nz na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000286
ntdll!RtlpWaitForCriticalSection+0x5b:
7c918fea ff4010 inc dword ptr [eax+10h] ds:0023:00000010=????????
Примечание: приложение скомпилировано на win2k, протестировано на XP.(которые по разным странным причинам нельзя изменить прямо сейчас ...)
[править]: трассировка программы:
ntdll!RtlpWaitForCriticalSection+0x5b
ntdll!RtlEnterCriticalSection+0x46
msvcrt!vprintf+0x18
intl!libintl_vfprintf+0xa8
intl!libintl_fprintf+0x1f
image00400000+0x6239
MSCTF!DllGetClassObject+0x1de9
ntdll!RtlpNtMakeTemporaryKey+0x7ec8
ntdll!RtlInitializeSListHead+0x115c0
ntdll!iswdigit+0x339
ntdll!LdrGetProcedureAddress+0x4b
image00400000+0x626f4
[edit 2]: Я знаю, что исключение сначала перехватывается отладчиком, и это совершенно нормально.В журнале вы заметите, что я вручную пропускаю исключение первого шанса и заставляю его подниматься в мою программу.Меня интересует причина возникновения такой ошибки, а не ее обработка.