For me, it crashes on load approximately 30% of the time, at varying parts of the way through "loading sprites". 57% seems to be a favorite, but I've seen numbers in the 60's and 70's. Given that, I suspect some kind of parallel race condition issue?
If there's a debug option that would be useful, I can flip it and reboot the game a few dozen times to see what happens?
Code: Select all
20.344 Texture processor created (2048). GPU accelerated compression Supported: yes, Enabled: yes/yes. Test passed. YCoCgDXT PSNR: 35.83, BC3 PSNR: 33.82
21.807 Parallel Sprite Loader initialized (threads: 7)
Factorio crashed. Generating symbolized stacktrace, please wait ...
Raw stacktrace: 0xb0f8b8, 0xcd3a3d, 0xb9eede, 0xb9f228, 0xb9f289, 0x354b0, 0, 0xb, 0x51df8b, 0x16450a9, 0x16450da, 0x16454cf, 0x165c58b, 0x1647e68, 0x164c7a7, 0x633a91, 0x633bf2, 0xfcb8f2, 0x190ffbf, 0x76ba, 0
34.978 Warning Logger.cpp:518: Symbols.size() == 36, usedSize == 20
#0 0x0000000000cd3a3d in std::__uniq_ptr_impl<LoggerFileWriteStream, std::default_delete<LoggerFileWriteStream> >::_M_ptr() const at /usr/include/c++/8/bits/unique_ptr.h:150
#1 0x0000000000b9eede in std::unique_ptr<LoggerFileWriteStream, std::default_delete<LoggerFileWriteStream> >::get() const at /usr/include/c++/8/bits/unique_ptr.h:343
#2 0x0000000000b9f228 in std::unique_ptr<LoggerFileWriteStream, std::default_delete<LoggerFileWriteStream> >::operator->() const at /usr/include/c++/8/bits/unique_ptr.h:337
#3 0x0000000000b9f289 in Logger::flush() at /tmp/factorio-build-NKXqGz/src/Util/Logger.cpp:558
#4 0x00000000000354b0 in Logger::logStacktrace(StackTraceInfo*) at /tmp/factorio-build-NKXqGz/src/Util/Logger.cpp:544
#5 (nil) in GlobalContext::getMap() at /tmp/factorio-build-NKXqGz/src/GlobalContext.cpp:1827
#6 0x000000000000000b in CrashHandler::writeStackTrace(CrashHandler::CrashReason) at /tmp/factorio-build-NKXqGz/src/Util/CrashHandler.cpp:185
#7 0x000000000051df8b in CrashHandler::commonSignalHandler(int) at /tmp/factorio-build-NKXqGz/src/Util/CrashHandler.cpp:595
#8 0x00000000016450a9 in CrashHandler::SignalHandler(int) at /tmp/factorio-build-NKXqGz/src/Util/CrashHandler.cpp:609
#9 0x00000000016450da in ?? at ??:0
#10 0x00000000016454cf in ?? at ??:0
#11 0x000000000165c58b in ?? at ??:0
#12 0x0000000001647e68 in png_safe_error at /tmp/factorio-build-NKXqGz/libraries/png/pngerror.c:916
#13 0x000000000164c7a7 in png_default_error at /tmp/factorio-build-NKXqGz/libraries/png/pngerror.c:754
#14 0x0000000000633a91 in png_error at /tmp/factorio-build-NKXqGz/libraries/png/pngerror.c:88
#15 0x0000000000633bf2 in png_error at /tmp/factorio-build-NKXqGz/libraries/png/pngerror.c:88
#16 0x0000000000fcb8f2 in png_chunk_error at /tmp/factorio-build-NKXqGz/libraries/png/pngerror.c:485
#17 0x000000000190ffbf in png_read_IDAT_data at /tmp/factorio-build-NKXqGz/libraries/png/pngrutil.c:4120
#18 0x00000000000076ba in png_read_row at /tmp/factorio-build-NKXqGz/libraries/png/pngread.c:539
#19 (nil) in png_read_image at /tmp/factorio-build-NKXqGz/libraries/png/pngread.c:745 (discriminator 3)
#20 (nil) in preloadPng(unsigned int&, unsigned int&, MemoryBitmapData&, unsigned char*, unsigned int, bool) at /tmp/factorio-build-NKXqGz/src/Graphics/PngLoad.cpp:100
#21 (nil) in std::__atomic_base<bool>::store(bool, std::memory_order) at /usr/include/c++/8/bits/atomic_base.h:374
#22 (nil) in std::__atomic_base<bool>::operator=(bool) at /usr/include/c++/8/bits/atomic_base.h:267
#23 (nil) in std::atomic<bool>::operator=(bool) at /usr/include/c++/8/atomic:79
#24 (nil) in SpriteLoaders::CrossPlatformImageLoader::preload() at /tmp/factorio-build-NKXqGz/src/Graphics/CrossPlatformImageLoader.cpp:14
#25 (nil) in std::__atomic_base<unsigned int>::operator++() at /usr/include/c++/8/bits/atomic_base.h:296
#26 (nil) in PreloadWorker::preload() at /tmp/factorio-build-NKXqGz/src/Graphics/ParallelSpriteLoader.cpp:61
#27 (nil) in PreloadWorker::compute()::{lambda()#1}::operator()() const at /tmp/factorio-build-NKXqGz/src/Graphics/ParallelSpriteLoader.cpp:40
#28 (nil) in void std::__invoke_impl<void, PreloadWorker::compute()::{lambda()#1}>(std::__invoke_other, PreloadWorker::compute()::{lambda()#1}&&) at /usr/include/c++/8/bits/invoke.h:60
#29 (nil) in std::__invoke_result<PreloadWorker::compute()::{lambda()#1}>::type std::__invoke<PreloadWorker::compute()::{lambda()#1}>(std::__invoke_result&&, (PreloadWorker::compute()::{lambda()#1}&&)...) at /usr/include/c++/8/bits/invoke.h:95
#30 (nil) in decltype (__invoke((_S_declval<0ul>)())) std::thread::_Invoker<std::tuple<PreloadWorker::compute()::{lambda()#1}> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) at /usr/include/c++/8/thread:234
#31 (nil) in std::thread::_Invoker<std::tuple<PreloadWorker::compute()::{lambda()#1}> >::operator()() at /usr/include/c++/8/thread:243
#32 (nil) in std::thread::_State_impl<std::thread::_Invoker<std::tuple<PreloadWorker::compute()::{lambda()#1}> > >::_M_run() at /usr/include/c++/8/thread:186
#33 (nil) in execute_native_thread_routine at blake2s.c:?
#34 (nil) in ?? at ??:0
#35 (nil) in ?? at ??:0
Stack trace logging done
41.135 Warning Logger.cpp:518: Symbols.size() == 31, usedSize == 19
41.135 Error Util.cpp:97: Unexpected error occurred. If you're running the latest version of the game you can help us solve the problem by posting the contents of the log file on the Factorio forums.
Please also include the save file(s), any mods you may be using, and any steps you know of to reproduce the crash.
42.467 Error CrashHandler.cpp:592: Received SIGSEGV
Factorio crashed. Generating symbolized stacktrace, please wait ...
Raw stacktrace: 0xb0f8b8, 0xcd3a3d, 0xb9eede, 0xb9f228, 0xb9f289, 0x354b0, 0x11beffc, 0xb9e02d, 0xb9e2c7, 0xb9eaa3, 0xb9ec77, 0xb9ed8c, 0xb9ef55, 0xb9f228, 0xb9f289, 0x354b0, 0, 0xb, 0x51df8b, 0x16450a9, 0x16450da, 0x16454cf, 0x165c58b, 0x1647e68, 0x164c7a7, 0x633a91, 0x633bf2, 0xfcb8f2, 0x190ffbf, 0x76ba, 0
48.937 Warning Logger.cpp:518: Symbols.size() == 57, usedSize == 30
#0 0x0000000000cd3a3d in std::__uniq_ptr_impl<LoggerFileWriteStream, std::default_delete<LoggerFileWriteStream> >::_M_ptr() const at /usr/include/c++/8/bits/unique_ptr.h:150
#1 0x0000000000b9eede in std::unique_ptr<LoggerFileWriteStream, std::default_delete<LoggerFileWriteStream> >::get() const at /usr/include/c++/8/bits/unique_ptr.h:343
#2 0x0000000000b9f228 in std::unique_ptr<LoggerFileWriteStream, std::default_delete<LoggerFileWriteStream> >::operator->() const at /usr/include/c++/8/bits/unique_ptr.h:337
#3 0x0000000000b9f289 in Logger::flush() at /tmp/factorio-build-NKXqGz/src/Util/Logger.cpp:558
#4 0x00000000000354b0 in Logger::logStacktrace(StackTraceInfo*) at /tmp/factorio-build-NKXqGz/src/Util/Logger.cpp:544
#5 0x00000000011beffc in GlobalContext::getMap() at /tmp/factorio-build-NKXqGz/src/GlobalContext.cpp:1827
#6 0x0000000000b9e02d in CrashHandler::writeStackTrace(CrashHandler::CrashReason) at /tmp/factorio-build-NKXqGz/src/Util/CrashHandler.cpp:185
#7 0x0000000000b9e2c7 in CrashHandler::commonSignalHandler(int) at /tmp/factorio-build-NKXqGz/src/Util/CrashHandler.cpp:595
#8 0x0000000000b9eaa3 in CrashHandler::SignalHandler(int) at /tmp/factorio-build-NKXqGz/src/Util/CrashHandler.cpp:609
#9 0x0000000000b9ec77 in ?? at ??:0
#10 0x0000000000b9ed8c in std::_Rb_tree<int, std::pair<int const, ChildProcessAgent::ChildRecord>, std::_Select1st<std::pair<int const, ChildProcessAgent::ChildRecord> >, std::less<int>, std::allocator<std::pair<int const, ChildProcessAgent::ChildRecord> > >::lower_bound(int const&) at /usr/include/c++/8/bits/stl_tree.h:1203
#11 0x0000000000b9ef55 in std::map<int, ChildProcessAgent::ChildRecord, std::less<int>, std::allocator<std::pair<int const, ChildProcessAgent::ChildRecord> > >::lower_bound(int const&) at /usr/include/c++/8/bits/stl_map.h:1240
#12 0x0000000000b9f228 in std::map<int, ChildProcessAgent::ChildRecord, std::less<int>, std::allocator<std::pair<int const, ChildProcessAgent::ChildRecord> > >::operator[](int const&) at /usr/include/c++/8/bits/stl_map.h:495
#13 0x0000000000b9f289 in std::_Function_base::_Function_base() at /usr/include/c++/8/bits/std_function.h:252
#14 0x00000000000354b0 in std::function<void (int, ChildProcessAgent::ProcessStatus)>::function(std::function<void (int, ChildProcessAgent::ProcessStatus)> const&) at /usr/include/c++/8/bits/std_function.h:654
#15 (nil) in std::function<void (int, ChildProcessAgent::ProcessStatus)>::operator=(std::function<void (int, ChildProcessAgent::ProcessStatus)> const&) at /usr/include/c++/8/bits/std_function.h:463
#16 0x000000000000000b in ChildProcessAgent::ChildRecord::operator=(ChildProcessAgent::ChildRecord const&) at /tmp/factorio-build-NKXqGz/src/ChildProcessAgent.hpp:33
#17 0x000000000051df8b in ChildProcessAgent::fork(std::function<void (int)> const&, std::function<void (int, ChildProcessAgent::ProcessStatus)> const&) at /tmp/factorio-build-NKXqGz/src/ChildProcessAgent.cpp:109
#18 0x00000000016450a9 in SystemUtil::runProcessDontWait(std::string const&, std::vector<std::string, std::allocator<std::string> > const&) at /tmp/factorio-build-NKXqGz/src/Util/SystemUtil.cpp:519
#19 0x00000000016450da in std::string::_M_rep() const at /usr/include/c++/8/bits/basic_string.h:3303
#20 0x00000000016454cf in std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string() at /usr/include/c++/8/bits/basic_string.h:3621
#21 0x000000000165c58b in SystemUtil::openFileManagerAndSelectFile(Filesystem::Path const&) at /tmp/factorio-build-NKXqGz/src/Util/SystemUtil.cpp:568
#22 0x0000000001647e68 in Util::showCrashedError(std::string const&, std::string const&) at /tmp/factorio-build-NKXqGz/src/Util/Util.cpp:126
#23 0x000000000164c7a7 in std::string::_M_rep() const at /usr/include/c++/8/bits/basic_string.h:3303
#24 0x0000000000633a91 in std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string() at /usr/include/c++/8/bits/basic_string.h:3621
#25 0x0000000000633bf2 in Util::showCrashedError(std::string const&) at /tmp/factorio-build-NKXqGz/src/Util/Util.cpp:91
#26 0x0000000000fcb8f2 in CrashHandler::showCrashedMessage() at /tmp/factorio-build-NKXqGz/src/Util/CrashHandler.cpp:240
#27 0x000000000190ffbf in CrashHandler::writeStackTrace(CrashHandler::CrashReason) at /tmp/factorio-build-NKXqGz/src/Util/CrashHandler.cpp:227
#28 0x00000000000076ba in CrashHandler::commonSignalHandler(int) at /tmp/factorio-build-NKXqGz/src/Util/CrashHandler.cpp:595
#29 (nil) in CrashHandler::SignalHandler(int) at /tmp/factorio-build-NKXqGz/src/Util/CrashHandler.cpp:609
#30 (nil) in ?? at ??:0
#31 0x00007f92e731e550 in ?? at ??:0
#32 0x000000000211c320 in ?? at ??:0
#33 0x00007f92e731e510 in png_safe_error at /tmp/factorio-build-NKXqGz/libraries/png/pngerror.c:916
#34 0x00007f92e731df30 in png_default_error at /tmp/factorio-build-NKXqGz/libraries/png/pngerror.c:754
#35 0x00007f92e731e550 in png_error at /tmp/factorio-build-NKXqGz/libraries/png/pngerror.c:88
#36 0x000000000211c320 in png_error at /tmp/factorio-build-NKXqGz/libraries/png/pngerror.c:88
#37 0x00007f92e731e510 in png_chunk_error at /tmp/factorio-build-NKXqGz/libraries/png/pngerror.c:485
#38 0x00007f92e731e530 in png_read_IDAT_data at /tmp/factorio-build-NKXqGz/libraries/png/pngrutil.c:4120
#39 0x00007f92e731def0 in png_read_row at /tmp/factorio-build-NKXqGz/libraries/png/pngread.c:539
#40 0x00007f93a10f253c in png_read_image at /tmp/factorio-build-NKXqGz/libraries/png/pngread.c:745 (discriminator 3)
#41 0x00007f92e731df98 in preloadPng(unsigned int&, unsigned int&, MemoryBitmapData&, unsigned char*, unsigned int, bool) at /tmp/factorio-build-NKXqGz/src/Graphics/PngLoad.cpp:100
#42 0x00007f92e731e550 in std::__atomic_base<bool>::store(bool, std::memory_order) at /usr/include/c++/8/bits/atomic_base.h:374
#43 0x000000000211c320 in std::__atomic_base<bool>::operator=(bool) at /usr/include/c++/8/bits/atomic_base.h:267
#44 0x0000000001938e81 in std::atomic<bool>::operator=(bool) at /usr/include/c++/8/atomic:79
#45 0x00007f92e731df30 in SpriteLoaders::CrossPlatformImageLoader::preload() at /tmp/factorio-build-NKXqGz/src/Graphics/CrossPlatformImageLoader.cpp:14
#46 0x00007f92e731df30 in std::__atomic_base<unsigned int>::operator++() at /usr/include/c++/8/bits/atomic_base.h:296
#47 0x00007f92e731e550 in PreloadWorker::preload() at /tmp/factorio-build-NKXqGz/src/Graphics/ParallelSpriteLoader.cpp:61
#48 0x000000000211c320 in PreloadWorker::compute()::{lambda()#1}::operator()() const at /tmp/factorio-build-NKXqGz/src/Graphics/ParallelSpriteLoader.cpp:40
#49 0x00007f92e731e510 in void std::__invoke_impl<void, PreloadWorker::compute()::{lambda()#1}>(std::__invoke_other, PreloadWorker::compute()::{lambda()#1}&&) at /usr/include/c++/8/bits/invoke.h:60
#50 0x00000000007fca62 in std::__invoke_result<PreloadWorker::compute()::{lambda()#1}>::type std::__invoke<PreloadWorker::compute()::{lambda()#1}>(std::__invoke_result&&, (PreloadWorker::compute()::{lambda()#1}&&)...) at /usr/include/c++/8/bits/invoke.h:95
#51 0x00007f92b2768858 in decltype (__invoke((_S_declval<0ul>)())) std::thread::_Invoker<std::tuple<PreloadWorker::compute()::{lambda()#1}> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) at /usr/include/c++/8/thread:234
#52 0x00007f92b28fe808 in std::thread::_Invoker<std::tuple<PreloadWorker::compute()::{lambda()#1}> >::operator()() at /usr/include/c++/8/thread:243
#53 0x00007f92b28fe808 in std::thread::_State_impl<std::thread::_Invoker<std::tuple<PreloadWorker::compute()::{lambda()#1}> > >::_M_run() at /usr/include/c++/8/thread:186
#54 0x00000000020f7298 in execute_native_thread_routine at blake2s.c:?
#55 0x00000000020f7298 in ?? at ??:0
#56 0x00007f9200000000 in ?? at ??:0
Stack trace logging done