Still present in 0.17.14, seems less frequent, log begins as before, same stack trace but after a much longer period playing.
Code: Select all
Factorio crashed. Generating symbolized stacktrace, please wait ...
#1 0x000000010aceb082 in Logger::logStacktrace(StackTraceInfo*) + 0x12
#2 0x000000010acd41a1 in CrashHandler::writeStackTrace(CrashHandler::CrashReason) + 0x61
#3 0x000000010acd4e74 in CrashHandler::commonSignalHandler(int) + 0x74
#4 0x000000010acd40c9 in CrashHandler::SignalHandler(int) + 0x9
#5 0x00007fffa56dbb3a in _sigtramp + 0x1a
Stack trace logging done
11764.569 Error CrashHandler.cpp:175: Map tick at moment of crash: 8866520
@devs, I assumed you were getting crash dumps along with the logs, but in case you're not, I grabbed a core dump and took a look in the debugger.
Obviously take this with a grain of salt:
Code: Select all
(lldb) bt
* thread #1, stop reason = signal SIGSTOP
* frame #0: 0x000000010ad74faf factorio`::find<LogisticMember *>() at __hash_table:2338 [opt]
frame #1: 0x000000010a7bc3e8 factorio`::unregisterConnector() [inlined] __erase_unique<const IDConnectorBase *> at __hash_table:2510 [opt]
frame #2: 0x000000010a7bc3d8 factorio`::unregisterConnector() [inlined] erase at unordered_map:1155 [opt]
frame #3: 0x000000010a7bc3d8 factorio`::unregisterConnector() at IDConnectorErrorHelper.cpp:19 [opt]
frame #4: 0x000000010a7ac555 factorio`::~IDConnector() [inlined] unregisterConnector at IDConnectorList.cpp:19 [opt]
frame #5: 0x000000010a7ac51d factorio`::~IDConnector() at IDConnector.cpp:84 [opt]
frame #6: 0x000000010b0be048 factorio`::~ShortcutPrototype() [inlined] ~IDConnector at IDConnector.cpp:82 [opt]
frame #7: 0x000000010b0be043 factorio`::~ShortcutPrototype() at ShortcutPrototype.hpp:14 [opt]
frame #8: 0x000000010ad3a70e factorio`::~ShortcutPrototype() [inlined] ~ShortcutPrototype at PrototypeMigrationListDefinition.cpp:14 [opt]
frame #9: 0x000000010ad3a709 factorio`::~ShortcutPrototype() at ShortcutPrototype.hpp:14 [opt]
frame #10: 0x000000010a7d17bb factorio`::~vector() [inlined] operator() at memory:2321 [opt]
frame #11: 0x000000010a7d17b5 factorio`::~vector() [inlined] reset at memory:2634 [opt]
frame #12: 0x000000010a7d17b0 factorio`::~vector() [inlined] ~unique_ptr at memory:2588 [opt]
frame #13: 0x000000010a7d17b0 factorio`::~vector() [inlined] ~unique_ptr at memory:2588 [opt]
frame #14: 0x000000010a7d17b0 factorio`::~vector() [inlined] destroy at memory:1866 [opt]
frame #15: 0x000000010a7d17b0 factorio`::~vector() [inlined] __destroy<std::__1::unique_ptr<CustomInputPrototype, std::__1::default_delete<CustomInputPrototype> > > at memory:1728 [opt]
frame #16: 0x000000010a7d17b0 factorio`::~vector() [inlined] destroy<std::__1::unique_ptr<CustomInputPrototype, std::__1::default_delete<CustomInputPrototype> > > at memory:1596 [opt]
frame #17: 0x000000010a7d17b0 factorio`::~vector() [inlined] __destruct_at_end at vector:421 [opt]
frame #18: 0x000000010a7d1795 factorio`::~vector() [inlined] clear at vector:364 [opt]
frame #19: 0x000000010a7d1795 factorio`::~vector() [inlined] ~__vector_base at vector:458 [opt]
frame #20: 0x000000010a7d1784 factorio`::~vector() [inlined] ~vector at iterator:1427 [opt]
frame #21: 0x000000010a7d1784 factorio`::~vector() at iterator:1427 [opt]
frame #22: 0x00007fffa5561178 libsystem_c.dylib`__cxa_finalize_ranges + 332
frame #23: 0x00007fffa55614b2 libsystem_c.dylib`exit + 55
frame #24: 0x000000010acd40d3 factorio`::SignalHandler() at InRangePredicate.cpp:563 [opt]
frame #25: 0x00007fffa56dbb3a libsystem_platform.dylib`_sigtramp + 26
frame #26: 0x00007fffa55fad43 libsystem_kernel.dylib`__pthread_kill + 11
frame #27: 0x00007fffa56e8457 libsystem_pthread.dylib`pthread_kill + 90
frame #28: 0x00007fffa5560420 libsystem_c.dylib`abort + 129
frame #29: 0x00007fff9d917c05 libGPUSupport.dylib`gpusKillClient + 83
frame #30: 0x0000000117c1de0e AppleIntelHD3000GraphicsGLDriver`GhalInterface::getCommandBuffer(unsigned char**, unsigned char**, unsigned int*, unsigned int*) + 158
frame #31: 0x0000000117c39eb1 AppleIntelHD3000GraphicsGLDriver`GHAL3D::CPrivateCommandTransport::FlushCommandBuffer(GHAL3D::FLUSH_TYPE, unsigned char) + 273
frame #32: 0x0000000117c39c52 AppleIntelHD3000GraphicsGLDriver`g575SubmitPacketsToken + 69
frame #33: 0x0000000117e8b3ea AppleIntelHD3000GraphicsGLDriver`glrBindContextDrawFramebuffer + 2369
frame #34: 0x00007fff9d91aa3f libGPUSupport.dylib`gldUpdateDrawFramebuffer + 117
frame #35: 0x000000011b069e02 GLEngine`gleUpdateDrawFramebufferState + 560
frame #36: 0x000000011af7a4cb GLEngine`glSwap_Exec + 59
frame #37: 0x00007fff94a4c126 OpenGL`CGLFlushDrawable + 66
frame #38: 0x000000010ce3dcea gameoverlayrenderer.dylib`SteamCGLFlushDrawable(_CGLContextObject*) + 33
frame #39: 0x00007fff8d67ad7b AppKit`-[NSOpenGLContext flushBuffer] + 27
frame #40: 0x000000010b30600d factorio`Cocoa_GL_SwapWindow at SDL_cocoaopengl.m:468 [opt]
frame #41: 0x000000010a4b2acc factorio`::swapBuffers() at ControllerView.cpp:231 [opt]
frame #42: 0x000000010a4d9913 factorio`::swap() at EvolutionFactorData.hpp:270 [opt]
frame #43: 0x000000010a92212a factorio`::mainLoopStep() at MainLoop.cpp:611 [opt]
frame #44: 0x000000010a91f342 factorio`::run() at MainLoop.cpp:364 [opt]
frame #45: 0x0000000109f1d3ce factorio`main at Main.cpp:1242 [opt]
frame #46: 0x00007fffa54cc235 libdyld.dylib`start + 1
So, 2 things, it looks like _sigtramp is being called due to some GPU crash? and also the crash handler is calling std::exit, which is firing C++ destructors, and one of the destructors also appears to generate an access violation.
re: if we assume the GPU crash is real, searching for libGPUSupport gpusKillClient gets some hits. A stab in the dark guess might be modifying some buffer during the swap that the driver thinks is locked?
From playing around in the debugger it looks like unregisterConnection calls find with a static variable ' IDConnectorErrorHelper::mapping()::mapping', but mapping is null at this point.
Let me know if you want the core file - unfortunately it's massive (2GB), and you might not feel like spending a lot of time tracking down iGPU bugs on 8 year old systems.