I did a fresh download, default settings, no mods, and then installed this mod: genshin-impact skin
As long as that mod is active, the game will crash during croppng images phase. Removing the mod removes the crash.
pngcheck explains why the game is crashing:
./genshin-impact-skin/images/ningguang/145.png EOF while reading IDAT data
./genshin-impact-skin/images/ningguang/144.png EOF while reading IDAT data
./genshin-impact-skin/images/ningguang/143.png EOF while reading IDAT data
Admittedly, this is complaining on a high comfort level, but would you mind catching that error and giving a message like "mod has broken picture", similar to how you handle lua crashes?
Since the log doesn't contain a stacktrace, I also captured a stacktrace with gdb:
Code: Select all
2.251 Parallel Sprite Loader initialized (threads: 15)
terminate called after throwing an instance of 'RuntimeError'
what(): bad adaptive filter value
terminate called recursively
Thread 51 "PreloadWorker" received signal SIGABRT, Aborted.
[Switching to Thread 0x7fff5dffb640 (LWP 116983)]
0x00007ffff79c334c in __pthread_kill_implementation () from /usr/lib/libc.so.6
(gdb) bt
#0 0x00007ffff79c334c in __pthread_kill_implementation () from /usr/lib/libc.so.6
#1 0x00007ffff79764b8 in raise () from /usr/lib/libc.so.6
#2 0x00007ffff7960534 in abort () from /usr/lib/libc.so.6
#3 0x00000000006a4f99 in __gnu_cxx::__verbose_terminate_handler () at ../../../../libstdc++-v3/libsupc++/vterminate.cc:95
#4 0x0000000001f4c986 in __cxxabiv1::__terminate (handler=<optimized out>) at ../../../../libstdc++-v3/libsupc++/eh_terminate.cc:48
#5 0x0000000001fef479 in __cxa_call_terminate (ue_header=0x7fff3c9368e0) at ../../../../libstdc++-v3/libsupc++/eh_call.cc:54
#6 0x0000000001f4c163 in __cxxabiv1::__gxx_personality_v0 (version=<optimized out>, actions=6, exception_class=5138137972254386944, ue_header=0x7fff3c9368e0, context=<optimized out>)
at ../../../../libstdc++-v3/libsupc++/eh_personality.cc:685
#7 0x0000000001ff67cc in _Unwind_RaiseException_Phase2 (exc=0x7fff3c9368e0, context=0x7fff5dff9bd0, frames_p=0x7fff5dff9cc0) at ../../../libgcc/unwind.inc:64
#8 0x0000000001ff6fa0 in _Unwind_RaiseException (exc=0x7fff3c9368e0) at ../../../libgcc/unwind.inc:136
#9 0x0000000001f4cb37 in __cxxabiv1::__cxa_throw (obj=<optimized out>, tinfo=0x20b9da0 <typeinfo for RuntimeError>, dest=0x7687c0 <RuntimeError::~RuntimeError()>) at ../../../../libstdc++-v3/libsupc++/eh_throw.cc:90
#10 0x00000000004c6a08 in handlePngLibError (pngStruct=0x1c8bc, errorMsg=0x20178b7 "bad adaptive filter value") at /tmp/factorio-build-s2MpP5/src/Graphics/PngLoad.cpp:38
#11 0x0000000001a8e5e1 in png_error(const png_struct_def * __restrict__, const char *) (png_ptr=0x7fff3c000b70, error_message=0x20178b7 "bad adaptive filter value") at /tmp/factorio-build-s2MpP5/libraries/png/pngerror.c:83
#12 0x0000000000c6d09d in png_read_row () at /tmp/factorio-build-s2MpP5/libraries/png/pngread.c:545
#13 png_read_image () at /tmp/factorio-build-s2MpP5/libraries/png/pngread.c:747
#14 preloadPng () at /tmp/factorio-build-s2MpP5/src/Graphics/PngLoad.cpp:118
#15 SpriteLoaders::CrossPlatformImageLoader::preload (this=0x1c8bc) at /tmp/factorio-build-s2MpP5/src/Graphics/CrossPlatformImageLoader.cpp:15
#16 0x000000000181b169 in PreloadWorker::preload () at /tmp/factorio-build-s2MpP5/src/Graphics/ParallelSpriteLoader.cpp:60
#17 PreloadWorker::compute()::{lambda()#1}::operator()() const () at /tmp/factorio-build-s2MpP5/src/Graphics/ParallelSpriteLoader.cpp:40
#18 std::__invoke_impl<void, PreloadWorker::compute()::{lambda()#1}>(std::__invoke_other, PreloadWorker::compute()::{lambda()#1}&&) () at /home/build/gcc-11.2/include/c++/11.2.0/bits/invoke.h:61
#19 std::__invoke<PreloadWorker::compute()::{lambda()#1}>(PreloadWorker::compute()::{lambda()#1}&&) () at /home/build/gcc-11.2/include/c++/11.2.0/bits/invoke.h:96
#20 std::thread::_Invoker<std::tuple<PreloadWorker::compute()::{lambda()#1}> >::_M_invoke<0ul>(std::_Index_tuple<0ul>) () at /home/build/gcc-11.2/include/c++/11.2.0/bits/std_thread.h:253
#21 std::thread::_Invoker<std::tuple<PreloadWorker::compute()::{lambda()#1}> >::operator()() () at /home/build/gcc-11.2/include/c++/11.2.0/bits/std_thread.h:260
#22 std::thread::_State_impl<std::thread::_Invoker<std::tuple<PreloadWorker::compute()::{lambda()#1}> > >::_M_run() (this=0x1c8bc) at /home/build/gcc-11.2/include/c++/11.2.0/bits/std_thread.h:211
#23 0x0000000001fc5820 in std::execute_native_thread_routine (__p=0xb65c150) at ../../../../../libstdc++-v3/src/c++11/thread.cc:82
#24 0x00007ffff79c15c2 in start_thread () from /usr/lib/libc.so.6
#25 0x00007ffff7a46584 in clone () from /usr/lib/libc.so.6
(gdb)