Skip to content

Game runs death modules and eventually spawns new objects when unloading a level and destroying all objects #896

Closed
@xezon

Description

@xezon

Game runs death modules and eventually spawns new objects when unloading a level and destroying all objects. This can have unintended consequences, such as crashing the game.

Replay

Replay: crash_debris_owner_pointer.zip

Crash Callstack

>	generalszh.exe!Player::getProductionVeterancyLevel(AsciiString buildTemplateName) Line 1997	C++
 	generalszh.exe!Object::Object(const ThingTemplate * tt, const BitFlags<45> & objectStatusMask, Team * team) Line 478	C++
 	generalszh.exe!GameLogic::friend_createObject(const ThingTemplate * thing, const BitFlags<45> & statusBits, Team * team) Line 3964	C++
 	generalszh.exe!ThingFactory::newObject(const ThingTemplate * tmplate, Team * team, BitFlags<45> statusBits) Line 329	C++
 	generalszh.exe!GenericObjectCreationNugget::reallyCreate(const Coord3D * pos, const Matrix3D * mtx, float orientation, const Object * sourceObj, unsigned int lifetimeFrames) Line 1369	C++
 	generalszh.exe!GenericObjectCreationNugget::create(const Object * primary, const Object * secondary, unsigned int lifetimeFrames) Line 797	C++
 	generalszh.exe!ObjectCreationList::createInternal(const Object * primary, const Object * secondary, unsigned int lifetimeFrames) Line 1569	C++
 	[Inline Frame] generalszh.exe!ObjectCreationList::create(const ObjectCreationList *) Line 163	C++
 	generalszh.exe!WeaponTemplate::fireWeaponTemplate(const Object * sourceObj, WeaponSlotType wslot, int specificBarrelToUse, Object * victimObj, const Coord3D * victimPos, const WeaponBonus & bonus, bool isProjectileDetonation, bool ignoreRanges, Weapon * firingWeapon, ObjectID * projectileID, bool inflictDamage) Line 976	C++
 	generalszh.exe!Weapon::privateFireWeapon(const Object * sourceObj, Object * victimObj, const Coord3D * victimPos, bool isProjectileDetonation, bool ignoreRanges, unsigned int extraBonusFlags, ObjectID * projectileID, bool inflictDamage) Line 2644	C++
 	[Inline Frame] generalszh.exe!Weapon::fireWeapon(const Object *) Line 2727	C++
 	generalszh.exe!WeaponStore::createAndFireTempWeapon(const WeaponTemplate * wt, const Object * source, const Coord3D * pos) Line 1544	C++
 	generalszh.exe!FireWeaponWhenDeadBehavior::onDie(const DamageInfo * damageInfo) Line 119	C++
 	generalszh.exe!Object::onDie(DamageInfo * damageInfo) Line 4563	C++
 	generalszh.exe!ActiveBody::attemptDamage(DamageInfo * damageInfo) Line 677	C++
 	generalszh.exe!Object::attemptDamage(DamageInfo * damageInfo) Line 1823	C++
 	generalszh.exe!Object::kill(DamageType damageType, DeathType deathType) Line 1964	C++
 	generalszh.exe!ParachuteContain::onRemoving(Object * rider) Line 582	C++
 	generalszh.exe!OpenContain::removeFromContainViaIterator(std::_List_iterator<std::_List_val<std::_List_simple_types<Object *>>> it, bool exposeStealthUnits) Line 678	C++
 	generalszh.exe!OpenContain::removeFromContain(Object * rider, bool exposeStealthUnits) Line 410	C++
 	generalszh.exe!Object::onDestroy() Line 757	C++
 	generalszh.exe!GameLogic::destroyObject(Object * obj) Line 4005	C++
 	generalszh.exe!OpenContain::onDelete() Line 846	C++
 	generalszh.exe!Object::onDestroy() Line 759	C++
 	generalszh.exe!GameLogic::destroyObject(Object * obj) Line 4005	C++
 	[Inline Frame] generalszh.exe!GameLogic::destroyAllObjectsImmediate() Line 317	C++
 	generalszh.exe!GameLogic::reset() Line 451	C++
 	generalszh.exe!SubsystemInterfaceList::resetAll() Line 188	C++
 	[Inline Frame] generalszh.exe!GameLogic::isInMultiplayerGame() Line 404	C++
 	generalszh.exe!GameEngine::reset() Line 697	C++
 	generalszh.exe!GameLogic::clearGameData(bool showScoreScreen) Line 281	C++
 	generalszh.exe!GameLogic::logicMessageDispatcher(GameMessage * msg, void * userData) Line 464	C++
 	generalszh.exe!GameLogic::processCommandList(CommandList * list) Line 2562	C++
 	generalszh.exe!GameLogic::update() Line 3732	C++
 	generalszh.exe!SubsystemInterface::UPDATE() Line 79	C++
 	generalszh.exe!GameEngine::update() Line 759	C++
 	generalszh.exe!Win32GameEngine::update() Line 93	C++
 	generalszh.exe!GameEngine::execute() Line 816	C++
 	generalszh.exe!GameMain(int argc, char * * argv) Line 47	C++
 	generalszh.exe!WinMain(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, char * lpCmdLine, int nCmdShow) Line 1038	C++
 	[Inline Frame] generalszh.exe!invoke_main() Line 102	C++
 	generalszh.exe!__scrt_common_main_seh() Line 288	C++
 	kernel32.dll!75aefcc9()	Unknown
 	[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]	
 	ntdll.dll!779c82ae()	Unknown
 	ntdll.dll!779c827e()	Unknown
 	ntmarta.dll!70207369()	Unknown

Metadata

Metadata

Assignees

Labels

BugSomething is not working rightCrashThis is a crashMajorSeverity: Minor < Major < Critical < Blocker

Type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions