BetterPortals

BetterPortals

1M Downloads

[0.3.7.4] Going through any portal with buildcraft (& possibly bibliocraft) causing occasional freeze/VF crash loop.

Peavii opened this issue ยท 19 comments

commented

Edit:
Issue: B:"See-through portals"= set to false causes a crash every ~10% of attempts to go through the Twilight Forest (TF) portal, rate increases if you jump/fall into the portal & causes a stutter.
Known?: TF portals above-head disappear after going through them (but not the ones in the ground), so technically TF portals lead to no portal 'on the other side', this is important.
Thesis: The portal only generates AFTER the dimension generates/loads, this is important.
While half of your character is in the portal, the portal in the other dimension has yet to actually generate because your head has to go through the portal for it to generate/load the dimension, for it then to generate the portal in the dimension. This awkward loading of the portal causes the player to seemingly teleport back up into the portal after going through (ie the stutter) & occasionally causes this crash.
Solution: Make the overhead TF portal permanent, so when a TF portal is created/opened: it should generate a portal in the ground & overhead in both dimensions (which may look a little funny when throwing the diamond in and having a portal appear above you outta thin air.) Also, maybe to keep the aesthetic of the TF portal, make this a 'debug' config option or integrate this setting into B:"See-through portals"= so when it's 'true' the portal behaves like it currently does (for aesthetic purposes).

https://paste.dimdev.org/dutizoxeje.mccrash
java.util.ConcurrentModificationException
at java.util.ArrayDeque$DeqIterator.next(Unknown Source)
at de.johni0702.minecraft.view.impl.server.ServerWorldsManagerImpl.flushPackets(ServerWorldsManagerImpl.kt:415)
at de.johni0702.minecraft.view.impl.server.ServerWorldsManagerImpl.tick(ServerWorldsManagerImpl.kt:263)
at de.johni0702.minecraft.view.impl.server.ServerWorldsManagerImpl.access$tick(ServerWorldsManagerImpl.kt:35)
at de.johni0702.minecraft.view.impl.server.ServerWorldsManagerImpl$EventHandler.postTick(ServerWorldsManagerImpl.kt:316)
at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_1333_EventHandler_postTick_ServerTickEvent.invoke(.dynamic)
at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:90)
at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:182)
at net.minecraftforge.fml.common.FMLCommonHandler.onPostServerTick(FMLCommonHandler.java:266)
at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:712)
at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:279)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:526)
at java.lang.Thread.run(Unknown Source)

commented

I really love having this mod installed in my modpack for the convenience of skipping load times and a normal crash with VanillaFix installed wouldn't bother me so much... but this crash gets stuck in a crash-loop. You have to force-quit the program and reload everything.

commented

B:"See-through portals"= set to 0

0 is not a valid value for See-through portals. I'm assuming you meant false as you wrote in the title.

so technically TF portals lead to no portal 'on the other side'

This is an incorrect conclusion. Technically the remote TF portal is always there but invisible unless it's activated.

Some things about this crash don't quite add up.
See-through portals is an entirely client-side and visual-only setting. The crash however is on the server.
Based on the crash report it looks like something is changing server state in parallel with the main server thread, i.e. thread-unsafe access of some kind.
Since the exact timing of when that access happens determines whether the game crashes, that would explain why it only happens sometimes and seemingly never when portals are see-through (cause that places a significant additional load on your system. changing the timing of other stuff running at the same time).
That however also means that it'll likely be quite hard to track down since removing (or adding) basically anything can change the exact timing and thereby seemingly resolve the issue and because, even if we narrowed it down to just a few mods, it might be difficult to reproduce for me since I've got a system different from yours in various ways.

Regardless of that, if you're able to at least somewhat reliably reproduce the issue, narrowing down which mods are required would always be a good first step in getting to the bottom of this.

commented

Yes, I meant false, not 0 (updated OP).
Once my new modpack version is released I'll do some thorough testing and see if it's repeatable with just the VF, TF & BP mods & if it's repeatable on different systems. I'll also try it on my server.

commented

So I checked my latest.log and found:
Tesselating block in world
This lead me to finding #287 I believe:
gitmemory issue 287
Now I'm looking for a mod installed that changes vanilla blocks in any way (especially leaves/plants.) I thought it was OptiFine's gradient grass (between biomes) at first but BP ran fine with just BetterFPS, VanillaFix, TwilightForest & OptiFine installed using my modpack's configs.

*Edited the title as I was incorrect about the config setting being part of the issue, I just wasn't getting the bug before because the Aether legacy was causing a different issue before the game crashed from this issue. Also the title may be more search engine friendly if people have any similar issues.

*Edit again: I have NO CLUE how I fixed the entity rendering bug btw, I don't know what's changed but it's gone after frantic testing & changes to get rid of this current bug. So I can use see-through portals again at least ^-^

commented

I got this: https://paste.dimdev.org/kaxoyadodu.mccrash
with half as many mods (most of the ones gone are worldgen/structure-related & CustomNPCs) and I got it in a double horizontal nether portal once earlier today so it isn't just the Twilight portal; so I updated the title.

commented

[Server thread/WARN] [betterportals/portal]: Received use portal request from EntityPlayerMP['Peavii'/0, l='New World', x=47.10, y=63.31, z=256.51] for unknown portal agent minecraft:entity/id/4934.
After searching in-game and on the web I found nothing with an entity id of 4934. Maybe I'm not looking right, figured I'd add it here in-case it's related to the incompatibility I'm still hunting down.
I found that removing the 'disenchanter/Disenchantment Table' mod solved the modpack crash, however, isolating TF, BP, Forgelin, & Disenchanter gave no crash so the disenchantment table I think is causing the crash with another mod I've yet to find. This is weird...

commented

Loaded one of my worlds after a crash going into the TF portal and got this with an almost immediate freeze then crash (look at bottom of log).
https://pastebin.com/fLui151P

commented

That one-time (IllegalReferenceCountException) crash should only be possible as a followup to the original (ConcurrentModificationException) crash, though it'll only happen if the original one doesn't already completely break the game.
The freeze then crash is the same thing: in the log you can see the original (ConcurrentModificationException) error, then followed by the no-longer-one-time (IllegalReferenceCountException) crash.

The IllegalReferenceCountException error is interesting though because afaict it should only be possible if somehow the player field of the real player's NetHandlerPlayServer was set to one of BP's fake players. AFAICT there's no code which could do that in vanilla or BP, so it's probably in one of the other mods which should help identifying the issue once we know which of the other mods it is.
With significant effort it might also be possible to write a program which can filter the mods (at least those which don't include coremods/tweakers) by whether they contain code which could do that but I don't currently have the time for that.

commented

So I managed to open (according to MC) a "corrupt" save after a 'ConcurrentModificationException' crash and the Twilight portal in the overworld now has Netherrack Speleothems inside of it (which are from Quark.) I'm gonna isolate BP, Forgelin, TF & Quark and see if I can recreate the crash.

Funnily enough I had a 'bug' where I thought I saw the nether when I opened 2 Twilight portals in a specific save. That save crashed and got corrupted so it was probably the netherrack speleothems I saw...

EDIT: Fudge... not Quark... I did however disable the speleothems for future testing.

commented

Each entity gets its own ids, usually they are given out in the order in which they spawn. They're not the id of the type but the id of that specific entity, so it's not surprising you didn't find anything about it.

That message isn't normal though (unless there happens to be significant lag), so it's likely related to something.
Mind attaching your full log? Maybe there are further hints in there.

commented

Full log (I think it's the right one): https://pastebin.com/1Ujqy2UL 10GB of RAM allocated btw.
Also this was a one-time crash while testing various mods...
https://paste.dimdev.org/amijusacef.mccrash

EDIT: I'm back to square one as I got the Concurrent crash again but for the first time without the Disenchantment Table mod... :\

EDIT (again): Maybe it's Item Physics causing the issue because of the diamond that's thrown into the TF portal? I can't tell if it was random chance but I didn't get the crash when I removed IPF.

EDIT (f me) Nope, maybe InventoryTweaks or Inspirations... more testing...

commented

PreventNextFallDamage@39feec8 (testing in creative mode)

Crashlog=https://pastebin.com/VXLqBBf2
latest.log=https://pastebin.com/Xj7dV1N7

[10:08:34] [Server thread/ERROR] [FML]: Exception caught during firing event net.minecraftforge.fml.common.gameevent.TickEvent$ServerTickEvent@51da493e:
java.util.ConcurrentModificationException: null
    at java.util.ArrayDeque$DeqIterator.next(ArrayDeque.java:643) ~[?:1.8.0_51]
    at de.johni0702.minecraft.view.impl.server.ServerWorldsManagerImpl.flushPackets(ServerWorldsManagerImpl.kt:415) ~[ServerWorldsManagerImpl.class:?]
    at de.johni0702.minecraft.view.impl.server.ServerWorldsManagerImpl.tick(ServerWorldsManagerImpl.kt:263) ~[ServerWorldsManagerImpl.class:?]
    at de.johni0702.minecraft.view.impl.server.ServerWorldsManagerImpl.access$tick(ServerWorldsManagerImpl.kt:35) ~[ServerWorldsManagerImpl.class:?]
    at de.johni0702.minecraft.view.impl.server.ServerWorldsManagerImpl$EventHandler.postTick(ServerWorldsManagerImpl.kt:316) ~[ServerWorldsManagerImpl$EventHandler.class:?]
    at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_159_EventHandler_postTick_ServerTickEvent.invoke(.dynamic) ~[?:?]
    at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:90) ~[ASMEventHandler.class:?]
    at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:182) [EventBus.class:?]
    at net.minecraftforge.fml.common.FMLCommonHandler.onPostServerTick(FMLCommonHandler.java:266) [FMLCommonHandler.class:?]
    at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:712) [MinecraftServer.class:?]
    at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:185) [chd.class:?]
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:526) [MinecraftServer.class:?]
    at java.lang.Thread.run(Thread.java:745) [?:1.8.0_51]
[10:08:34] [Server thread/ERROR] [FML]: Index: 4 Listeners:
[10:08:34] [Server thread/ERROR] [FML]: 0: NORMAL
[10:08:34] [Server thread/ERROR] [FML]: 1: ASM: net.minecraftforge.common.ForgeInternalHandler@9470ab3 onServerTick(Lnet/minecraftforge/fml/common/gameevent/TickEvent$ServerTickEvent;)V
[10:08:34] [Server thread/ERROR] [FML]: 2: ASM: class buildcraft.lib.BCLibEventDist serverTick(Lnet/minecraftforge/fml/common/gameevent/TickEvent$ServerTickEvent;)V
[10:08:34] [Server thread/ERROR] [FML]: 3: ASM: INSTANCE onServerTick(Lnet/minecraftforge/fml/common/gameevent/TickEvent$ServerTickEvent;)V
[10:08:34] [Server thread/ERROR] [FML]: 4: ASM: de.johni0702.minecraft.view.impl.server.ServerWorldsManagerImpl$EventHandler@69ca73d6 postTick(Lnet/minecraftforge/fml/common/gameevent/TickEvent$ServerTickEvent;)V
[10:08:34] [Server thread/ERROR] [FML]: 5: ASM: de.johni0702.minecraft.betterportals.common.PreventNextFallDamage@39feec8 onTick(Lnet/minecraftforge/fml/common/gameevent/TickEvent$ServerTickEvent;)V
[10:08:34] [Server thread/ERROR] [FML]: 6: ASM: de.johni0702.minecraft.betterportals.common.PreventNextFallDamage@27145cb6 onTick(Lnet/minecraftforge/fml/common/gameevent/TickEvent$ServerTickEvent;)V
[10:08:34] [Server thread/ERROR] [FML]: 7: ASM: de.johni0702.minecraft.betterportals.common.PreventNextFallDamage@22a3ee52 onTick(Lnet/minecraftforge/fml/common/gameevent/TickEvent$ServerTickEvent;)V
[10:08:34] [Server thread/ERROR] [FML]: 8: ASM: de.johni0702.minecraft.betterportals.common.PreventNextFallDamage@29e5208 onTick(Lnet/minecraftforge/fml/common/gameevent/TickEvent$ServerTickEvent;)V
[10:08:34] [Server thread/ERROR] [FML]: 9: ASM: de.johni0702.minecraft.betterportals.common.PreventNextFallDamage@7d65e646 onTick(Lnet/minecraftforge/fml/common/gameevent/TickEvent$ServerTickEvent;)V
[10:08:34] [Server thread/ERROR] [FML]: 10: ASM: de.johni0702.minecraft.betterportals.common.PreventNextFallDamage@7d2d500e onTick(Lnet/minecraftforge/fml/common/gameevent/TickEvent$ServerTickEvent;)V
[10:08:34] [Server thread/ERROR] [FML]: 11: ASM: de.johni0702.minecraft.betterportals.common.PreventNextFallDamage@3b10b660 onTick(Lnet/minecraftforge/fml/common/gameevent/TickEvent$ServerTickEvent;)V
[10:08:34] [Server thread/ERROR] [FML]: 12: ASM: de.johni0702.minecraft.betterportals.common.PreventNextFallDamage@3a10af90 onTick(Lnet/minecraftforge/fml/common/gameevent/TickEvent$ServerTickEvent;)V
[10:08:34] [Server thread/ERROR] [net.minecraft.server.MinecraftServer]: Encountered an unexpected exception
java.util.ConcurrentModificationException: null
    at java.util.ArrayDeque$DeqIterator.next(ArrayDeque.java:643) ~[?:1.8.0_51]
    at de.johni0702.minecraft.view.impl.server.ServerWorldsManagerImpl.flushPackets(ServerWorldsManagerImpl.kt:415) ~[ServerWorldsManagerImpl.class:?]
    at de.johni0702.minecraft.view.impl.server.ServerWorldsManagerImpl.tick(ServerWorldsManagerImpl.kt:263) ~[ServerWorldsManagerImpl.class:?]
    at de.johni0702.minecraft.view.impl.server.ServerWorldsManagerImpl.access$tick(ServerWorldsManagerImpl.kt:35) ~[ServerWorldsManagerImpl.class:?]
    at de.johni0702.minecraft.view.impl.server.ServerWorldsManagerImpl$EventHandler.postTick(ServerWorldsManagerImpl.kt:316) ~[ServerWorldsManagerImpl$EventHandler.class:?]
    at net.minecraftforge.fml.common.eventhandler.ASMEventHandler_159_EventHandler_postTick_ServerTickEvent.invoke(.dynamic) ~[?:?]
    at net.minecraftforge.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:90) ~[ASMEventHandler.class:?]
    at net.minecraftforge.fml.common.eventhandler.EventBus.post(EventBus.java:182) ~[EventBus.class:?]
    at net.minecraftforge.fml.common.FMLCommonHandler.onPostServerTick(FMLCommonHandler.java:266) ~[FMLCommonHandler.class:?]
    at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:712) ~[MinecraftServer.class:?]
    at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:185) ~[chd.class:?]
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:526) [MinecraftServer.class:?]
    at java.lang.Thread.run(Thread.java:745) [?:1.8.0_51]
[10:08:34] [Server thread/WARN] [org.dimdev.utils.ModIdentifier]: Failed to identify net.minecraftforge.fml.common.eventhandler.ASMEventHandler_159_EventHandler_postTick_ServerTickEvent (untransformed name: net.minecraftforge.fml.common.eventhandler.ASMEventHandler_159_EventHandler_postTick_ServerTickEvent)
[10:08:34] [Server thread/ERROR] [net.minecraft.server.MinecraftServer]: This crash report has been saved to: C:\Users\Peav\AppData\Roaming\.minecraft\crash-reports\crash-2020-02-03_10.08.34-server.txt
[10:08:34] [Server thread/INFO] [net.minecraft.server.MinecraftServer]: Stopping server
commented

I think I actually found the problems. From my understanding... Bibliocraft is causing an Entity Render problem with or without see-through-portals enabled, and this bug is linked to the 'ConcurrentModificationException' bug, which is being caused by BuildCraft.

My one counter point is the Bibliocraft issue I found and learned from was caused by a problem with armor stands (which has since been patched and I have armor_stand=false)

commented

-I disabled the fall damage prevention which did no help.
-I set B:DisableRenderers=false in bibliocraft.cfg to true which fixed the EntityRenderer problem I think (will continue testing BiblioCraft alongside BuildCraft).
-I set I:updateFactor=10 to 100, set worldgen { # Should BuildCraft generate anything in the world? B:enable=true to false, & set performance { # Disable this if you get sub-standard framerates due to buildcraft's ~60 sprites animating every frame. B:enableAnimatedSprites=true in buildcraft\main.cfg to false but all to no avail.

commented

What is this EntityRenderer problem you're talking about? Does it being fixed imply that you're also no longer seeing the ConcurrentModificationException with B:DisableRenderers=false?

Did you ever get the ConcurrentModificationException without Bibliocraft? That'd be much preferred because the Bibliocraft author doesn't provide any source code with their mod, so all we could do is report it to them and hope they'll figure it out.

commented
  • EDIT: Here's the crashlog with EntityRenderer in it, this crash does not happen when bibliocraft renderers are disabled (so far): https://pastebin.com/JrtCj9aF

  • EDIT: Buildcraft does cause ConcurrentModificationException without bibliocraft.

  • EDIT: Bibliocraft doesn't seem to cause anything without Buildcraft.

commented

I changed S:chunkLoadLevel=self_tiles to none in '..\config\buildcraft\main.cfg' along with the prior bibliocraft config fix and now my game isn't crashing. I've tested 2 different worlds on a portal loop for about 5 minutes each with no bugs.

EDIT: Unfortunately the crash is still happening... I'm gonna try disabling everything in the BC config and go from there.

EDIT: I think Buildcraft core is the causing the problem. I disabled everything in the config and the game still crashed.

commented

Big thanks for all your efforts in tracking this down to just BuildCraft.

I've been able to reproduce the issue and after a bit of debugging also found its source.
I've reported my findings on the BuildCraft issue tracker (see the linked issue above) as it's something that's not specific to BetterPortals (though BP is especially likely to run into it) and needs to be fixed over there.

commented

From the BC issue:

Ok, this should be fixed in 7.99.24.5 - please let me know if that's not the case.

Thanks again for all your testing!