[1.10.2] Dynamic Tank Client Crash on server join.
Senjar opened this issue ยท 17 comments
Issue description:
Game crashes with:
The game crashed whilst rendering block entity
Error: java.lang.ArrayIndexOutOfBoundsException: -37736
What happened:
I joined the server noticed that the dynamic tank is empty (again) so I break and replace the corner to fix it (I do it every time I join the server).
This time the game crashes after I place the corner and the tank forms.
Now every time I join the server the game crashes.
Other info:
The chunk is loaded on the server through FTB Utils.
EnderIO conduit is pushing fluid in the tank.
"Error: java.lang.ArrayIndexOutOfBoundsException:" gives a different number every time the game crashes
Video:
https://youtu.be/2DO06sGlxGA
Steps to reproduce:
Very difficult to reproduce
Version :
Forge: 12.18.3.2477
Mekanism: 1.10.2-9.2.4.103
Modpack version: Age of Engineering 1.1.1c
Crash Logs:
First crash log after completing Dynamic Tank: https://pastebin.com/96b7pD7p
Crash log on server join: https://pastebin.com/dQ1K5BFM
Please try this build if you can (it will need to be on both client & server sides)
http://maven.thiakil.com/mekanism/MekanismAll-1.10.2-9.2.4.103+6f129e14.jar
ok, please give this a run http://maven.thiakil.com/mekanism/MekanismAll-1.10.2-9.2.4.103+6f129e14-debug.jar
Much the same as before, but has extra logging on client and server sides to see what's going wonky
Hmm bit of a deeper client sync issue then perhaps...
Can you check you log for an error message about a value being less than zero (I forget the name right now sorry)
latest.log
I think that's the log. Sorry, its too large for Pastebin.
It kinda synced after replacing the corner a few times but the liquid is gone.
Edit: A bunch of "[Client thread/ERROR]: prevScale < 0" on the end of the log.
Client log: latest.log
Server log: fml-server-latest.log
Cause the server is mine I reloaded a backup of the world to repeat the actions.
Same thing. No Crash on login. The tank is now empty and showing a negative number for a split second.
Server is saying:
[15:37:39] [Server thread/INFO]: MrSenjar joined the game
[15:37:39] [Server thread/INFO] [journeymap]: MrSenjar joining dimension 0
[15:37:39] [Server thread/INFO] [EnderCore]: Sending server configs to client for com.enderio.core.common.config.ConfigHandler
[15:37:39] [Server thread/INFO] [Actually Additions]: Sending Player Data to player MrSenjar with UUID 0c72d4f6-83e9-493d-be07-cf246308b97c.
[15:37:39] [Server thread/INFO] [journeymap]: Sending log in packet.
[15:37:40] [Server thread/INFO] [Mekanism]: Sent config to 'TextComponent{text='', siblings=[TextComponent{text='MrSenjar', siblings=[], style=Style{hasParent=true, color=null, bold=null, italic=null, underlined=null, obfuscated=null, clickEvent=ClickEvent{action=SUGGEST_COMMAND, value='/msg MrSenjar '}, hoverEvent=HoverEvent{action=SHOW_ENTITY, value='TextComponent{text='{name:"MrSenjar",id:"0c72d4f6-83e9-493d-be07-cf246308b97c"}', siblings=[], style=Style{hasParent=false, color=null, bold=null, italic=null, underlined=null, obfuscated=null, clickEvent=null, hoverEvent=null, insertion=null}}'}, insertion=MrSenjar}}], style=Style{hasParent=false, color=null, bold=null, italic=null, underlined=null, obfuscated=null, clickEvent=ClickEvent{action=SUGGEST_COMMAND, value='/msg MrSenjar '}, hoverEvent=HoverEvent{action=SHOW_ENTITY, value='TextComponent{text='{name:"MrSenjar",id:"0c72d4f6-83e9-493d-be07-cf246308b97c"}', siblings=[], style=Style{hasParent=false, color=null, bold=null, italic=null, underlined=null, obfuscated=null, clickEvent=null, hoverEvent=null, insertion=null}}'}, insertion=MrSenjar}}.'
[15:37:40] [Server thread/INFO] [mcjty.lib.varia.Logging]: SMP: Player logged in: Sync diminfo to clients
[15:37:40] [Server thread/INFO] [mcjty.lib.varia.Logging]: Sync dimension info to clients!
[15:37:40] [Server thread/INFO] [mcjty.lib.varia.Logging]: Send dimlet rules to the client
[15:37:40] [Server thread/INFO] [mcjty.lib.varia.Logging]: Rules packet size: 6820 of 8192
[15:37:42] [VoiceServer Listen Thread/INFO] [Mekanism]: VoiceServer: Accepted new connection.
[15:37:42] [Thread-25/INFO] [Mekanism]: VoiceServer: Traced IP in 1 attempts.
[15:37:48] [Server thread/ERROR] [Mekanism]: Error while encoding packet data.
[15:37:48] [Server thread/ERROR] [Mekanism]: Error while encoding packet data.
[15:37:48] [Server thread/ERROR] [Mekanism]: Error while encoding packet data.
[15:37:48] [Server thread/ERROR] [Mekanism]: Error while encoding packet data.
[15:37:48] [Server thread/ERROR] [Mekanism]: Error while encoding packet data.
[15:37:48] [Server thread/ERROR] [Mekanism]: Error while encoding packet data.
My theory:
The game client probably started crashing after the tank got full. I had no crashes while it was getting full.
Every time I joined the server (before all this) the Tank seemed empty, then I would replace its corner and the client would sync (if it's a sync problem).
Then the tank was getting oil while I was offline then it got full then I joined and It seemed empty. Then I replaced its corner and the crashes started.
Of course after the new jar no crashes but we have negative numbers
I hope this helps. I can always test some more ๐
Edit: Also I found out this https://youtu.be/UShNpjflYMs
Edit2: If I remove the marked conduit the Tank goes to 0mB and starts functioning .
Edit3: I left the tank untouched going through the negative numbers and after 2 hours it's now full again. I don't even know.
Yeah the crash fixes I added were only a 'treating the symptom not the cause' type thing (and I knew this was the case).
What seems to be happening is that the Server packet sending is erroring (the Error while encoding packet data
lines), but it still sends the packet! It really should be crashing. And unhelpfully it prints the stacktrace instead of logging it.
So the net effect is that your client is reading the wrong data into the fields, and thus we get negative numbers.
What is the conduit's configuration (all endpoints) and (as part of that), what is the purple block?
I can't get it to happen in dev with just Mekanism and IE.
This build should give us more info on the encoding issue: http://maven.thiakil.com/mekanism/MekanismAll-1.10.2-9.2.4.103+6f129e14-debug-2.jar
conduits are "pressurized fluid conduits" from EnderIO
Configuration is:
Outputs: always active output on the Coke Oven from Immersive engineering
Inputs: in/out on Dynamic Tank and Void Tank (Purple block from NeoTech)
The setup was so when the Dynamic Tank would get full it would just void the extra oil to continue production of Coal Coke.
Logs with the new debug version in a bit.
Logs
Server:
fml-server-latest.log
Client:
latest.log
I don't output from the Dynamic Tank. I only input to one of the two valves.
Edit: Also after restarting the server today, to put the new debug version, the Tank is empty again.
Yeah there's definitely a null getting in there that shouldn't be. On mobile right now so can't say why, but it should be enough info we can deduce a solution from.
Thanks for the testing efforts!
I managed to recreate it!
Mod versions
NeoTech-1.10.2-3.3.0
IE 0.10-61
EnderIO-1.10.2-3.1.193
Steps
1 Place 3x3 Dynamic Tank
2 Start feed tank with water or any liquid using a pressurized conduid
3 Place Void Tank somewhere on the pipe line.
4 Boom negative numbers
Ok, it's a string that's null... but can't figure out using just github where it's ever set ๐ค
Ok, so you still can't reproduce it?
That's the temp modpack I created to do all the testing with debug-3.
Video on how to reproduce:
https://youtu.be/GJF9xuQL2Ro
New Logs:
Server:
fml-server-latest.log
Client:
latest.log
The new logs don't seem to contain anything new tho. I don't know if I did something wrong
Alrighty, I still can't get where I think the null is coming from to reproduce. But I've tried to make sure it's not null.
This build should tell us exactly where it's nulling out
http://maven.thiakil.com/mekanism/MekanismAll-1.10.2-9.2.4.103+6f129e14-debug-3.jar
Well there's no encoding error that I can see. How're the numbers looking in-game?