J'ai des problèmes avec les plantages sur Windows 7 32 bits dans mon moteur de jeu. Il fonctionne sans aucun de ces accidents sur Windows XP 32 bits, qui est ma machine de développement. J'ai compilé une version de débogage du moteur, ce qui est une sortie générée à partir d'un vidage sur incident que j'ai reçu d'un testeur:Exceptions breakpoint à partir de Windows dll sur Windows 7
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
J'ai eu beaucoup de ces exceptions, et je ne peux tout simplement pas comprendre pourquoi ils se produisent. Je fais évidemment quelque chose de mal quelque part, mais il semble impossible de reproduire sur Xp. J'ai essayé de mettre en place un gestionnaire d'exception vectoriel pour rechercher cette exception particulière et continuer l'exécution si elle était déclenchée, mais pas de chance là.
Le moteur est compilé avec/Zi dans les paramètres du compilateur, mais avec la commande/OPT: REF donnée à l'éditeur de liens.
En note, si quelqu'un est prêt à passer du temps à approfondir cela avec moi, je serais plus qu'heureux de couvrir ces heures financièrement.
Merci d'avance pour toute aide!
Cordialement,
Philip Bennefall
Quelle est exactement la question? –
Fondamentalement comment je peux éviter ces accidents? Je me bats avec eux depuis environ 3 mois maintenant et ne peux pas pour la vie de moi comprendre pourquoi ils se produisent ou comment les réparer/les empêcher. –
Comme d'autres l'ont noté, l'absence de symboles du système d'exploitation de votre information rend beaucoup moins certain de ce qui se passe. Pouvez-vous re-poster avec les symboles du système d'exploitation? Ce testeur est-il réellement contactable? La pile semble pointer de manière crédible vers l'IME (la fenêtre d'entrée utilisée dans divers pays asiatiques et autres). Il y a un large éventail d'IME de troisième partie buggés là-bas. Dans un premier temps, voyez s'il se reproduit pour le testeur avec l'IME désinstallé (ou au moins désactivé). Vous pourriez également vouloir voir si le problème vous est reproché sur XP ou Win7 avec IME activé. –