mojira.dev
MC-108660

Loading a specific structure containing observers and piston with stucture block crashes server

Saving the structure shown in the screenshot and then loading it caused the server to crash. On re-starting the server, it crashed again and produced a crash dump. On the second restart it recovered.
Further information: The piston in the structure was facing South and the structure was loaded without rotation and with default offset 0 1 0.


Description: Exception while updating neighbours

java.lang.StackOverflowError: Exception while updating neighbours
	at ajn.a(SourceFile:456)
	at ajn.a(SourceFile:434)
	at apc.e(SourceFile:88)
	at apc.d(SourceFile:80)
	at apc.a(SourceFile:68)
	at ath$a.a(SourceFile:418)
	at ajn.a(SourceFile:454)
	at ajn.d(SourceFile:422)
	at ajn.c(SourceFile:389)
	at ayx.a(SourceFile:249)
	at ayx.b(SourceFile:180)
	at ayx.a(SourceFile:176)
	at ass.c(SourceFile:419)
	at arb.a(SourceFile:117)
	at arb.a(SourceFile:105)
	at ath$a.a(SourceFile:418)
	at ajn.a(SourceFile:454)
	at ajn.a(SourceFile:434)
	at apc.e(SourceFile:88)
	at apc.d(SourceFile:80)
	at apc.a(SourceFile:68)
	at ath$a.a(SourceFile:418)
-- Block being updated --
Details:
	Source block type: ID #218 (tile.observer // apc)
	Block: minecraft:structure_block[mode=load]
	Block location: World: (-125,70,103), Chunk: (at 3,4,7 in -8,6; contains blocks -128,0,96 to -113,255,111), Region: (-1,0; contains chunks -32,0 to -1,31, blocks -512,0,0 to -1,255,511)

-- Block being updated --
Details:
	Source block type: ID #1 (tile.stone // aqx)
	Block: minecraft:observer[facing=south,powered=false]
	Block location: World: (-125,71,104), Chunk: (at 3,4,8 in -8,6; contains blocks -128,0,96 to -113,255,111), Region: (-1,0; contains chunks -32,0 to -1,31, blocks -512,0,0 to -1,255,511)

-- Block being updated --
Details:
	Source block type: ID #218 (tile.observer // apc)
	Block: minecraft:structure_block[mode=load]
	Block location: World: (-125,70,103), Chunk: (at 3,4,7 in -8,6; contains blocks -128,0,96 to -113,255,111), Region: (-1,0; contains chunks -32,0 to -1,31, blocks -512,0,0 to -1,255,511)

-- Block being updated --
Details:
	Source block type: ID #1 (tile.stone // aqx)
	Block: minecraft:observer[facing=south,powered=false]
	Block location: World: (-125,71,104), Chunk: (at 3,4,8 in -8,6; contains blocks -128,0,96 to -113,255,111), Region: (-1,0; contains chunks -32,0 to -1,31, blocks -512,0,0 to -1,255,511)

Linked issues

Attachments

Comments 3

Possibly caused by the structure block being powered by the structure it was loading?

Yes.

  1. Structure block gets triggered

  2. Structure block loads the structure

  3. The loaded Observer block powers the Structure block

  4. Structure block loads the structure

  5. The loaded Observer block powers the Structure block

  6. ...

In structure block load routine:

static structureBlockDoingLoad;
if(structureBlockDoingLoad == null) {
structureBlockDoingLoad = thisBlock;
do_load_stuff();
structureBlockDoingLoad = null;
}

Meanwhile, I'll try to remember to increase the vertical load offset to avoid the recursion. 🙂

KevinTheDruid

Erik Broes

Unconfirmed

Minecraft 16w40a

Retrieved