This object is in archive! 

Servers crash on player join 1.202

Jack Bishop shared this bug 12 months ago
Solved

21:10:19.7300 [FATAL] Initializer: System.NullReferenceException: Object reference not set to an instance of an object. at VRage.Game.Components.MyComponentBase.Serialize(Boolean copy) at VRage.Game.Components.MyComponentContainer.Serialize(Boolean copy) at VRage.Game.Entity.MyEntity.GetObjectBuilder(Boolean copy) at Sandbox.Game.Entities.MyCubeGrid.GetObjectBuilder(Boolean copy) at Sandbox.Game.Replication.MyCubeGridReplicable.Serialize(BitStream stream, HashSet`1 cachedData, Endpoint forClient, Action writeData) at Sandbox.Game.Replication.StateGroups.MyStreamingEntityStateGroup`1.SaveReplicable(StreamClientData clientData, HashSet`1 cachedData, Endpoint forClient) at Sandbox.Game.Replication.StateGroups.MyStreamingEntityStateGroup`1.ProcessWrite(Int32 maxBitPosition, BitStream stream, Endpoint forClient, Byte packetId, HashSet`1 cachedData) at Sandbox.Game.Replication.StateGroups.MyStreamingEntityStateGroup`1.Serialize(BitStream stream, MyClientInfo forClient, MyTimeSpan serverTimestamp, MyTimeSpan lastClientTimestamp, Byte packetId, Int32 maxBitPosition, HashSet`1 cachedData) at VRage.Network.MyClient.Serialize(IMyStateGroup group, BitStream sendStream, MyTimeSpan timeStamp, Int32 messageBitSize, Boolean streaming) at VRage.Network.MyReplicationServer.SendStreamingEntry(MyClient client, MyStateDataEntry entry) at VRage.Network.MyReplicationServer.FilterStateSync(MyClient client) at VRage.Network.MyReplicationServer.SendUpdate() at Sandbox.Engine.Multiplayer.MyMultiplayerBase.Tick() at Sandbox.Engine.Multiplayer.MyDedicatedServerBase.Tick() at Sandbox.Game.World.MySession.Update(MyTimeSpan updateTime) at Sandbox.MySandboxGame.Update() at Sandbox.Engine.Platform.Game.UpdateInternal() at Sandbox.Engine.Platform.Game.RunSingleFrame() at Sandbox.Engine.Platform.FixedLoop.<>c__DisplayClass11_0.<Run>b__0() at Sandbox.Engine.Platform.GenericLoop.Run(VoidAction tickCallback) at Sandbox.Engine.Platform.Game.RunLoop() at Sandbox.MySandboxGame.Run(Boolean custom

Replies (5)

photo
2

I have the same issue


21:15:34.4407 [FATAL]  Initializer: System.NullReferenceException: Object reference not set to an instance of an object.
   at VRage.Game.Components.MyComponentBase.Serialize(Boolean copy)
   at VRage.Game.Components.MyComponentContainer.Serialize(Boolean copy)
   at VRage.Game.Entity.MyEntity.GetObjectBuilder(Boolean copy)
   at Sandbox.Game.Entities.MyCubeGrid.GetObjectBuilder(Boolean copy)
   at Sandbox.Game.Replication.MyCubeGridReplicable.Serialize(BitStream stream, HashSet`1 cachedData, Endpoint forClient, Action writeData)
   at Sandbox.Game.Replication.StateGroups.MyStreamingEntityStateGroup`1.SaveReplicable(StreamClientData clientData, HashSet`1 cachedData, Endpoint forClient)
   at Sandbox.Game.Replication.StateGroups.MyStreamingEntityStateGroup`1.ProcessWrite(Int32 maxBitPosition, BitStream stream, Endpoint forClient, Byte packetId, HashSet`1 cachedData)
   at Sandbox.Game.Replication.StateGroups.MyStreamingEntityStateGroup`1.Serialize(BitStream stream, MyClientInfo forClient, MyTimeSpan serverTimestamp, MyTimeSpan lastClientTimestamp, Byte packetId, Int32 maxBitPosition, HashSet`1 cachedData)
   at VRage.Network.MyClient.Serialize(IMyStateGroup group, BitStream sendStream, MyTimeSpan timeStamp, Int32 messageBitSize, Boolean streaming)
   at VRage.Network.MyReplicationServer.SendStreamingEntry(MyClient client, MyStateDataEntry entry)
   at VRage.Network.MyReplicationServer.FilterStateSync(MyClient client)
   at Patched_VRage.Network.MyReplicationServerSendUpdate_0(Object )
   at Sandbox.Engine.Multiplayer.MyMultiplayerBase.Tick()
   at Patched_Sandbox.Engine.Multiplayer.MyDedicatedServerBaseTick_0(Object )
   at Patched_Sandbox.Game.World.MySessionUpdate_0(Object , MyTimeSpan )
   at Sandbox.MySandboxGame.Update()
   at Patched_Sandbox.Engine.Platform.GameUpdateInternal_0(Object )
   at Patched_Sandbox.Engine.Platform.GameRunSingleFrame_0(Object )
   at Patched_Sandbox.Engine.Platform.FixedLoop+<>c__DisplayClass11_0<Run>b__0_0(Object )
   at Sandbox.Engine.Platform.GenericLoop.Run(VoidAction tickCallback)
   at Sandbox.Engine.Platform.Game.RunLoop()
   at Sandbox.MySandboxGame.Run(Boolean customRenderLoop, Action disposeSplashScreen)
   at Torch.VRageGame.DoStart() in C:\ProgramData\Jenkins\.jenkins\workspace\Torch_master\Torch\VRageGame.cs:line 316
   at Torch.VRageGame.Run() in C:\ProgramData\Jenkins\.jenkins\workspace\Torch_master\Torch\VRageGame.cs:line 130
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()
System.NullReferenceException: Object reference not set to an instance of an object.
   at VRage.Game.Components.MyComponentBase.Serialize(Boolean copy)
   at VRage.Game.Components.MyComponentContainer.Serialize(Boolean copy)
   at VRage.Game.Entity.MyEntity.GetObjectBuilder(Boolean copy)
   at Sandbox.Game.Entities.MyCubeGrid.GetObjectBuilder(Boolean copy)
   at Sandbox.Game.Replication.MyCubeGridReplicable.Serialize(BitStream stream, HashSet`1 cachedData, Endpoint forClient, Action writeData)
   at Sandbox.Game.Replication.StateGroups.MyStreamingEntityStateGroup`1.SaveReplicable(StreamClientData clientData, HashSet`1 cachedData, Endpoint forClient)
   at Sandbox.Game.Replication.StateGroups.MyStreamingEntityStateGroup`1.ProcessWrite(Int32 maxBitPosition, BitStream stream, Endpoint forClient, Byte packetId, HashSet`1 cachedData)
   at Sandbox.Game.Replication.StateGroups.MyStreamingEntityStateGroup`1.Serialize(BitStream stream, MyClientInfo forClient, MyTimeSpan serverTimestamp, MyTimeSpan lastClientTimestamp, Byte packetId, Int32 maxBitPosition, HashSet`1 cachedData)
   at VRage.Network.MyClient.Serialize(IMyStateGroup group, BitStream sendStream, MyTimeSpan timeStamp, Int32 messageBitSize, Boolean streaming)
   at VRage.Network.MyReplicationServer.SendStreamingEntry(MyClient client, MyStateDataEntry entry)
   at VRage.Network.MyReplicationServer.FilterStateSync(MyClient client)
   at Patched_VRage.Network.MyReplicationServerSendUpdate_0(Object )
   at Sandbox.Engine.Multiplayer.MyMultiplayerBase.Tick()
   at Patched_Sandbox.Engine.Multiplayer.MyDedicatedServerBaseTick_0(Object )
   at Patched_Sandbox.Game.World.MySessionUpdate_0(Object , MyTimeSpan )
   at Sandbox.MySandboxGame.Update()
   at Patched_Sandbox.Engine.Platform.GameUpdateInternal_0(Object )
   at Patched_Sandbox.Engine.Platform.GameRunSingleFrame_0(Object )
   at Patched_Sandbox.Engine.Platform.FixedLoop+<>c__DisplayClass11_0<Run>b__0_0(Object )
   at Sandbox.Engine.Platform.GenericLoop.Run(VoidAction tickCallback)
   at Sandbox.Engine.Platform.Game.RunLoop()
   at Sandbox.MySandboxGame.Run(Boolean customRenderLoop, Action disposeSplashScreen)
   at Torch.VRageGame.DoStart() in C:\ProgramData\Jenkins\.jenkins\workspace\Torch_master\Torch\VRageGame.cs:line 316
   at Torch.VRageGame.Run() in C:\ProgramData\Jenkins\.jenkins\workspace\Torch_master\Torch\VRageGame.cs:line 130
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.ThreadHelper.ThreadStart()

photo
1

Hello, Engineers,

can you please provide more information?

Where exactly are you running the server from? Is it from our DS GUI app from Steam or are you using any 3rd party provider?

Are you able to send us full logs (ideally both – client and those from server as well) with some steps to reproduce, please?

Is this issue happening on the modded servers? Are you using any mods, plugins, scripts etc.? If so, can you please also try to run server without any mods and see if you can reproduce this crash there as well?

It would be also helpful if you can provide me with steps to reproduce and the (unmodded) world where this issue can be observed.

For logs:

You can access your log files by typing %appdata% into your Windows search bar and you will be redirected to the hidden Roaming folder. After that just follow: \Roaming\SpaceEngineers.

For saves:

You can access your save files by typing %appdata% into your Windows search bar and you will be redirected to the hidden Roaming folder. After that just follow: \Roaming\SpaceEngineersDedicated\Saves.

Please zip the file and attach it here. If you are having difficulty attaching files you can optionally use Google Drive. When sharing a google drive link please make sure it is set to be downloadable by anyone with the link.

Plus any more information regarding this issue that you can share might help as well.

Kind Regards

Keen Software House: QA Department

photo
1

Hello, Engineers,

happy to let you know that we are actually aware of this issue already and it is recorded in our internal system.

I will mark this one as Reported for you. Please wait for new comment that will announce the fix for this.

Kind Regards

Keen Software House: QA Department

photo
1

The error happens in the Serialize method of MyComponentBase. After it calls the method MyComponentFactory.Static.CreateObjectBuilder, (which for certain modded blocks will return a null value) the Serialize method attempts to set a field within the MyObjectBuilder_ComponentBase that it assumes was returned from CreateObjectBuilder.


If the serialization was caused by a player connecting to the world, and the server is attempting to replicate a grid containing a modded block, the server will crash. A world that does not yet contain one of these blocks will have no issue until a block gets added, then it will throw an error when it attempts to save the world, preventing the world from being saved unless the block is first removed.

The method that calls the Serialize method does a null check on its return value, so adding a null check before MyComponentBase.Serialize attempts to set the field that causes the crash, appears to fix the problem.


Just adding this here for reference in case it helps.

photo
1

Hello, Engineers,

happy to announce that this issue is now fixed with the hotfix that was released this week.

I'm closing this thread now as Solved.

Kind Regards

Keen Software House: QA Department

Replies have been locked on this page!