[Rseding91] [2.0.16] Save file corruption: Invalid bool loaded (including autosaves)

This subforum contains all the issues which we already resolved.
DomNomNom
Burner Inserter
Burner Inserter
Posts: 16
Joined: Sat Apr 11, 2020 11:48 am
Contact:

[Rseding91] [2.0.16] Save file corruption: Invalid bool loaded (including autosaves)

Post by DomNomNom »

> What did you do?
I played space age multiplayer on version 2.0.14, got to Gleba. Then I saved it to do spend 10+ hours to build some quite large and nifty combinator logic in single player editor mode. The combinator network effectively allows having a power-like plot for any circuit signal, with a logarithmic x-axis and autoscaling y-axis.
My design incorporates many combinators and legendary items such as substations as they're easy to get in editor mode.
In the editor settings, I changed robot worker speed to 12 and made nauvis biters friendly.

I saved the game and leave the it running. I want to show the design off to a friend on my multiplayer server but after uploading the save, the server printed this error while loading that save:

Code: Select all

   2.720 Warning Map.cpp:358: Map loading failed: Invalid bool loaded from input file. File could be corrupted.
   2.817 Error ServerMultiplayerManager.cpp:84: MultiplayerManager failed: "Invalid bool loaded from input file. File could be corrupted."
I switched back to my single player game, exited editor mode to normal play, then did another save/upload. Same error on the server.
Then I did something that I now regret - without first saving the cool designs as blueprints, I restart my game client.


> What happened?
Turns out my game can't load the save file it created and prints the same error in the log! I try to load each of the three autosaves, but no dice.
Trying to load them with 2.0.15 also claims they are invalid in the same manner.
Update: I've re-tested it on 2.0.16, resulting in the same error.

> What did you expect to happen instead? It might be obvious to you, but do it anyway!
I can load the save.
Alternatively, the game pausing or crashing after writing an invalid save may be preferable because then there will be at lease 2 autosaves that are not corrupted and I have better info to give to you on which in-game action cause the state of the save to be invalid.

> Does it happen always, once, or sometimes?
This happens every time I load these saves.

Could you please help me recover my combinator network on Gleba that took many hours to build? The rest of the save is not important to me as I have a working copy before I switched to editor mode.
Thank you for making this awesome game which I've enjoyed for over 2000 hours before hitting a bug as significant as this one.
Attachments
factorio-current.log
(7.98 KiB) Downloaded 20 times
space run 2.zip
Significantly older save that loads
(23.49 MiB) Downloaded 15 times
_autosave1.zip
corrupted autosave
(24.08 MiB) Downloaded 23 times
_autosave2.zip
corrupted autosave
(24.04 MiB) Downloaded 21 times
_autosave3.zip
corrupted autosave
(24.05 MiB) Downloaded 18 times
space run 2 - circuit magic.zip
corrupted manual save
(24.02 MiB) Downloaded 21 times
farazsth98
Burner Inserter
Burner Inserter
Posts: 6
Joined: Sat Oct 26, 2024 11:29 am
Contact:

Re: [2.0.16] Save file corruption: Invalid bool loaded (including autosaves)

Post by farazsth98 »

Do you have any details about what your character was doing at the time of the crash?

I'm adding the stack trace from attempting to load this save and failing down below.

The TL;DR is that when you made the save, your character had some logistics request on it that were not written to the save file correctly, so when the game tries to load your character again, it can't read the data it wrote.

Someone else ran into this issue just minutes ago on the official Factorio discord, and in their case, the stack trace ends the same way at `LogisticPointFilters::load`, but they had an additional circumstance: their character was in a train locomotive at the time of the save, and so the stack trace actually includes trying to load the locomotive which has the player in it.

So yeah, if you have any details about what your character was doing, and / or what else was happening around you when you made the save, that would be good to have.

Code: Select all

  23.094 Error RuntimeError.cpp:24: Invalid bool loaded from input file. File could be corrupted.
Factorio crashed. Generating symbolized stacktrace, please wait ...
C:\Users\build\AppData\Local\Temp\factorio-build-qKZ8vt\libraries\StackWalker\StackWalker.cpp(924): StackWalker::ShowCallstack
C:\Users\build\AppData\Local\Temp\factorio-build-qKZ8vt\src\Util\Logger.cpp(337): Logger::writeStacktrace
C:\Users\build\AppData\Local\Temp\factorio-build-qKZ8vt\src\Util\Logger.cpp(379): Logger::logStacktrace
C:\Users\build\AppData\Local\Temp\factorio-build-qKZ8vt\src\RuntimeError.cpp(11): RuntimeError::RuntimeError
C:\Users\build\AppData\Local\Temp\factorio-build-qKZ8vt\src\Util\Exceptions.hpp(47): DeserialiserException::DeserialiserException
C:\Users\build\AppData\Local\Temp\factorio-build-qKZ8vt\src\Map\MapDeserialiser.hpp(140): Deserialiser::load<bool>
C:\Users\build\AppData\Local\Temp\factorio-build-qKZ8vt\src\Logistics\LogisticPointFilters.cpp(73): LogisticPointFilters::load
C:\Users\build\AppData\Local\Temp\factorio-build-qKZ8vt\src\Logistics\LogisticPoint.cpp(91): LogisticPoint::LogisticPoint
C:\Users\build\AppData\Local\Temp\factorio-build-qKZ8vt\src\Entity\Character.cpp(172): Character::Character
C:\Users\build\AppData\Local\Temp\factorio-build-qKZ8vt\src\Data\InstanceLoader.hpp(56): `InstanceLoader<ID<EntityPrototype,unsigned short> >::registerLoader<Character>'::`2'::<lambda_1>::<lambda_invoker_cdecl><EntityLoadingParameters>
C:\Users\build\AppData\Local\Temp\factorio-build-qKZ8vt\src\Entity\EntityPrototype.cpp(1006): EntityPrototype::loadEntity
C:\Users\build\AppData\Local\Temp\factorio-build-qKZ8vt\src\Surface\Chunk.cpp(333): Chunk::load
C:\Users\build\AppData\Local\Temp\factorio-build-qKZ8vt\src\Surface\Surface.cpp(1263): Surface::load
C:\Users\build\AppData\Local\Temp\factorio-build-qKZ8vt\src\Map\Map.cpp(573): Map::loadData
C:\Users\build\AppData\Local\Temp\factorio-build-qKZ8vt\src\Map\Map.cpp(335): Map::load
C:\Users\build\AppData\Local\Temp\factorio-build-qKZ8vt\src\Scenario\Scenario.cpp(232): Scenario::loadFactory
C:\Users\build\AppData\Local\Temp\factorio-build-qKZ8vt\src\Scenario\ParallelScenarioLoader.cpp(192): ParallelScenarioLoader::doLoad
C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Tools\MSVC\14.29.30133\include\thread(56): std::thread::_Invoke<std::tuple<void (__cdecl*)(MapInterface,ParallelScenarioLoader *,MapDeserialiser *,enum InputType,InputSource *,MultiplayerManagerBase *,NamedBool<EnableReplayTag>),MapInterface,ParallelScenarioLoader *,MapDeserialiser *,enum InputType,InputSource *,MultiplayerManagerBase *,enum NamedBool<EnableReplayTag>::Enum>,0,1,2,3,4,5,6,7>
minkernel\crts\ucrt\src\appcrt\startup\thread.cpp(97): thread_start<unsigned int (__cdecl*)(void *),1>
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00007FFF6AB47374)
00007FFF6AB47374 (KERNEL32): (filename not available): BaseThreadInitThunk
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00007FFF6B47CC91)
00007FFF6B47CC91 (ntdll): (filename not available): RtlUserThreadStart
Stack trace logging done
0x57F
Manual Inserter
Manual Inserter
Posts: 1
Joined: Sun Nov 10, 2024 10:05 pm
Contact:

Re: [2.0.16] Save file corruption: Invalid bool loaded (including autosaves)

Post by 0x57F »

I just had a similar issue, except this time with my main save. I have the same error message, Invalid bool loaded, and this persists across all previous autosaves, up until the one created from my first planet visit.

Code: Select all

 149.971 Loading map /home/daniel/.factorio/saves/SPACE MAYBE.zip: 18458161 bytes.
 149.980 Loading level.dat: 46613673 bytes.
 149.985 Info Scenario.cpp:178: Map version 2.0.15-4
 150.220 Error RuntimeError.cpp:24: Invalid bool loaded from input file. File could be corrupted.
Factorio crashed. Generating symbolized stacktrace, please wait ...
/tmp/factorio-build-y8tCM8/src/Util/StacktraceToStream.cpp (52): walkStackAndPrintToStream
/tmp/factorio-build-y8tCM8/src/Util/StacktraceToStream.cpp (60): Util::printStacktraceToStream(WriteStream&)
/tmp/factorio-build-y8tCM8/src/Util/Logger.cpp (334): Logger::writeStacktrace(WriteStream*, StackTraceInfo*)
/tmp/factorio-build-y8tCM8/src/Util/Logger.cpp (379): Logger::logStacktrace(StackTraceInfo*)
/tmp/factorio-build-y8tCM8/src/Util/Logging.cpp (58): Logging::logStackTrace()
/tmp/factorio-build-y8tCM8/src/RuntimeError.cpp (25): RuntimeError::checkLogStackTrace(char const*)
/tmp/factorio-build-y8tCM8/src/RuntimeError.cpp (20): RuntimeError::checkLogStackTrace(char const*)
/tmp/factorio-build-y8tCM8/src/RuntimeError.cpp (11): RuntimeError::RuntimeError(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
/tmp/factorio-build-y8tCM8/src/Util/Exceptions.hpp (47): DeserialiserException::DeserialiserException(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
/tmp/factorio-build-y8tCM8/src/Util/DeserialiserHelper.hpp (178): void DeserialiserHelper<MapDeserialiser>::loadFundamental<bool>(MapDeserialiser&, bool&)
/tmp/factorio-build-y8tCM8/src/Util/DeserialiserHelper.hpp (730): void DeserialiserHelper<MapDeserialiser>::load<bool>(MapDeserialiser&, bool&)
/tmp/factorio-build-y8tCM8/src/Map/MapDeserialiser.hpp (140): void MapDeserialiser::load<bool>(bool&)
/tmp/factorio-build-y8tCM8/src/Map/MapDeserialiser.hpp (166): MapDeserialiser& MapDeserialiser::operator>><bool>(bool&)
/tmp/factorio-build-y8tCM8/src/Logistics/LogisticPointFilters.cpp (73): LogisticPointFilters::load(MapDeserialiser&)
/tmp/factorio-build-y8tCM8/src/Logistics/LogisticPoint.cpp (88): LogisticPoint::LogisticPoint(MapDeserialiser&, LogisticMode, Entity&, LogisticPointFlags, bool)
/tmp/factorio-build-y8tCM8/libraries/CommonUtil/UniquePointer.hpp (159): LogisticPoint* UniquePointer<LogisticPoint, SimpleDeleter<LogisticPoint>, true>::construct<MapDeserialiser&, LogisticMode::Enum, Character&, LogisticPointFlags::Enum>(MapDeserialiser&, LogisticMode::Enum&&, Character&, LogisticPointFlags::Enum&&)
/tmp/factorio-build-y8tCM8/libraries/CommonUtil/UniquePointer.hpp (93): void UniquePointer<LogisticPoint, SimpleDeleter<LogisticPoint>, true>::emplace<MapDeserialiser&, LogisticMode::Enum, Character&, LogisticPointFlags::Enum>(MapDeserialiser&, LogisticMode::Enum&&, Character&, LogisticPointFlags::Enum&&)
/tmp/factorio-build-y8tCM8/src/Util/DeserialiserHelper.hpp (147): void DeserialiserHelper<MapDeserialiser>::loadValue<LogisticPoint, SimpleDeleter<LogisticPoint>, true, LogisticMode::Enum, Character&, LogisticPointFlags::Enum>(MapDeserialiser&, UniquePointer<LogisticPoint, SimpleDeleter<LogisticPoint>, true>&, LogisticMode::Enum&&, Character&, LogisticPointFlags::Enum&&)
/tmp/factorio-build-y8tCM8/src/Util/DeserialiserHelper.hpp (732): void DeserialiserHelper<MapDeserialiser>::load<UniquePointer<LogisticPoint, SimpleDeleter<LogisticPoint>, true>, LogisticMode::Enum, Character&, LogisticPointFlags::Enum>(MapDeserialiser&, UniquePointer<LogisticPoint, SimpleDeleter<LogisticPoint>, true>&, LogisticMode::Enum&&, Character&, LogisticPointFlags::Enum&&)
/tmp/factorio-build-y8tCM8/src/Map/MapDeserialiser.hpp (140): void MapDeserialiser::load<UniquePointer<LogisticPoint, SimpleDeleter<LogisticPoint>, true>, LogisticMode::Enum, Character&, LogisticPointFlags::Enum>(UniquePointer<LogisticPoint, SimpleDeleter<LogisticPoint>, true>&, LogisticMode::Enum&&, Character&, LogisticPointFlags::Enum&&)
/tmp/factorio-build-y8tCM8/src/Util/DeserialiserHelper.hpp (746): void DeserialiserHelper<MapDeserialiser>::loadOptional<UniquePointer<LogisticPoint, SimpleDeleter<LogisticPoint>, true>, LogisticMode::Enum, Character&, LogisticPointFlags::Enum>(MapDeserialiser&, UniquePointer<LogisticPoint, SimpleDeleter<LogisticPoint>, true>&, LogisticMode::Enum&&, Character&, LogisticPointFlags::Enum&&)
/tmp/factorio-build-y8tCM8/src/Util/DeserialiserHelper.hpp (742): void DeserialiserHelper<MapDeserialiser>::loadOptional<UniquePointer<LogisticPoint, SimpleDeleter<LogisticPoint>, true>, LogisticMode::Enum, Character&, LogisticPointFlags::Enum>(MapDeserialiser&, UniquePointer<LogisticPoint, SimpleDeleter<LogisticPoint>, true>&, LogisticMode::Enum&&, Character&, LogisticPointFlags::Enum&&)
/tmp/factorio-build-y8tCM8/src/Map/MapDeserialiser.hpp (154): void MapDeserialiser::loadOptional<UniquePointer<LogisticPoint, SimpleDeleter<LogisticPoint>, true>, LogisticMode::Enum, Character&, LogisticPointFlags::Enum>(UniquePointer<LogisticPoint, SimpleDeleter<LogisticPoint>, true>&, LogisticMode::Enum&&, Character&, LogisticPointFlags::Enum&&)
/tmp/factorio-build-y8tCM8/src/Entity/Character.cpp (172): Character::Character(EntityLoadingParameters const&, MapDeserialiser&)
/tmp/factorio-build-y8tCM8/src/Data/InstanceLoader.hpp (56): Entity* InstanceLoader<ID<EntityPrototype, unsigned short> >::registerLoader<Character>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, IfNoPrototype)::{lambda(auto:1 const&, MapDeserialiser&)#1}::operator()<EntityLoadingParameters>(EntityLoadingParameters const&, MapDeserialiser&) const
/tmp/factorio-build-y8tCM8/src/Data/InstanceLoader.hpp (56): Entity* InstanceLoader<ID<EntityPrototype, unsigned short> >::registerLoader<Character>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, IfNoPrototype)::{lambda(auto:1 const&, MapDeserialiser&)#1}::_FUN<EntityLoadingParameters>(EntityLoadingParameters const&, MapDeserialiser&)
/tmp/factorio-build-y8tCM8/src/Entity/EntityPrototype.cpp (1006): EntityPrototype::loadEntity(ID<EntityPrototype, unsigned short>, Map&, MapDeserialiser&, bool*, bool)
/tmp/factorio-build-y8tCM8/src/Surface/Chunk.cpp (333): Chunk::load(MapDeserialiser&, Surface&, bool)
/tmp/factorio-build-y8tCM8/src/Surface/Surface.cpp (1262): Surface::load(MapDeserialiser&, unsigned int*, unsigned int, ProgressObserver*)
/tmp/factorio-build-y8tCM8/src/Map/Map.cpp (575): Map::loadData(MapDeserialiser&, GlobalModSettings const&, ProgressObserver*)
/tmp/factorio-build-y8tCM8/src/Map/Map.cpp (335): Map::load(MapInterface, MapDeserialiser&, GlobalModSettings const&, ProgressObserver*)
/tmp/factorio-build-y8tCM8/src/Scenario/Scenario.cpp (232): Scenario::loadFactory(MapInterface, Filesystem::Path const*, Filesystem::Path const&, ScenarioExecutionContext, LoadType, MapDeserialiser*, InputType, InputSource*, MultiplayerManagerBase*, ProgressObserver*, bool, InputListener*)
/tmp/factorio-build-y8tCM8/src/Scenario/ParallelScenarioLoader.cpp (192): ParallelScenarioLoader::doLoad(MapInterface, ParallelScenarioLoader*, MapDeserialiser*, InputType, InputSource*, MultiplayerManagerBase*, NamedBool<EnableReplayTag>)
/opt/gcc-13.2.0/include/c++/13.2.0/bits/invoke.h (61): void std::__invoke_impl<void, void (*)(MapInterface, ParallelScenarioLoader*, MapDeserialiser*, InputType, InputSource*, MultiplayerManagerBase*, NamedBool<EnableReplayTag>), MapInterface, ParallelScenarioLoader*, MapDeserialiser*, InputType, InputSource*, MultiplayerManagerBase*, NamedBool<EnableReplayTag>::Enum>(std::__invoke_other, void (*&&)(MapInterface, ParallelScenarioLoader*, MapDeserialiser*, InputType, InputSource*, MultiplayerManagerBase*, NamedBool<EnableReplayTag>), MapInterface&&, ParallelScenarioLoader*&&, MapDeserialiser*&&, InputType&&, InputSource*&&, MultiplayerManagerBase*&&, NamedBool<EnableReplayTag>::Enum&&)
/opt/gcc-13.2.0/include/c++/13.2.0/bits/invoke.h (96): std::__invoke_result<void (*)(MapInterface, ParallelScenarioLoader*, MapDeserialiser*, InputType, InputSource*, MultiplayerManagerBase*, NamedBool<EnableReplayTag>), MapInterface, ParallelScenarioLoader*, MapDeserialiser*, InputType, InputSource*, MultiplayerManagerBase*, NamedBool<EnableReplayTag>::Enum>::type std::__invoke<void (*)(MapInterface, ParallelScenarioLoader*, MapDeserialiser*, InputType, InputSource*, MultiplayerManagerBase*, NamedBool<EnableReplayTag>), MapInterface, ParallelScenarioLoader*, MapDeserialiser*, InputType, InputSource*, MultiplayerManagerBase*, NamedBool<EnableReplayTag>::Enum>(void (*&&)(MapInterface, ParallelScenarioLoader*, MapDeserialiser*, InputType, InputSource*, MultiplayerManagerBase*, NamedBool<EnableReplayTag>), MapInterface&&, ParallelScenarioLoader*&&, MapDeserialiser*&&, InputType&&, InputSource*&&, MultiplayerManagerBase*&&, NamedBool<EnableReplayTag>::Enum&&)
/opt/gcc-13.2.0/include/c++/13.2.0/bits/std_thread.h (292): void std::thread::_Invoker<std::tuple<void (*)(MapInterface, ParallelScenarioLoader*, MapDeserialiser*, InputType, InputSource*, MultiplayerManagerBase*, NamedBool<EnableReplayTag>), MapInterface, ParallelScenarioLoader*, MapDeserialiser*, InputType, InputSource*, MultiplayerManagerBase*, NamedBool<EnableReplayTag>::Enum> >::_M_invoke<0ul, 1ul, 2ul, 3ul, 4ul, 5ul, 6ul, 7ul>(std::_Index_tuple<0ul, 1ul, 2ul, 3ul, 4ul, 5ul, 6ul, 7ul>)
/opt/gcc-13.2.0/include/c++/13.2.0/bits/std_thread.h (299): std::thread::_Invoker<std::tuple<void (*)(MapInterface, ParallelScenarioLoader*, MapDeserialiser*, InputType, InputSource*, MultiplayerManagerBase*, NamedBool<EnableReplayTag>), MapInterface, ParallelScenarioLoader*, MapDeserialiser*, InputType, InputSource*, MultiplayerManagerBase*, NamedBool<EnableReplayTag>::Enum> >::operator()()
/opt/gcc-13.2.0/include/c++/13.2.0/bits/std_thread.h (244): std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (*)(MapInterface, ParallelScenarioLoader*, MapDeserialiser*, InputType, InputSource*, MultiplayerManagerBase*, NamedBool<EnableReplayTag>), MapInterface, ParallelScenarioLoader*, MapDeserialiser*, InputType, InputSource*, MultiplayerManagerBase*, NamedBool<EnableReplayTag>::Enum> > >::_M_run()
/tmp/tmp.dlP10F34z6/objdir/../gcc-13.2.0/libstdc++-v3/src/c++11/thread.cc (104): execute_native_thread_routine
0x728f4fa2f39c
0x728f4fab449b
0xffffffffffffffff
Stack trace logging done
I am not sure if this is the same issue or not, but I want to document it, and potentially get help.
DomNomNom
Burner Inserter
Burner Inserter
Posts: 16
Joined: Sat Apr 11, 2020 11:48 am
Contact:

Re: [2.0.16] Save file corruption: Invalid bool loaded (including autosaves)

Post by DomNomNom »

> Do you have any details about what your character was doing at the time of the crash?

In the autosaves, I was just in editor mode, in the manual save I was controlling my character and my character was just standing nearby the combinators I built like in the preview image of the save.
preview.jpg
preview.jpg (551.84 KiB) Viewed 753 times
I might've been in range of a single legendary roboport but was definitely separate from the main logistics network on Gleba.
I don't recall having any unusual requests for logistics.
DomNomNom
Burner Inserter
Burner Inserter
Posts: 16
Joined: Sat Apr 11, 2020 11:48 am
Contact:

Re: [2.0.16] Save file corruption: Invalid bool loaded (including autosaves)

Post by DomNomNom »

Just compared the logs that we both posted. Was your log generated from loading my file? It seems like there's a key difference:
For yours, factorio crashes, for mine it just reports the error and does not crash.
farazsth98
Burner Inserter
Burner Inserter
Posts: 6
Joined: Sat Oct 26, 2024 11:29 am
Contact:

Re: [2.0.16] Save file corruption: Invalid bool loaded (including autosaves)

Post by farazsth98 »

Hey, so even though it says that Factorio crashes, it doesn't actually crash.

If you hold CTRL + ALT when you click on the Settings button on the main menu, you will see a category called "The rest". You can enable something called "log stack trace on non critical exceptions", which does exactly that - since the game doesn't crash when you load this save, its non critical, so this will force it to log a stack trace when that happens.

I think they just use a generic `logStackTrace()` or similar function, which automatically just outputs the message "Factorio crashed, ...", but yeah that's how you can see the stack trace.
DomNomNom
Burner Inserter
Burner Inserter
Posts: 16
Joined: Sat Apr 11, 2020 11:48 am
Contact:

Re: [2.0.16] Save file corruption: Invalid bool loaded (including autosaves)

Post by DomNomNom »

I DID IT! :D

Thanks to the debug symbols, I managed to use x64dbg to skip over the check for the logistics point just before it branches to throw the exception and was able to load my save and copy the combinators. I would like to buy the person who advocated/decided that debug symbols should be shipped a cookie or treat of their choice.

I've yet to fully determine the root cause but it seems like it's related to nauvis not gleba in my save, as I can load it normally after all the entities on that planet have been deleted.
Attachments
Capture.PNG
Capture.PNG (27.74 KiB) Viewed 698 times
User avatar
BraveCaperCat
Filter Inserter
Filter Inserter
Posts: 305
Joined: Mon Jan 15, 2024 10:10 pm
Contact:

Re: [2.0.16] Save file corruption: Invalid bool loaded (including autosaves)

Post by BraveCaperCat »

Related: 637232
Creator of multiple mods, including Quality Assurance - My most popular one. Expect multiple modding-related questions, answers and other posts.
DomNomNom
Burner Inserter
Burner Inserter
Posts: 16
Joined: Sat Apr 11, 2020 11:48 am
Contact:

Re: [2.0.16] Save file corruption: Invalid bool loaded (including autosaves)

Post by DomNomNom »

I completely fixed my own save! :D

For the factorio devs:
I've attached a minimal broken and fixed save.
The difference between them is that in the broken one, the enemy force have the ceasefire toggled on towards the player force.

For other players in similar situations as me: I've attached a x64dbg patch for which jumps back after doing the check. This helps with debugging and finding the root cause as you can set a breakpoint on the instruction that jumps back. Also remember kids, blindly applying binary patches is like downloading/running an executable from the internet in terms of risk. In this case it's small enough to verify by yourself - might accidentally learn something.
Attachments
remove_check v2.1337.txt
(163 Bytes) Downloaded 22 times
debug_save minimal_broken.zip
(2.72 MiB) Downloaded 16 times
debug_save minimal_fixed.zip
(2.5 MiB) Downloaded 18 times
bad_toggle.PNG
bad_toggle.PNG (411.02 KiB) Viewed 662 times
Rseding91
Factorio Staff
Factorio Staff
Posts: 14363
Joined: Wed Jun 11, 2014 5:23 am
Contact:

Re: [2.0.16] Save file corruption: Invalid bool loaded (including autosaves)

Post by Rseding91 »

The underlying corruption is fixed in 2.0.16 but it does not migrate and fix save files that got into the broken state. I will add that migration for the *next* version (2.0.17).
If you want to get ahold of me I'm almost always on Discord.
poopcrank
Manual Inserter
Manual Inserter
Posts: 3
Joined: Sun Nov 10, 2024 9:33 pm
Contact:

Re: [2.0.16] Save file corruption: Invalid bool loaded (including autosaves)

Post by poopcrank »

For the non-tech savvy is there a fix? This happened to me and I have no technical prowess whatsoever. Any help? I don’t know how to use xdbg64 or any thing like that. Any help is appreciated! I made a post about this, in which my save file is there!!!
Rseding91
Factorio Staff
Factorio Staff
Posts: 14363
Joined: Wed Jun 11, 2014 5:23 am
Contact:

Re: [2.0.16] Save file corruption: Invalid bool loaded (including autosaves)

Post by Rseding91 »

So step 1 is ensure you're playing on 2.0.16 or later since every earlier version will just result in the save getting re-corrupt with the mods being used. After that, you can either wait until 2.0.17 which will auto-fix any broken save files or post the save file somewhere I can get access to it and I can try to fix them between now and 2.0.17's release.
If you want to get ahold of me I'm almost always on Discord.
poopcrank
Manual Inserter
Manual Inserter
Posts: 3
Joined: Sun Nov 10, 2024 9:33 pm
Contact:

Re: [Rseding91] [2.0.16] Save file corruption: Invalid bool loaded (including autosaves)

Post by poopcrank »

Attached!
Attachments
Tandem world.zip
(16.37 MiB) Downloaded 14 times
DomNomNom
Burner Inserter
Burner Inserter
Posts: 16
Joined: Sat Apr 11, 2020 11:48 am
Contact:

Re: [Rseding91] [2.0.16] Save file corruption: Invalid bool loaded (including autosaves)

Post by DomNomNom »

@poopcrank Here's your save fixed early :)
Brambor
Fast Inserter
Fast Inserter
Posts: 189
Joined: Thu May 07, 2015 1:52 pm
Contact:

Re: [Rseding91] [2.0.16] Save file corruption: Invalid bool loaded (including autosaves)

Post by Brambor »

DomNomNom wrote: Mon Nov 11, 2024 6:23 pm @poopcrank Here's your save fixed early :)
There are no attachments or links. I think you forgot the save.
DomNomNom
Burner Inserter
Burner Inserter
Posts: 16
Joined: Sat Apr 11, 2020 11:48 am
Contact:

Re: [Rseding91] [2.0.16] Save file corruption: Invalid bool loaded (including autosaves)

Post by DomNomNom »

ahh, here it is
Attachments
Tandem world fixed.zip
(17.09 MiB) Downloaded 14 times
Post Reply

Return to “Resolved Problems and Bugs”