IndexOutOfRangeException on loading save due to incorrectly serialized vehicle

Trainzack

New Member
Apr 18, 2026
3
1

Game Version

v2026.4.15.4141

Operating System

Linux (Debian 12)

What Happened​

When loading a specific save file (created earlier in the same game session), KSA crashed to desktop while deserializing one of the vehicles. The following was logged into the console:

Code:
15:16:52  INFO started loading save game 'test3'
15:16:52 ERROR Unhandled exception System.IndexOutOfRangeException: Index was outside the bounds of the array.
   at KSA.PartTree.Deserialize(PartInstance partInstance)
   at KSA.Vehicle.DeserializeSave(VehicleData vehicleData)
   at KSA.Vehicle.CreateVehicleFromSaveGameData(CelestialSystem system, VehicleData vehicleData)
   at KSA.CelestialSystem.DeserializeSave(CelestialSystemData system)
   at KSA.Universe.DeserializeSave(UniverseData universeData)
   at KSA.UncompressedSave.Load()
   at KSA.SuccessActionPopup.OnSuccess()
   at KSA.SuccessActionPopup.<>c.<.cctor>b__5_1(Popup popup)
   at KSA.PopupButton`1.DrawUi(T parent, Single width)
   at KSA.Popup.DrawUi[TPopup](TPopup parent, IPopupWidget`1[] widgets)
   at KSA.ConfirmActionPopup.OnDrawUi()
   at KSA.Popup.DrawAll()
   at KSA.Program.OnDrawUiFrame(Double dt)
   at KSA.Program.OnFrame(Double currentPlayerTime, Double dtPlayer)
   at KSA.App.Run()
   at KSA.Program.Main(String[] inArgs).
Unhandled exception. System.IndexOutOfRangeException: Index was outside the bounds of the array.
   at KSA.PartTree.Deserialize(PartInstance partInstance)
   at KSA.Vehicle.DeserializeSave(VehicleData vehicleData)
   at KSA.Vehicle.CreateVehicleFromSaveGameData(CelestialSystem system, VehicleData vehicleData)
   at KSA.CelestialSystem.DeserializeSave(CelestialSystemData system)
   at KSA.Universe.DeserializeSave(UniverseData universeData)
   at KSA.UncompressedSave.Load()
   at KSA.SuccessActionPopup.OnSuccess()
   at KSA.SuccessActionPopup.<>c.<.cctor>b__5_1(Popup popup)
   at KSA.PopupButton`1.DrawUi(T parent, Single width)
   at KSA.Popup.DrawUi[TPopup](TPopup parent, IPopupWidget`1[] widgets)
   at KSA.ConfirmActionPopup.OnDrawUi()
   at KSA.Popup.DrawAll()
   at KSA.Program.OnDrawUiFrame(Double dt)
   at KSA.Program.OnFrame(Double currentPlayerTime, Double dtPlayer)
   at KSA.App.Run()
   at KSA.Program.Main(String[] inArgs)
15:16:52  WARN Monitor subprocess error output: Unhandled exception. System.AggregateException: One or more errors occurred. (An error occurred trying to start process 'dotnet-dump' with working directory '/home/eli/Documents/My Games/Kitten Space Agency/crashdumps/LastChance'. No such file or directory)
 ---> System.ComponentModel.Win32Exception (2): An error occurred trying to start process 'dotnet-dump' with working directory '/home/eli/Documents/My Games/Kitten Space Agency/crashdumps/LastChance'. No such file or directory
   at System.Diagnostics.Process.ForkAndExecProcess(ProcessStartInfo startInfo, String resolvedFilename, String[] argv, String[] envp, String cwd, Boolean setCredentials, UInt32 userId, UInt32 groupId, UInt32[] groups, Int32& stdinFd, Int32& stdoutFd, Int32& stderrFd, Boolean usesTerminal, Boolean throwOnNoExec)
   at System.Diagnostics.Process.StartCore(ProcessStartInfo startInfo)
   at System.Diagnostics.Process.Start(ProcessStartInfo startInfo)
   at Brutal.Monitor.Subprocess.Collector.CollectSync(String folder, DumpType dumpType, CancellationTokenSource cancellationToken)
   at Brutal.Monitor.Subprocess.Collector.<>c__DisplayClass12_0.<Collect>b__0()
   at System.Threading.Tasks.Task`1.InnerInvoke()
   at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
   at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
   --- End of inner exception stack trace ---
   at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
   at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
   at Brutal.Monitor.Subprocess.Collector.Collect(String folder, DumpType type)
   at Brutal.Monitor.Subprocess.Collector.CollectLastChance()
   at Brutal.Monitor.Subprocess.Subprocess.Run()
   at Brutal.Monitor.Subprocess.Subprocess..ctor(Process parentProcess)
   at Brutal.Monitor.Subprocess.Program.Main(String[] args)

Aborted (core dumped)

What Was Expected​

The game should not crash when deserializing invalid vehicle data. The rocket editor+serialization process shouldn't produce a vehicle that can't be deserialized.

Reproduction Steps​

  1. Open KSA
  2. Load the attached save file ("test3")
  3. Observe that KSA crashes

Reproduction Rate​

Always

Additional Info​

  • Save File: Save file attached.
  • Other Notes: Through modifying a copy, I confirmed that "Rocket_1_1" is the vehicle causing the crash. Removing just that vehicle allows the save to be loaded with no errors.
 

Attachments

Upvote 0