CreativeMD / LittleTiles

GNU Lesser General Public License v3.0
174 stars 53 forks source link

Server hang when Starlight or Chipped are installed and loading a chunk containing a LittleTiles structure made with Chipped block #973

Closed zFERDQFREZrzfq closed 1 month ago

zFERDQFREZrzfq commented 5 months ago

Hello,

I have a wierd server hang issue related to LittleTiles.

It does not happens for every structures, even when the structure contains Chipped block, but once it happens, it stays for good.

For exemple, I have a double-door structure with a frame containing some chipped:massive_cobblestone_bricks that initially triggered the bug, but after restoring a backup it suddently worked and kept working until I added a new unrelated structure (a window) made only of non-chipped blocks.

It looks like this happens only when all these conditions are met :

I tried to remove the following mods in an attempt to find a conflict, without effect :

After many long and tiring testing, I could finally load that chunk by removing both Starlight and Chipped.

The server runs :

Here is the top of the stacktrace from the server thread :

"Server thread" prio=5 Id=89 TIMED_WAITING on java.lang.String@87358b6
    at java.base@17.0.10/jdk.internal.misc.Unsafe.park(Native Method)
    -  waiting on java.lang.String@87358b6
    at java.base@17.0.10/java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:252)
    at TRANSFORMER/minecraft@1.20.1/net.minecraft.util.thread.BlockableEventLoop.m_5667_(BlockableEventLoop.java:521)
    at TRANSFORMER/minecraft@1.20.1/net.minecraft.util.thread.BlockableEventLoop.m_18701_(BlockableEventLoop.java:141)
    at TRANSFORMER/minecraft@1.20.1/net.minecraft.server.level.ServerChunkCache.getChunkBlocking(ServerChunkCache.java:1772)
    at TRANSFORMER/minecraft@1.20.1/net.minecraft.server.level.ServerChunkCache.m_7587_(ServerChunkCache.java:1664)
    at TRANSFORMER/minecraft@1.20.1/net.minecraft.server.level.ServerChunkCache.mdd60d40$radium$lambda$getChunkOffThread$0$0(ServerChunkCache.java:1676)
    at TRANSFORMER/minecraft@1.20.1/net.minecraft.server.level.ServerChunkCache$$Lambda$45709/0x000000f005a7d310.get(Unknown Source)
    ...

And the watchdog stacktrace :

java.lang.Error: ServerHangWatchdog detected that a single server tick took 60.00 seconds (should be max 0.05)
    at jdk.internal.misc.Unsafe.park(Native Method) ~[?:?] {}
    at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:252) ~[?:?] {re:mixin}
    at net.minecraft.util.thread.BlockableEventLoop.m_5667_(BlockableEventLoop.java:521) ~[server-1.20.1-20230612.114412-srg.jar%23587!/:?] {re:mixin,pl:accesstransformer:B,pl:connector_pre_launch:A,re:computing_frames,pl:accesstransformer:B,pl:connector_pre_launch:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:modernfix-common.mixins.json:perf.fix_loop_spin_waiting.BlockableEventLoopMixin from mod modernfix,pl:mixin:A,pl:connector_pre_launch:A}
    at net.minecraft.util.thread.BlockableEventLoop.m_18701_(BlockableEventLoop.java:141) ~[server-1.20.1-20230612.114412-srg.jar%23587!/:?] {re:mixin,pl:accesstransformer:B,pl:connector_pre_launch:A,re:computing_frames,pl:accesstransformer:B,pl:connector_pre_launch:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:modernfix-common.mixins.json:perf.fix_loop_spin_waiting.BlockableEventLoopMixin from mod modernfix,pl:mixin:A,pl:connector_pre_launch:A}
    at net.minecraft.server.level.ServerChunkCache.getChunkBlocking(ServerChunkCache.java:1772) ~[server-1.20.1-20230612.114412-srg.jar%23587!/:?] {re:mixin,pl:accesstransformer:B,pl:connector_pre_launch:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:cupboard.mixins.json:ChunkLoadDebug from mod cupboard,pl:mixin:APP:lithium.mixins.json:alloc.chunk_ticking.ServerChunkManagerMixin from mod radium,pl:mixin:APP:lithium.mixins.json:world.chunk_access.ServerChunkManagerMixin from mod radium,pl:mixin:APP:smoothchunk.mixins.json:ServerChunkCacheMixin from mod smoothchunk,pl:mixin:APP:littletiles.mixins.json:server.level.ServerChunkCacheMixin from mod littletiles,pl:mixin:APP:littletiles.mixins.json:server.level.ServerChunkCacheAccessor from mod littletiles,pl:mixin:APP:pehkui.mixins.json:compat117plus.compat1201minus.ServerChunkManagerMixin from mod pehkui,pl:mixin:APP:modernfix-forge.mixins.json:bugfix.chunk_deadlock.ServerChunkCache_CurrentLoadingMixin from mod modernfix,pl:mixin:A,pl:connector_pre_launch:A}
    at net.minecraft.server.level.ServerChunkCache.m_7587_(ServerChunkCache.java:1664) ~[server-1.20.1-20230612.114412-srg.jar%23587!/:?] {re:mixin,pl:accesstransformer:B,pl:connector_pre_launch:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:cupboard.mixins.json:ChunkLoadDebug from mod cupboard,pl:mixin:APP:lithium.mixins.json:alloc.chunk_ticking.ServerChunkManagerMixin from mod radium,pl:mixin:APP:lithium.mixins.json:world.chunk_access.ServerChunkManagerMixin from mod radium,pl:mixin:APP:smoothchunk.mixins.json:ServerChunkCacheMixin from mod smoothchunk,pl:mixin:APP:littletiles.mixins.json:server.level.ServerChunkCacheMixin from mod littletiles,pl:mixin:APP:littletiles.mixins.json:server.level.ServerChunkCacheAccessor from mod littletiles,pl:mixin:APP:pehkui.mixins.json:compat117plus.compat1201minus.ServerChunkManagerMixin from mod pehkui,pl:mixin:APP:modernfix-forge.mixins.json:bugfix.chunk_deadlock.ServerChunkCache_CurrentLoadingMixin from mod modernfix,pl:mixin:A,pl:connector_pre_launch:A}
    at net.minecraft.server.level.ServerChunkCache.mdd60d40$radium$lambda$getChunkOffThread$0$0(ServerChunkCache.java:1676) ~[server-1.20.1-20230612.114412-srg.jar%23587!/:?] {re:mixin,pl:accesstransformer:B,pl:connector_pre_launch:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:cupboard.mixins.json:ChunkLoadDebug from mod cupboard,pl:mixin:APP:lithium.mixins.json:alloc.chunk_ticking.ServerChunkManagerMixin from mod radium,pl:mixin:APP:lithium.mixins.json:world.chunk_access.ServerChunkManagerMixin from mod radium,pl:mixin:APP:smoothchunk.mixins.json:ServerChunkCacheMixin from mod smoothchunk,pl:mixin:APP:littletiles.mixins.json:server.level.ServerChunkCacheMixin from mod littletiles,pl:mixin:APP:littletiles.mixins.json:server.level.ServerChunkCacheAccessor from mod littletiles,pl:mixin:APP:pehkui.mixins.json:compat117plus.compat1201minus.ServerChunkManagerMixin from mod pehkui,pl:mixin:APP:modernfix-forge.mixins.json:bugfix.chunk_deadlock.ServerChunkCache_CurrentLoadingMixin from mod modernfix,pl:mixin:A,pl:connector_pre_launch:A}
    at net.minecraft.server.level.ServerChunkCache$$Lambda$45709/0x000000f005a7d310.get(Unknown Source) ~[?:?] {}
    at java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1768) ~[?:?] {}
    at net.minecraft.util.thread.BlockableEventLoop.m_6367_(BlockableEventLoop.java:156) ~[server-1.20.1-20230612.114412-srg.jar%23587!/:?] {re:mixin,pl:accesstransformer:B,pl:connector_pre_launch:A,re:computing_frames,pl:accesstransformer:B,pl:connector_pre_launch:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:modernfix-common.mixins.json:perf.fix_loop_spin_waiting.BlockableEventLoopMixin from mod modernfix,pl:mixin:A,pl:connector_pre_launch:A}
    at net.minecraft.server.level.ServerChunkCache$MainThreadExecutor.m_6367_(ServerChunkCache.java:541) ~[server-1.20.1-20230612.114412-srg.jar%23587!/:?] {re:mixin,pl:accesstransformer:B,pl:connector_pre_launch:A,re:classloading,pl:accesstransformer:B,pl:connector_pre_launch:A}
    at net.minecraft.util.thread.BlockableEventLoop.m_7245_(BlockableEventLoop.java:130) ~[server-1.20.1-20230612.114412-srg.jar%23587!/:?] {re:mixin,pl:accesstransformer:B,pl:connector_pre_launch:A,re:computing_frames,pl:accesstransformer:B,pl:connector_pre_launch:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:modernfix-common.mixins.json:perf.fix_loop_spin_waiting.BlockableEventLoopMixin from mod modernfix,pl:mixin:A,pl:connector_pre_launch:A}
    at net.minecraft.server.level.ServerChunkCache$MainThreadExecutor.m_7245_(ServerChunkCache.java:549) ~[server-1.20.1-20230612.114412-srg.jar%23587!/:?] {re:mixin,pl:accesstransformer:B,pl:connector_pre_launch:A,re:classloading,pl:accesstransformer:B,pl:connector_pre_launch:A}
    at net.minecraft.util.thread.BlockableEventLoop.m_18701_(BlockableEventLoop.java:139) ~[server-1.20.1-20230612.114412-srg.jar%23587!/:?] {re:mixin,pl:accesstransformer:B,pl:connector_pre_launch:A,re:computing_frames,pl:accesstransformer:B,pl:connector_pre_launch:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:modernfix-common.mixins.json:perf.fix_loop_spin_waiting.BlockableEventLoopMixin from mod modernfix,pl:mixin:A,pl:connector_pre_launch:A}
    at net.minecraft.server.level.ServerChunkCache.getChunkBlocking(ServerChunkCache.java:1772) ~[server-1.20.1-20230612.114412-srg.jar%23587!/:?] {re:mixin,pl:accesstransformer:B,pl:connector_pre_launch:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:cupboard.mixins.json:ChunkLoadDebug from mod cupboard,pl:mixin:APP:lithium.mixins.json:alloc.chunk_ticking.ServerChunkManagerMixin from mod radium,pl:mixin:APP:lithium.mixins.json:world.chunk_access.ServerChunkManagerMixin from mod radium,pl:mixin:APP:smoothchunk.mixins.json:ServerChunkCacheMixin from mod smoothchunk,pl:mixin:APP:littletiles.mixins.json:server.level.ServerChunkCacheMixin from mod littletiles,pl:mixin:APP:littletiles.mixins.json:server.level.ServerChunkCacheAccessor from mod littletiles,pl:mixin:APP:pehkui.mixins.json:compat117plus.compat1201minus.ServerChunkManagerMixin from mod pehkui,pl:mixin:APP:modernfix-forge.mixins.json:bugfix.chunk_deadlock.ServerChunkCache_CurrentLoadingMixin from mod modernfix,pl:mixin:A,pl:connector_pre_launch:A}
    at net.minecraft.server.level.ServerChunkCache.m_7587_(ServerChunkCache.java:1664) ~[server-1.20.1-20230612.114412-srg.jar%23587!/:?] {re:mixin,pl:accesstransformer:B,pl:connector_pre_launch:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:cupboard.mixins.json:ChunkLoadDebug from mod cupboard,pl:mixin:APP:lithium.mixins.json:alloc.chunk_ticking.ServerChunkManagerMixin from mod radium,pl:mixin:APP:lithium.mixins.json:world.chunk_access.ServerChunkManagerMixin from mod radium,pl:mixin:APP:smoothchunk.mixins.json:ServerChunkCacheMixin from mod smoothchunk,pl:mixin:APP:littletiles.mixins.json:server.level.ServerChunkCacheMixin from mod littletiles,pl:mixin:APP:littletiles.mixins.json:server.level.ServerChunkCacheAccessor from mod littletiles,pl:mixin:APP:pehkui.mixins.json:compat117plus.compat1201minus.ServerChunkManagerMixin from mod pehkui,pl:mixin:APP:modernfix-forge.mixins.json:bugfix.chunk_deadlock.ServerChunkCache_CurrentLoadingMixin from mod modernfix,pl:mixin:A,pl:connector_pre_launch:A}
    at net.minecraft.world.level.Level.m_6522_(Level.java:187) ~[server-1.20.1-20230612.114412-srg.jar%23587!/:?] {re:computing_frames,pl:accesstransformer:B,pl:connector_pre_launch:A,re:mixin,pl:accesstransformer:B,pl:connector_pre_launch:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:lithium.mixins.json:alloc.chunk_random.WorldMixin from mod radium,pl:mixin:APP:lithium.mixins.json:entity.collisions.intersection.WorldMixin from mod radium,pl:mixin:APP:lithium.mixins.json:util.block_entity_retrieval.WorldMixin from mod radium,pl:mixin:APP:lithium.mixins.json:util.block_tracking.block_listening.WorldMixin from mod radium,pl:mixin:APP:lithium.mixins.json:world.chunk_access.WorldMixin from mod radium,pl:mixin:APP:lithium.mixins.json:world.inline_block_access.WorldMixin from mod radium,pl:mixin:APP:lithium.mixins.json:world.inline_height.WorldMixin from mod radium,pl:mixin:APP:starlight.mixins.json:common.world.LevelMixin from mod starlight,pl:mixin:APP:citadel.mixins.json:LevelMixin from mod citadel,pl:mixin:APP:fabric-data-attachment-api-v1.mixins.json:AttachmentTargetsMixin from mod fabric_data_attachment_api_v1,pl:mixin:APP:fabric-lifecycle-events-v1.mixins.json:WorldMixin from mod fabric_lifecycle_events_v1,pl:mixin:APP:littletiles.mixins.json:common.level.LevelAccessor from mod littletiles,pl:mixin:APP:littletiles.mixins.json:common.level.LevelMixin from mod littletiles,pl:mixin:A,pl:connector_pre_launch:A}
    at net.minecraft.world.level.Level.m_6325_(Level.java:3051) ~[server-1.20.1-20230612.114412-srg.jar%23587!/:?] {re:computing_frames,pl:accesstransformer:B,pl:connector_pre_launch:A,re:mixin,pl:accesstransformer:B,pl:connector_pre_launch:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:lithium.mixins.json:alloc.chunk_random.WorldMixin from mod radium,pl:mixin:APP:lithium.mixins.json:entity.collisions.intersection.WorldMixin from mod radium,pl:mixin:APP:lithium.mixins.json:util.block_entity_retrieval.WorldMixin from mod radium,pl:mixin:APP:lithium.mixins.json:util.block_tracking.block_listening.WorldMixin from mod radium,pl:mixin:APP:lithium.mixins.json:world.chunk_access.WorldMixin from mod radium,pl:mixin:APP:lithium.mixins.json:world.inline_block_access.WorldMixin from mod radium,pl:mixin:APP:lithium.mixins.json:world.inline_height.WorldMixin from mod radium,pl:mixin:APP:starlight.mixins.json:common.world.LevelMixin from mod starlight,pl:mixin:APP:citadel.mixins.json:LevelMixin from mod citadel,pl:mixin:APP:fabric-data-attachment-api-v1.mixins.json:AttachmentTargetsMixin from mod fabric_data_attachment_api_v1,pl:mixin:APP:fabric-lifecycle-events-v1.mixins.json:WorldMixin from mod fabric_lifecycle_events_v1,pl:mixin:APP:littletiles.mixins.json:common.level.LevelAccessor from mod littletiles,pl:mixin:APP:littletiles.mixins.json:common.level.LevelMixin from mod littletiles,pl:mixin:A,pl:connector_pre_launch:A}
    at net.minecraft.world.level.Level.m_8055_(Level.java:3543) ~[server-1.20.1-20230612.114412-srg.jar%23587!/:?] {re:computing_frames,pl:accesstransformer:B,pl:connector_pre_launch:A,re:mixin,pl:accesstransformer:B,pl:connector_pre_launch:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:lithium.mixins.json:alloc.chunk_random.WorldMixin from mod radium,pl:mixin:APP:lithium.mixins.json:entity.collisions.intersection.WorldMixin from mod radium,pl:mixin:APP:lithium.mixins.json:util.block_entity_retrieval.WorldMixin from mod radium,pl:mixin:APP:lithium.mixins.json:util.block_tracking.block_listening.WorldMixin from mod radium,pl:mixin:APP:lithium.mixins.json:world.chunk_access.WorldMixin from mod radium,pl:mixin:APP:lithium.mixins.json:world.inline_block_access.WorldMixin from mod radium,pl:mixin:APP:lithium.mixins.json:world.inline_height.WorldMixin from mod radium,pl:mixin:APP:starlight.mixins.json:common.world.LevelMixin from mod starlight,pl:mixin:APP:citadel.mixins.json:LevelMixin from mod citadel,pl:mixin:APP:fabric-data-attachment-api-v1.mixins.json:AttachmentTargetsMixin from mod fabric_data_attachment_api_v1,pl:mixin:APP:fabric-lifecycle-events-v1.mixins.json:WorldMixin from mod fabric_lifecycle_events_v1,pl:mixin:APP:littletiles.mixins.json:common.level.LevelAccessor from mod littletiles,pl:mixin:APP:littletiles.mixins.json:common.level.LevelMixin from mod littletiles,pl:mixin:A,pl:connector_pre_launch:A}
zFERDQFREZrzfq commented 5 months ago

This one looks pretty tricky, because it's not systematic : It's not the first time I have it, and the only solution I have so far is to use backups.

I did a test with 2 backups of my world :

The first one is manually triggered right after the structure was finished, and there is no issue. The structure (a big double-door) is there, functionnal, and the chunk loads without issue.

The second backup is an automatic backup that hapenned around 30 min later, when noone was connected. On this one the chunk is failing. The oddity is that noone was online after the manual backup, so the server was in paused state (by MultiplayerServerPause mod) when the backup occured.

I rolled back to the manual backup and restarted the server, and surprizingly the issue does not reproduce so far. The only notable difference that comes to my mind is that on the bugged backup, I had cleared the Little Blueprint that I initially used for the door frame.

zFERDQFREZrzfq commented 5 months ago

So I downloaded my server world and removed all chunks aside of the buggy ones and tried that in singleplayer. The internal server hang is still present, which is a good thing since it allows me to do my mods tests locally.

So I started by removing ALL mods except CreativeCore and LittleTiles, and the issue is gone.

That means the issue is an incompatibility with another mod. Therefore I added back a few mods and tried to reload until I find the one that cause the bug.

In this case, it's Starlight. When it is present, the chunk containing LittleTiles structure cause a server hang. When I disable it, the chunk loads fine.

With the help of ModernFix's watchdog, I can confirm that the issue is the same that I had on the server (same stacktrace).

This incompatibility is not triggered by every LittleTile structure, but I observed that the smooth "Wall" and "Slope" built with the Little Chisel are more likely to trigger it.

zFERDQFREZrzfq commented 5 months ago

This is getting even wierder now...
I removed Starlight from both client and server but I still have the issue...
Ok so I had to remove both Starlight and Chipped to get rid of the issue.

zFERDQFREZrzfq commented 5 months ago

I prepared a region file containing only 4 chunks copied from my world, 2 of them are causing the issue (the ones where the wall is), so that you can test it if you wish. Steps to reproduce using the file :

The chunks are at 0, 0.

If you try it on singleplayer, the game will not crash, but it will stop ticking, so you can still move around, but chunk won't load anymore, the two that are triggering the issue will be invisible, entity won't move and command won't work and the logs will stop (you will not see anything revelant). You can't quit or close the game either, you will have to force-close it.

You can optionally install ModernFix to get the logs from it's watchdog (it will kick-in 40 seconds after the chunk fails to load).

r.0.0.mca.zip

CreativeMD commented 2 months ago

Are the blocks from Chipped regular blocks or special ones? Unfortunately it is not that easy to detect which blocks should be usable with LittleTiles. Sometimes this can cause plenty of troubles and corrupt your world. Also sorry for responding that late.

zFERDQFREZrzfq commented 2 months ago

I didn't tested more blocks so far, but I had this issue with the "Massive Cobblestone Bricks" and "Weathered Cobblestone". Btw, I noticed that the texture of the "massive" does not scale up when used in a structure, I guess it's a Chipped specific behavior that would need to be replicated?

I also encountered the issue when I built a door using only vanilla oak and vanilla black oak, but I could reconnect to my server (luckily the place where the bug happened is far away from the spawn), so I exported the structure to string and restored a backup, and then I tried to put the door again, and it didn't triggered the bug. I could place several other of these doors without issue after that.

So since then, when I design a new structure, I always export and reimport it before actually using it in the world XD

CreativeMD commented 1 month ago

Very weird issue. To be honest, I don't think this has anything to do with Chipped. I could reproduce this issue in my dev environment. Problem is code from LittleTiles is not even executed. I do not see any relation to my mod here. My guess is that something weird happened which corrupted the entire area and it seems to be a vanilla problem. In 1.21 I can open the world without any issues. Maybe an error of LittleTiles corrupted the world, but there is no way to figure out what happened from the broken region file. I would need to see once the chunk gets corrupted if an issue occurs. There are a few errors that have been fixed recently which could be the cause of this. I recommend to get the newest version and see if you are somehow able to reproduce this issue. If yes make sure to send me the log files (especially once you have placed down the stuff which corrupted the chunk).

zFERDQFREZrzfq commented 1 month ago

I just tried to load the corrupted chunk in a new world with the same environment than back then, but I encountered a new behavior that I didn't had back then because I moved the chunk to 0,0, preventing the world to load at all with this generation picture : image

So I renamed the r.0.0.mca to r.1.1.mca, so that I could load the worls and then mode to the bugged chunk. Since it's the same old LT version, the bug triggered as expected with the same stacktrace on the server thread, but looking futher, I found this :

"Worker-Main-12" daemon prio=1 Id=138 WAITING on java.util.concurrent.CompletableFuture$Signaller@70261971
    at java.base@20/jdk.internal.misc.Unsafe.park(Native Method)
    -  waiting on java.util.concurrent.CompletableFuture$Signaller@70261971
    at java.base@20/java.util.concurrent.locks.LockSupport.park(Unknown Source)
    at java.base@20/java.util.concurrent.CompletableFuture$Signaller.block(Unknown Source)
    at java.base@20/java.util.concurrent.ForkJoinPool.compensatedBlock(Unknown Source)
    at java.base@20/java.util.concurrent.ForkJoinPool.managedBlock(Unknown Source)
    at java.base@20/java.util.concurrent.CompletableFuture.waitingGet(Unknown Source)
    at java.base@20/java.util.concurrent.CompletableFuture.join(Unknown Source)
    at TRANSFORMER/minecraft@1.20.1/net.minecraft.server.level.ServerChunkCache.getChunkOffThread(ServerChunkCache.java:1676)
    at TRANSFORMER/minecraft@1.20.1/net.minecraft.server.level.ServerChunkCache.m_7587_(ServerChunkCache.java:1641)
    at TRANSFORMER/minecraft@1.20.1/net.minecraft.world.level.Level.m_6522_(Level.java:187)
    at TRANSFORMER/minecraft@1.20.1/net.minecraft.world.level.Level.m_46865_(Level.java:3041)
    at TRANSFORMER/forge@47.2.32/net.minecraftforge.common.extensions.IForgeBlockGetter.getExistingBlockEntity(IForgeBlockGetter.java:39)
    at TRANSFORMER/littletiles@1.6.0-pre106/team.creative.littletiles.common.block.mc.BlockTile.loadBE(BlockTile.java:118)
    at TRANSFORMER/littletiles@1.6.0-pre106/team.creative.littletiles.common.block.mc.BlockTile.m_7420_(BlockTile.java:257)
    at TRANSFORMER/minecraft@1.20.1/net.minecraft.world.level.block.state.BlockBehaviour$BlockStateBase.m_60631_(BlockBehaviour.java:547)
    at TRANSFORMER/minecraft@1.20.1/net.minecraft.world.level.block.state.BlockBehaviour.m_7753_(BlockBehaviour.java:292)
    at TRANSFORMER/minecraft@1.20.1/net.minecraft.world.level.block.state.BlockBehaviour$BlockStateBase.m_60739_(BlockBehaviour.java:551)
    at TRANSFORMER/minecraft@1.20.1/net.minecraft.world.level.lighting.LightEngine.m_284404_(LightEngine.java:79)
    at TRANSFORMER/minecraft@1.20.1/net.minecraft.world.level.lighting.SkyLightEngine.m_284316_(SkyLightEngine.java:172)
    at TRANSFORMER/minecraft@1.20.1/net.minecraft.world.level.lighting.LightEngine.m_284361_(LightEngine.java:170)
    at TRANSFORMER/minecraft@1.20.1/net.minecraft.world.level.lighting.LightEngine.m_9323_(LightEngine.java:150)
    at TRANSFORMER/minecraft@1.20.1/net.minecraft.world.level.lighting.LevelLightEngine.m_9323_(LevelLightEngine.java:56)
    at TRANSFORMER/minecraft@1.20.1/net.minecraft.server.level.ThreadedLevelLightEngine.m_9366_(ThreadedLevelLightEngine.java:187)
    at TRANSFORMER/minecraft@1.20.1/net.minecraft.server.level.ThreadedLevelLightEngine.m_215156_(ThreadedLevelLightEngine.java:166)
    at TRANSFORMER/minecraft@1.20.1/net.minecraft.server.level.ThreadedLevelLightEngine$$Lambda$10019/0x0000000801f7cd30.run(Unknown Source)
    at TRANSFORMER/minecraft@1.20.1/net.minecraft.util.thread.ProcessorMailbox.m_18759_(ProcessorMailbox.java:91)
    at TRANSFORMER/minecraft@1.20.1/net.minecraft.util.thread.ProcessorMailbox.m_18747_(ProcessorMailbox.java:146)
    at TRANSFORMER/minecraft@1.20.1/net.minecraft.util.thread.ProcessorMailbox.run(ProcessorMailbox.java:102)
    at java.base@20/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(Unknown Source)
    at java.base@20/java.util.concurrent.ForkJoinTask.doExec(Unknown Source)
    at java.base@20/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(Unknown Source)
    at java.base@20/java.util.concurrent.ForkJoinPool.scan(Unknown Source)
    at java.base@20/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
    at java.base@20/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)

Full trace : watchdog.log

I'll try with the latest LT now.

zFERDQFREZrzfq commented 1 month ago

I can still trigger the issue on the latest LT :

"Worker-Main-10" daemon prio=1 Id=137 WAITING on java.util.concurrent.CompletableFuture$Signaller@65575e6b
    at java.base@20/jdk.internal.misc.Unsafe.park(Native Method)
    -  waiting on java.util.concurrent.CompletableFuture$Signaller@65575e6b
    at java.base@20/java.util.concurrent.locks.LockSupport.park(Unknown Source)
    at java.base@20/java.util.concurrent.CompletableFuture$Signaller.block(Unknown Source)
    at java.base@20/java.util.concurrent.ForkJoinPool.compensatedBlock(Unknown Source)
    at java.base@20/java.util.concurrent.ForkJoinPool.managedBlock(Unknown Source)
    at java.base@20/java.util.concurrent.CompletableFuture.waitingGet(Unknown Source)
    at java.base@20/java.util.concurrent.CompletableFuture.join(Unknown Source)
    at TRANSFORMER/minecraft@1.20.1/net.minecraft.server.level.ServerChunkCache.getChunkOffThread(ServerChunkCache.java:1676)
    at TRANSFORMER/minecraft@1.20.1/net.minecraft.server.level.ServerChunkCache.m_7587_(ServerChunkCache.java:1641)
    at TRANSFORMER/minecraft@1.20.1/net.minecraft.world.level.Level.m_6522_(Level.java:187)
    at TRANSFORMER/minecraft@1.20.1/net.minecraft.world.level.Level.m_46865_(Level.java:2541)
    at TRANSFORMER/forge@47.2.32/net.minecraftforge.common.extensions.IForgeBlockGetter.getExistingBlockEntity(IForgeBlockGetter.java:39)
    at TRANSFORMER/littletiles@1.6.0-pre124/team.creative.littletiles.common.block.mc.BlockTile.loadBE(BlockTile.java:117)
    at TRANSFORMER/littletiles@1.6.0-pre124/team.creative.littletiles.common.block.mc.BlockTile.m_7420_(BlockTile.java:256)
    at TRANSFORMER/minecraft@1.20.1/net.minecraft.world.level.block.state.BlockBehaviour$BlockStateBase.m_60631_(BlockBehaviour.java:547)
    at TRANSFORMER/minecraft@1.20.1/net.minecraft.world.level.block.state.BlockBehaviour.m_7753_(BlockBehaviour.java:292)
    at TRANSFORMER/minecraft@1.20.1/net.minecraft.world.level.block.state.BlockBehaviour$BlockStateBase.m_60739_(BlockBehaviour.java:551)
    at TRANSFORMER/minecraft@1.20.1/net.minecraft.world.level.lighting.LightEngine.m_284404_(LightEngine.java:79)
    at TRANSFORMER/minecraft@1.20.1/net.minecraft.world.level.lighting.SkyLightEngine.m_284316_(SkyLightEngine.java:172)
    at TRANSFORMER/minecraft@1.20.1/net.minecraft.world.level.lighting.LightEngine.m_284361_(LightEngine.java:170)
    at TRANSFORMER/minecraft@1.20.1/net.minecraft.world.level.lighting.LightEngine.m_9323_(LightEngine.java:150)
    at TRANSFORMER/minecraft@1.20.1/net.minecraft.world.level.lighting.LevelLightEngine.m_9323_(LevelLightEngine.java:56)
    at TRANSFORMER/minecraft@1.20.1/net.minecraft.server.level.ThreadedLevelLightEngine.m_9366_(ThreadedLevelLightEngine.java:187)
    at TRANSFORMER/minecraft@1.20.1/net.minecraft.server.level.ThreadedLevelLightEngine.m_215156_(ThreadedLevelLightEngine.java:166)
    at TRANSFORMER/minecraft@1.20.1/net.minecraft.server.level.ThreadedLevelLightEngine$$Lambda$10069/0x0000000801fcb1e8.run(Unknown Source)
    at TRANSFORMER/minecraft@1.20.1/net.minecraft.util.thread.ProcessorMailbox.m_18759_(ProcessorMailbox.java:91)
    at TRANSFORMER/minecraft@1.20.1/net.minecraft.util.thread.ProcessorMailbox.m_18747_(ProcessorMailbox.java:146)
    at TRANSFORMER/minecraft@1.20.1/net.minecraft.util.thread.ProcessorMailbox.run(ProcessorMailbox.java:102)
    at java.base@20/java.util.concurrent.ForkJoinTask$RunnableExecuteAction.exec(Unknown Source)
    at java.base@20/java.util.concurrent.ForkJoinTask.doExec(Unknown Source)
    at java.base@20/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(Unknown Source)
    at java.base@20/java.util.concurrent.ForkJoinPool.scan(Unknown Source)
    at java.base@20/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
    at java.base@20/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)

Full trace : watchdog.log

CreativeMD commented 1 month ago

Can you try out this version? https://www.dropbox.com/scl/fi/sxpy3dgk0m6wit4tgszff/LittleTiles_BETA_v1.6.0-pre126_mc1.20.1.jar?rlkey=13yd4l8t0aec1jyruyer40je0&st=km1mu9c0&dl=1

zFERDQFREZrzfq commented 1 month ago

Problem solved! image As you can see the buggy chunk loaded with this version :D

EDIT: I noticed right after writing that I can't interact with the doors not the windows, I get this when I click it : image

EDIT 2: And if I break it, it just vanish XD

There is nothing in the logs.

CreativeMD commented 1 month ago

I have no idea about the second issue. On server side the block is entirely empty. No idea how that works. What you can do is to pick the structure via mousewheel click and place it again. Then it works again.

zFERDQFREZrzfq commented 1 month ago

I tried the middleclick cloning workaround and it works as long as the buggy structure is fully loaded :)

But I noticed then when the buggy region is at the spawn, some of the structures are not fully loaded (some tiles missing) on both big doors and 2 of the windows. If I middleclick one of these, I only get the pointed tile cloned, not the full structure.

I wonder if there could be some multithreading conflict involved somewhere, causing some randomly happening (though pretty uncommon) load/save issues?

CreativeMD commented 1 month ago

It's a very weird issue to be honest. Something is messed up in your world. I have never encountered anything like it before. Maybe create a new world, export what you have built and import it into the newly created world. If the issue is still there it there must be something wrong the structures itself.

zFERDQFREZrzfq commented 1 month ago

This is a debug world I puprosedly kept in that buggy state to help with debugging

As I said earlier, I fixed my main world some times ago by restoring a backup and I use the export/import trick everytime I design a new structure just to be sure :)

CreativeMD commented 1 month ago

Alright ... I will close this issue here for now. If the structures bug out again even though they are imported let me know. I just need a good way to reproduce things to figure out what is going on. I have debugged the broken world, but I have no idea what is going on. Apparently the blocks are in a weird state where the server does not know what they are but the data is still send to the client. It also survive saving and loading. Something is corrupted which breaks a few of the vanilla system. I hope this does not happen again.