Logistics Pipes

Logistics Pipes

13M Downloads

Trying to select a default satellite pipe crashes the server

LindaJuffermans opened this issue ยท 5 comments

commented

Minecraft 1.12.2
logisticspipes-0.10.3.62.jar
LogisticsBridge-1.3.11.jar

I love the setup of a machine w/output chest, combined with a resultpipe, satellite pipe and crafting manager with storage buffer chest; for some machines it's critical even (e.g. alloy smelter shouldn't get 1st item if the 2nd isn't available).

When I try to select a default satellite pipe in the crafting manager, the server becomes unresponsive and eventually Server Watchdog kills the server.

Server crash report: crash-2021-02-20_13.21.03-server.txt
Full log (269MB textfile inside) 2021-02-20-2.log.gz
Bitesize summary of the log 2021-02-20-2-snippet.log

It means I can't use Logistics Pipe for FTB Interactions anymore.

commented

it is related to Logistics Bridge. @tom5454 can you have a look?

commented

The server hangs when listing the satellite pipes.
It runs this:
https://github.com/RS485/LogisticsPipes/blob/dev-mc1122-fg3/common/logisticspipes/network/packets/gui/RequestSatellitePipeListPacket.java#L53-L62
inside CraftingManager.list
This probably happens when trying to set the satellite for a crafting pipe.

On the throwables in the log:
The CraftingManager saves the string name of the satellite pipe, and loads the UUID from the LP network when first requested. (I should change this). This happens when crafting modules are loaded. Some routers are not initialized yet so it logs. (https://github.com/RS485/LogisticsPipes/blob/dev-mc1122-fg3/common/logisticspipes/pipes/basic/CoreRoutedPipe.java#L804)

The rest are in CraftingManager.list

commented

The server hangs when listing the satellite pipes.
It runs this:
https://github.com/RS485/LogisticsPipes/blob/dev-mc1122-fg3/common/logisticspipes/network/packets/gui/RequestSatellitePipeListPacket.java#L53-L62
inside CraftingManager.list

yet it doesn't. this.getRouter().getRouteTable() might return a different routing table each time you call it, since the routing table is updated in another thread. I would say even our code isn't safe here, since it calls it again when sorting. There actually was a bug caused by this which was fixed in 1f4d7ae

That the server hangs is actually related to the sorting in CraftingManager.list and probably some double special values screwing with the sorting algorithm.

commented

Someone suggested to chunkload the entire LP network which I've done and I don't get any more duplicate satellite pipe entries nor does the server crash. Because of other crashes the longest the server has been running continuously was 18 hours but I'll keep testing this over a period of time. Thought it might help your investigation.

commented

Yes, a partly unloaded LP system breaks in mysterious ways. But this specific crash/hang is directly related to Logistics Bridge code, so I'll close this here.