Autosave file that works: https://ionic.de/X3TC/save-bug/X12-autosave-good.sav
Manual save file that makes both Linux and Windows client crash: https://ionic.de/X3TC/save-bug/X02-manual-bad.sav
I provide both files because they were created only seconds apart. Maybe the diff will also be useful - although I do not know the save files' internal format.
There's one thing that I did find out, though. It looks like save files are gzip-compressed, which might be what triggers this bug. My system is using zlib 1.2.11, while X3TC ships an older release (I haven't been able to find out what exact version, though.)
This shouldn't matter IF the libraries in lib/ take precedence correctly, but starting X3TC_main via testandlaunch, which is supposed to set the LD_LIBRARY_PATH env var doesn't change the occurrence of that bug.
Which is to say... check this:
Code: Select all
# gunzip -c < X12-autosave-good.sav > X12-autosave-good.sav.uncompressed
Code: Select all
# gunzip -c < X02-manual-bad.sav > X02-manual-bad.sav.uncompressed
gzip: stdin: invalid compressed data--crc error
gzip: stdin: invalid compressed data--length error
Again - this was with my system gzip binary - I cannot test with X3TC's zlib, because you do not ship a corresponding gzip binary. Also, I have an x86_64 system with both x86_64 and x86 libraries (multilib), but no x86 gzip binary, so I cannot just preload your shipped zlib.
So, besides the X3TC's Linux client producing corrupt save files, your client doesn't seem to check whether the gzip data is actually valid. Please do that in future releases.
That's as much as I could debug. I cannot provide more information on *why* the Linux client is producing broken files.