I sure hope that someone is willing to help me with this. I have a recurring CTD that produces a Python exception:
I also generated a crash dump and used Windbg:
I used Asserts but it I couldn't figure out which assert was the correct indicator of the problem... If I had to guess, I would say this one:
With regard to logs, they tell me nothing. My python debug log's last entry tells me that some city grew on the last turn. I wish that I knew how to set up logging so that all occurrences in a turn were sequentially recorded in an external log... that way I could pinpoint exactly what, where and who is generating the CTD. I know its possible, but I've searched high and low and I cant find an intelligible explanation of how to implement this sort of logging
Anyway, I have been at it for weeks and have had no success figuring out where things are going wrong. Could someone please offer me a suggestion? I will check back with frequency for a response and I will be glad to furnish any additional requisite data or info.
Thank you so much in advance!
Traceback (most recent call last):
File "CvEventInterface", line 30, in onEvent
File "CvCustomEventManager", line 136, in handleEvent
File "CvCustomEventManager", line 147, in _handleDefaultEvent
File "CvEventManager", line 415, in onEndPlayerTurn
File "ModFunctions", line 115, in onEndPlayerTurn
RuntimeError: unidentifiable C++ exception
ERR: Python function onEvent failed, module CvEventInterface
I also generated a crash dump and used Windbg:
*******************************************************************************
* *
* Exception Analysis *
* *
*******************************************************************************
Loading symbols for 04340000 CvGameCoreDLL.dll -> CvGameCoreDLL.dll
*** WARNING: Unable to verify checksum for CvGameCoreDLL.dll
Loading symbols for 76480000 gdi32.dll -> gdi32.dll
FAULTING_IP:
CvGameCoreDLL!CvPlot::changeCombatTypeStrength+13
04478c33 66010c42 add [edx+eax*2],cx
EXCEPTION_RECORD: ffffffff -- (.exr ffffffffffffffff)
ExceptionAddress: 04478c33 (CvGameCoreDLL!CvPlot::changeCombatTypeStrength+0x00000013)
ExceptionCode: c0000005 (Access violation)
ExceptionFlags: 00000000
NumberParameters: 2
Parameter[0]: 00000001
Parameter[1]: 65695e90
Attempt to write to address 65695e90
DEFAULT_BUCKET_ID: APPLICATION_FAULT
PROCESS_NAME: Civ4Warlords.exe
ERROR_CODE: (NTSTATUS) 0xc0000005 - The instruction at 0x%08lx referenced memory at 0x%08lx. The memory could not be %s.
WRITE_ADDRESS: 65695e90
BUGCHECK_STR: ACCESS_VIOLATION
THREAD_ATTRIBUTES:
LAST_CONTROL_TRANSFER: from 044b7c97 to 04478c33
STACK_TEXT:
0012fc3c 044b7c97 0000001b 1da6ff00 e30bd320 CvGameCoreDLL!CvPlot::changeCombatTypeStrength+0x13
0012fcb8 043aa022 00000000 ffffffff 00001b90 CvGameCoreDLL!CvUnit::kill+0x1f7
0012fcfc 043b0065 03b3fa58 015cd710 043fc760 CvGameCoreDLL!CvGame::createBarbarianUnits+0x482
0012fda8 043b038b 015cd710 0012fed0 043fc760 CvGameCoreDLL!CvGame::doTurn+0x285
0012fe4c 764acfd0 012b95cc 00000000 00000000 CvGameCoreDLL!CvGame::update+0xab
0012fe54 00000000 00000000 0012ff88 006a854d gdi32!AddFontResourceA+0x11
FOLLOWUP_IP:
CvGameCoreDLL!CvPlot::changeCombatTypeStrength+13
04478c33 66010c42 add [edx+eax*2],cx
SYMBOL_STACK_INDEX: 0
FOLLOWUP_NAME: MachineOwner
SYMBOL_NAME: CvGameCoreDLL!CvPlot::changeCombatTypeStrength+13
MODULE_NAME: CvGameCoreDLL
IMAGE_NAME: CvGameCoreDLL.dll
DEBUG_FLR_IMAGE_TIMESTAMP: 4ad79848
STACK_COMMAND: .ecxr ; kb
FAILURE_BUCKET_ID: ACCESS_VIOLATION_CvGameCoreDLL!CvPlot::changeCombatTypeStrength+13
BUCKET_ID: ACCESS_VIOLATION_CvGameCoreDLL!CvPlot::changeCombatTypeStrength+13
Followup: MachineOwner
I used Asserts but it I couldn't figure out which assert was the correct indicator of the problem... If I had to guess, I would say this one:
'Assert Failed
File: CvPlayer.cpp
Line: 10467
Expression: getBuildingClassCount(eIndex) <= (GC.getBuildingClassInfo(eIndex).getMaxPlayerInstances() + GC.getBuildingClassInfo(eIndex).getExtraPlayerInstances())
Message: BuildingClassCount is expected to be less than or match the number of max player instances plus extra player instances
With regard to logs, they tell me nothing. My python debug log's last entry tells me that some city grew on the last turn. I wish that I knew how to set up logging so that all occurrences in a turn were sequentially recorded in an external log... that way I could pinpoint exactly what, where and who is generating the CTD. I know its possible, but I've searched high and low and I cant find an intelligible explanation of how to implement this sort of logging
Anyway, I have been at it for weeks and have had no success figuring out where things are going wrong. Could someone please offer me a suggestion? I will check back with frequency for a response and I will be glad to furnish any additional requisite data or info.
Thank you so much in advance!
