space-wizards / space-station-14

A multiplayer game about paranoia and chaos on a space station. Remake of the cult-classic Space Station 13.
https://spacestation14.io
MIT License
2.7k stars 3.38k forks source link

Vague Debug Assert inside `SharedConveyorController` #30962

Open Mervill opened 2 months ago

Mervill commented 2 months ago

The situation, Marathon disposals:

2024-08-12 21_51_27-Window

Arrows show the conveyor belt movement direction.

As soon as I hit the corner where the two conveyors intersect, I get this Assert failure:

2024-08-12 21_52_16-Window

https://github.com/space-wizards/space-station-14/blob/d49d78cebf83ad45242746569bd3eb4a4d7a0b8c/Content.Shared/Physics/Controllers/SharedConveyorController.cs#L116-L120

I'm not entirely sure what the assert is trying to tell me. The DebugTools bit means this happens only in debug mode. I think I've occasionally seen trash get stuck in this location, but I'm not sure if it's directly related.

slarticodefast commented 2 months ago

I can reproduce this with this simpler setup. Link the conveyor and recycler to the lever using the defaults, pull the lever and put an item onto the belt. grafik

Exception has occurred: CLR/Robust.Shared.Utility.DebugAssertException
An unhandled exception of type 'Robust.Shared.Utility.DebugAssertException' occurred in Robust.Shared.dll
   at Robust.Shared.Utility.DebugTools.Assert(Boolean condition) in D:\Code\SS14\space-station-14\RobustToolbox\Robust.Shared\Utility\DebugTools.cs:line 37
   at Content.Shared.Physics.Controllers.SharedConveyorController.TryConvey(Entity`3 entity, Boolean prediction, Single frameTime) in D:\Code\SS14\space-station-14\Content.Shared\Physics\Controllers\SharedConveyorController.cs:line 119
   at Content.Shared.Physics.Controllers.SharedConveyorController.UpdateBeforeSolve(Boolean prediction, Single frameTime) in D:\Code\SS14\space-station-14\Content.Shared\Physics\Controllers\SharedConveyorController.cs:line 83
   at Robust.Shared.Physics.Controllers.VirtualController.OnBeforeSolve(PhysicsUpdateBeforeSolveEvent& ev) in D:\Code\SS14\space-station-14\RobustToolbox\Robust.Shared\Physics\Controllers\VirtualController.cs:line 48
   at Robust.Shared.GameObjects.EntityEventBus.<>c__DisplayClass6_0`1.<SubscribeEvent>b__0(Unit& ev) in D:\Code\SS14\space-station-14\RobustToolbox\Robust.Shared\GameObjects\EntityEventBus.Broadcast.cs:line 195
   at Robust.Shared.GameObjects.EntityEventBus.ProcessSingleEventCore(EventSource source, Unit& unitRef, EventData subs) in D:\Code\SS14\space-station-14\RobustToolbox\Robust.Shared\GameObjects\EntityEventBus.Broadcast.cs:line 335
   at Robust.Shared.GameObjects.EntityEventBus.ProcessSingleEvent(EventSource source, Unit& unitRef, Type eventType) in D:\Code\SS14\space-station-14\RobustToolbox\Robust.Shared\GameObjects\EntityEventBus.Broadcast.cs:line 324
   at Robust.Shared.GameObjects.EntityEventBus.RaiseEvent[T](EventSource source, T& toRaise) in D:\Code\SS14\space-station-14\RobustToolbox\Robust.Shared\GameObjects\EntityEventBus.Broadcast.cs:line 283
   at Robust.Shared.GameObjects.EntitySystem.RaiseLocalEvent[T](T& message) in D:\Code\SS14\space-station-14\RobustToolbox\Robust.Shared\GameObjects\EntitySystem.cs:line 105
   at Robust.Shared.Physics.Systems.SharedPhysicsSystem.SimulateWorld(Single deltaTime, Boolean prediction) in D:\Code\SS14\space-station-14\RobustToolbox\Robust.Shared\Physics\Systems\SharedPhysicsSystem.cs:line 287
   at Robust.Server.GameObjects.PhysicsSystem.Update(Single frameTime) in D:\Code\SS14\space-station-14\RobustToolbox\Robust.Server\GameObjects\EntitySystems\PhysicsSystem.cs:line 35
   at Robust.Shared.GameObjects.EntitySystemManager.TickUpdate(Single frameTime, Boolean noPredictions) in D:\Code\SS14\space-station-14\RobustToolbox\Robust.Shared\GameObjects\EntitySystemManager.cs:line 306
   at Robust.Shared.GameObjects.EntityManager.TickUpdate(Single frameTime, Boolean noPredictions, Histogram histogram) in D:\Code\SS14\space-station-14\RobustToolbox\Robust.Shared\GameObjects\EntityManager.cs:line 265
   at Robust.Server.GameObjects.ServerEntityManager.TickUpdate(Single frameTime, Boolean noPredictions, Histogram histogram) in D:\Code\SS14\space-station-14\RobustToolbox\Robust.Server\GameObjects\ServerEntityManager.cs:line 196
   at Robust.Server.BaseServer.Update(FrameEventArgs frameEventArgs) in D:\Code\SS14\space-station-14\RobustToolbox\Robust.Server\BaseServer.cs:line 731
   at Robust.Server.BaseServer.<SetupMainLoop>b__67_1(Object sender, FrameEventArgs args) in D:\Code\SS14\space-station-14\RobustToolbox\Robust.Server\BaseServer.cs:line 544
   at Robust.Shared.Timing.GameLoop.Run() in D:\Code\SS14\space-station-14\RobustToolbox\Robust.Shared\Timing\GameLoop.cs:line 235
   at Robust.Server.BaseServer.MainLoop() in D:\Code\SS14\space-station-14\RobustToolbox\Robust.Server\BaseServer.cs:line 571
   at Robust.Server.Program.ParsedMain(CommandLineArgs args, Boolean contentStart, ServerOptions options) in D:\Code\SS14\space-station-14\RobustToolbox\Robust.Server\Program.cs:line 74
   at Robust.Server.Program.Start(String[] args, ServerOptions options, Boolean contentStart) in D:\Code\SS14\space-station-14\RobustToolbox\Robust.Server\Program.cs:line 42
   at Robust.Server.ContentStart.Start(String[] args) in D:\Code\SS14\space-station-14\RobustToolbox\Robust.Server\ContentStart.cs:line 10
   at Content.Server.Program.Main(String[] args) in D:\Code\SS14\space-station-14\Content.Server\Program.cs:line 9
deltanedas commented 2 months ago

you can build multiple conveyors on the same tile, what is that assert even trying

Minty642 commented 2 months ago

tried a few thing and it also crashes when any item on conveyeor enter the area surrounding the recycler, even though the recycler is not directly connected with conveyor

Screenshot (75)