I am having some trouble with crashes on Windows 7 32 bit in my game engine. It runs without any such crashes on Windows xp 32 bit, which is my development machine. I have compiled a debug build of the engine, and this is some output generated from a crash dump that I received from a tester:
Microsoft (R) Windows Debugger Version 6.11.0001.404 X86
Copyright (c) Microsoft Corporation. All rights reserved.
Loading Dump File [E:\Perilous Hearts\debug\perilous_hearts.DMP]
User Mini Dump File with Full Memory: Only application data is available
Symbol search path is: E:\Perilous Hearts\debug
Executable search path is:
Windows 7 Version 7600 MP (4 procs) Free x86 compatible
Product: WinNt, suite: SingleUserTS
Machine Name:
Debug session time: Wed May 11 20:04:24.000 2011 (GMT+2)
System Uptime: 0 days 1:57:58.550
Process Uptime: 0 days 0:01:16.000
................................................................
..........
Loading unloaded module list
.....
eax=00000000 ebx=0012f088 ecx=00000000 edx=00000000 esi=00000011 edi=6c350dd8
eip=776f6344 esp=0012f028 ebp=0012f080 iopl=0 nv up ei pl zr na pe cy
cs=001b ss=0023 ds=0000 es=0000 fs=003b gs=0000 efl=00000247
*** ERROR: Symbol file could not be found. Defaulted to export symbols for ntdll.dll -
ntdll!KiFastSystemCallRet:
776f6344 c3 ret
0:000> |* !analyze -v -f
*******************************************************************************
* *
* Exception Analysis *
* *
*******************************************************************************
*** ERROR: Symbol file could not be found. Defaulted to export symbols for KERNELBASE.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for imm32.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for user32.dll -
*** WARNING: Unable to verify checksum for perilous_hearts.exe
*** ERROR: Symbol file could not be found. Defaulted to export symbols for kernel32.dll -
***** OS symbols are WRONG. Please fix symbols to do analysis.
*************************************************************************
*** ***
*** ***
*** Your debugger is not using the correct symbols ***
*** ***
*** In order for this command to work properly, your symbol path ***
*** must point to .pdb files that have full type information. ***
*** ***
*** Certain .pdb files (such as the public OS symbols) do not ***
*** contain the required information. Contact the group that ***
*** provided you with these symbols if you need this command to ***
*** work. ***
*** ***
*** Type referenced: ntdll!_PEB ***
*** ***
*************************************************************************
*** ERROR: Symbol file could not be found. Defaulted to export symbols for minHook.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for acatts.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for nvdaHelperRemote.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for IAccessible2Proxy.dll -
*** WARNING: Unable to verify checksum for Hlas.dll
*** ERROR: Symbol file could not be found. Defaulted to export symbols for Hlas.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for ntvdm.exe -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for AcaTtsSapi5.dll -
*** WARNING: Unable to verify checksum for gwmhook.dll
*** ERROR: Symbol file could not be found. Defaulted to export symbols for gwmhook.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for HLW32.DLL -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for dsound.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for sapi.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for msdmo.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for sfc_os.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for sfc.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for uiautomationcore.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for dinput8.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for midimap.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for msacm32.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for msacm32.drv -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for AudioSes.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for ksuser.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for wdmaud.drv -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for winmm.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for wkscli.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for netutils.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for netapi32.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for winspool.drv -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for oleacc.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for comctl32.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for MMDevAPI.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for powrprof.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for wtsapi32.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for hid.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for avrt.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for propsys.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for winsta.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for rsaenh.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for cryptsp.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for srvcli.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for apphelp.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for CRYPTBASE.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for sxs.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for RpcRtRemote.dll -
*** ERROR: Module load completed but symbols could not be loaded for profapi.dll
*** ERROR: Symbol file could not be found. Defaulted to export symbols for msasn1.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for wintrust.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for devobj.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for cfgmgr32.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for crypt32.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for oleaut32.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for ws2_32.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for msvcrt.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for msctf.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for shlwapi.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for ole32.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for setupapi.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for comdlg32.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for gdi32.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for rpcrt4.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for shell32.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for advapi32.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for usp10.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for lpk.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for nsi.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for psapi.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for clbcatq.dll -
*** ERROR: Symbol file could not be found. Defaulted to export symbols for sechost.dll -
*************************************************************************
*** ***
*** ***
*** Your debugger is not using the correct symbols ***
*** ***
*** In order for this command to work properly, your symbol path ***
*** must point to .pdb files that have full type information. ***
*** ***
*** Certain .pdb files (such as the public OS symbols) do not ***
*** contain the required information. Contact the group that ***
*** provided you with these symbols if you need this command to ***
*** work. ***
*** ***
*** Type referenced: IMAGE_NT_HEADERS32 ***
*** ***
*************************************************************************
*************************************************************************
*** ***
*** ***
*** Your debugger is not using the correct symbols ***
*** ***
*** In order for this command to work properly, your symbol path ***
*** must point to .pdb files that have full type information. ***
*** ***
*** Certain .pdb files (such as the public OS symbols) do not ***
*** contain the required information. Contact the group that ***
*** provided you with these symbols if you need this command to ***
*** work. ***
*** ***
*** Type referenced: kernel32!pNlsUserInfo ***
*** ***
*************************************************************************
*************************************************************************
*** ***
*** ***
*** Your debugger is not using the correct symbols ***
*** ***
*** In order for this command to work properly, your symbol path ***
*** must point to .pdb files that have full type information. ***
*** ***
*** Certain .pdb files (such as the public OS symbols) do not ***
*** contain the required information. Contact the group that ***
*** provided you with these symbols if you need this command to ***
*** work. ***
*** ***
*** Type referenced: kernel32!pNlsUserInfo ***
*** ***
*************************************************************************
FAULTING_IP:
+26b952f019cdf74
00000000 ?? ???
EXCEPTION_RECORD: ffffffff -- (.exr 0xffffffffffffffff)
ExceptionAddress: 00000000
ExceptionCode: 80000003 (Break instruction exception)
ExceptionFlags: 00000000
NumberParameters: 0
FAULTING_THREAD: 000007fc
DEFAULT_BUCKET_ID: WRONG_SYMBOLS
PROCESS_NAME: perilous_hearts.exe
ADDITIONAL_DEBUG_TEXT:
Use '!findthebuild' command to search for the target build information.
If the build information is available, run '!findthebuild -s ; .reload' to set symbol path and load symbols.
FAULTING_MODULE: 776b0000 ntdll
DEBUG_FLR_IMAGE_TIMESTAMP: 4a5bd98a
ERROR_CODE: (NTSTATUS) 0x80000003 - {EXCEPTION} Breakpoint A breakpoint has been reached.
EXCEPTION_CODE: (HRESULT) 0x80000003 (2147483651) - One or more arguments are invalid
PRIMARY_PROBLEM_CLASS: WRONG_SYMBOLS
BUGCHECK_STR: APPLICATION_FAULT_WRONG_SYMBOLS
LAST_CONTROL_TRANSFER: from 6c3291dd to 776f6344
STACK_TEXT:
WARNING: Stack unwind information not available. Following frames may be wrong.
0012f080 6c3291dd 0266000c 6c3291dd 6c350dd8 ntdll!KiFastSystemCallRet
0012f0a0 759b1abf 00230000 6021a558 75c161dd AcXtrnal+0x91dd
0012f0dc 75f82868 0266000c 00000102 00285360 KERNELBASE!LocalLock+0x29
0012f0f0 75f82801 002e04eb 00000001 0012f12c imm32!ImmLockIMC+0x76
0012f100 75f84a19 002e04eb 00000102 004eb714 imm32!ImmLockIMC+0xf
0012f12c 75c36b11 000801e8 04050405 00000025 imm32!ImmProcessKey+0x31
0012f154 776f627e 0012f16c 00000014 0012ff78 user32!GetLastActivePopup+0xc5
0012f1a8 75c12fdc 004eb714 000801e8 00000000 ntdll!KiUserCallbackDispatcher+0x2e
0012f1d4 0047f1cb 004eb714 000801e8 00000000 user32!PeekMessageA+0x12a
0012f1f0 00480bee 0044cb6e 01c27f28 004eab68 perilous_hearts!poll_window+0x7b [e:\c++ tests\bgt\main.cpp @ 113]
0012f1f4 0044cb6e 01c27f28 004eab68 01c4a9e8 perilous_hearts!LineCallback+0xe [e:\c++ tests\bgt\main.cpp @ 572]
0012f224 004367b2 01c27f28 004eab68 01c27fa8 perilous_hearts!asCScriptEngine::CallGlobalFunction+0x1e [e:\c++ tests\bgt\angelscript\source\as_scriptengine.cpp @ 3140]
0012f238 00438310 01c28058 01c27f28 0012f2fc perilous_hearts!asCContext::CallLineCallback+0x22 [e:\c++ tests\bgt\angelscript\source\as_context.cpp @ 3780]
0012f2fc 0043a7c8 00000006 75c5ea71 ffffffff perilous_hearts!asCContext::ExecuteNext+0x9d0 [e:\c++ tests\bgt\angelscript\source\as_context.cpp @ 2033]
0012f314 00466ee9 0012f72c 0012f7b8 00480be0 perilous_hearts!asCContext::Execute+0x1b8 [e:\c++ tests\bgt\angelscript\source\as_context.cpp @ 983]
0012f72c 0047c505 75c1147a 75c0e18a 00400000 perilous_hearts!execute+0x119 [e:\c++ tests\bgt\main.cpp @ 1035]
0012fd40 0047c5c3 0047c6be 00000000 00232027 perilous_hearts!RunApplication+0xb15 [e:\c++ tests\bgt\main.cpp @ 929]
0012fd44 0047c6be 00000000 00232027 00000cc0 perilous_hearts!run_script+0x93 [e:\c++ tests\bgt\main.cpp @ 1259]
0012feb0 0047cbdc 00000000 fffffffe 00000000 perilous_hearts!main_game+0x4e [e:\c++ tests\bgt\main.cpp @ 1367]
0012fef8 00492973 00400000 00000000 00232027 perilous_hearts!WinMain+0x3dc [e:\c++ tests\bgt\main.cpp @ 1551]
0012ff88 75ef1194 7ffd5000 0012ffd4 7770b429 perilous_hearts!__tmainCRTStartup+0x113 [f:\dd\vctools\crt_bld\self_x86\crt\src\crt0.c @ 263]
0012ff94 7770b429 7ffd5000 7700c664 00000000 kernel32!BaseThreadInitThunk+0x12
0012ffd4 7770b3fc 004929de 7ffd5000 00000000 ntdll!RtlInitializeExceptionChain+0x63
0012ffec 00000000 004929de 7ffd5000 00000000 ntdll!RtlInitializeExceptionChain+0x36
STACK_COMMAND: ~0s; .ecxr ; kb
FOLLOWUP_IP:
AcXtrnal+91dd
6c3291dd 8b1d0c11326c mov ebx,dword ptr [AcXtrnal+0x110c (6c32110c)]
SYMBOL_STACK_INDEX: 1
SYMBOL_NAME: AcXtrnal+91dd
FOLLOWUP_NAME: MachineOwner
MODULE_NAME: AcXtrnal
IMAGE_NAME: AcXtrnal.dll
BUCKET_ID: WRONG_SYMBOLS
FAILURE_BUCKET_ID: WRONG_SYMBOLS_80000003_AcXtrnal.dll!Unknown
WATSON_STAGEONE_URL: http://watson.microsoft.com/StageOne/perilous_hearts_exe/0_0_0_0/4dc830b1/unknown/0_0_0_0/bbbbbbb4/80000003/00000000.htm?Retriage=1
Followup: MachineOwner
I have had a lot of these exceptions, and I simply cannot figure out why they are occuring. I am obviously doing something wrong somewhere, but it seems impossible to reproduce on Xp. I tried to set up a vectored exception handler to look for this particular exception and then continue execution if it was triggered, but no luck there.
The engine is compiled with /Zi in the compiler settings, but with the /OPT:REF command given to the linker.
As a side note, if someone is willing to spend some time looking deeper into this with me, I would be more than happy to cover those hours financially.
Thanks in advance for any help!
Kind regards,
Philip Bennefall
This crash dump is unhelpful because it’s missing symbols for AcXtrnal.dll, so it’s likely that the stack isn’t being walked properly.
AcXtrnl.dll is an Application Compatibility DLL for Windows, and is usually only loaded by a process if “Run this program in compatibility mode” is checked in the Compatibility tab of the Properties dialog for the executable.
If your Windows 7 testers have this setting checked, does unchecking it allow your program to run correctly?
I’d highly recommend downloading the Application Compatibility Toolkit (more information here) and running your program with it to diagnose potential compatibility issues with versions of Windows newer than Windows XP.