Page 1 of 1

[1.1.77.60464] NPE in EntityUsageBitMask::operator&

Posted: Sat Mar 11, 2023 9:18 pm
by SilentStorm
While playing on latest 1.1.77 experimental multiplayer earlier today, we had the game crash after killing a mod / scenario controlled entity.
We were playing crashsite scenario and upon killing a turret in one of the bases of crashsite we experienced a reproducible game crash.

This can be reproduced by simply starting a vanilla game and running the following LUA command in the chat console:

Code: Select all

/c game.player.surface.create_entity({
    name = 'defender',
    position = {0, 0},
    target = game.player.character,
    force = 'enemy'
})
game.player.surface.create_entity({
    name = 'destroyer',
    position = {0, 0},
    target = game.player.character,
    force = 'enemy'
})
game.player.surface.create_entity({
    name = 'defender',
    position = {0, 0},
    target = game.player.character,
    force = 'enemy'
})

Code: Select all

[Inline Frame] factorio.exe!EntityUsageBitMask::operator&(int) Line 44
[Inline Frame] factorio.exe!Entity::isToBeDeleted() Line 441
factorio.exe!LuaSurface::luaCreateEntity(lua_State * L) Line 1836
factorio.exe!LuaBinder<LuaEquipmentGridPrototype>::callWrapperOnObject(lua_State * L, LuaEquipmentGridPrototype * obj, int wrapperLocation) Line 348
factorio.exe!luaD_precall(lua_State * L, lua_TValue * func, int nresults) Line 350
factorio.exe!luaV_execute(lua_State * L) Line 713
[Inline Frame] factorio.exe!luaD_call(lua_State * func, lua_TValue * nResults, int) Line 424
factorio.exe!f_call(lua_State * L, void * ud) Line 1067
factorio.exe!luaD_rawrunprotected(lua_State * L, void(*)(lua_State *, void *) f, void * ud) Line 137
factorio.exe!luaD_pcall(lua_State * L, void(*)(lua_State *, void *) func, void * u, __int64 old_top, __int64 ef) Line 623
[Inline Frame] factorio.exe!lua_pcallk(lua_State *) Line 1093
[Inline Frame] factorio.exe!LuaHelper::pCallWithStackTraceIfInstrumentMode(lua_State *) Line 4345
factorio.exe!LuaGameScript::runLuaCommand(const std::string & command, const CommandSource & source, bool silent) Line 2342
factorio.exe!LuaContext::runLuaCommand(const std::string & command, const CommandSource & source, const RemoteInterfaceID * remoteInterfaceID, bool silent) Line 279
[Inline Frame] factorio.exe!Scenario::runCommand(const std::string &) Line 1488
factorio.exe!CommandProcessor::doExecuteCommand(const CommandSource & source, const std::string & parameters, bool measure, bool silent) Line 1498
factorio.exe!CommandProcessor::executeCommand(const CommandSource & source, const std::string & parameters) Line 309
factorio.exe!CommandProcessor::process(const CommandSource & source, std::string message) Line 256
factorio.exe!GameActionHandler::writeToConsole(const InputAction & event, Player * player) Line 4411
factorio.exe!GameActionHandler::actionPerformed(const InputAction & event) Line 371
[Inline Frame] factorio.exe!InputHandler::flushToListeners(const InputAction &) Line 72
factorio.exe!InputHandler::flushActions(bool isStopped, MapTickType tick) Line 61
factorio.exe!GameActionHandler::update() Line 411
factorio.exe!MainLoop::gameUpdateStep(MultiplayerManagerBase * multiplayerManagerBase, Scenario * scenario, AppManager * appManager, MainLoop::HeavyMode heavyMode) Line 1249
factorio.exe!MainLoop::gameUpdateLoop(MainLoop::HeavyMode heavyMode) Line 1112
[Inline Frame] factorio.exe!MainLoop::mainLoopStep::__l2::<lambda_b727d7e68a89e5f1027cf9db2c4c68bf>::operator()() Line 683
[Inline Frame] factorio.exe!std::_Invoker_functor::_Call(MainLoop::mainLoopStep::__l2::<lambda_b727d7e68a89e5f1027cf9db2c4c68bf> &)	C++	Symbols loaded.
[Inline Frame] factorio.exe!std::invoke(MainLoop::mainLoopStep::__l2::<lambda_b727d7e68a89e5f1027cf9db2c4c68bf> &)	C++	Symbols loaded.
[Inline Frame] factorio.exe!std::_Invoker_ret<void,1>::_Call(MainLoop::mainLoopStep::__l2::<lambda_b727d7e68a89e5f1027cf9db2c4c68bf> &)	C++	Symbols loaded.
factorio.exe!std::_Func_impl_no_alloc<<lambda_b727d7e68a89e5f1027cf9db2c4c68bf>,void>::_Do_call()	C++	Symbols loaded.
[Inline Frame] factorio.exe!std::_Func_class<void>::operator()() Line 48
factorio.exe!WorkerThread::loop() Line 49
[Inline Frame] factorio.exe!std::_Invoker_pmf_pointer::_Call(void(WorkerThread::*)()) Line 230
[Inline Frame] factorio.exe!std::invoke(void(WorkerThread::*)() &&) Line 230
[Inline Frame] factorio.exe!std::_LaunchPad<std::unique_ptr<std::tuple<void (__cdecl WorkerThread::*)(void),WorkerThread *>,std::default_delete<std::tuple<void (__cdecl WorkerThread::*)(void),WorkerThread *>>>>::_Execute(std::tuple<void (__cdecl WorkerThread::*)(void),WorkerThread *> &) Line 238
[Inline Frame] factorio.exe!std::_LaunchPad<std::unique_ptr<std::tuple<void (__cdecl WorkerThread::*)(void),WorkerThread *>,std::default_delete<std::tuple<void (__cdecl WorkerThread::*)(void),WorkerThread *>>>>::_Run(std::_LaunchPad<std::unique_ptr<std::tuple<void (__cdecl WorkerThread::*)(void),WorkerThread *>,std::default_delete<std::tuple<void (__cdecl WorkerThread::*)(void),WorkerThread *>>>> *) Line 245
factorio.exe!std::_LaunchPad<std::unique_ptr<std::tuple<void (__cdecl WorkerThread::*)(void),WorkerThread *>,std::default_delete<std::tuple<void (__cdecl WorkerThread::*)(void),WorkerThread *>>>>::_Go() Line 230
factorio.exe!std::_Pad::_Call_func(void * _Data) Line 209
factorio.exe!thread_start<unsigned int (__cdecl*)(void *),1>(void * const parameter) Line 97
kernel32.dll!BaseThreadInitThunk()	Unknown	Symbols loaded.
ntdll.dll!RtlUserThreadStart()	Unknown	Symbols loaded.

Re: [1.1.77.60464] NPE in EntityUsageBitMask::operator&

Posted: Sat Mar 11, 2023 9:38 pm
by Rseding91
Thanks for the report. It's now fixed for the next release.