Mekanism

Mekanism

111M Downloads

[1.10.2] Dynamic Tank Client Crash on server join.

Senjar opened this issue ยท 17 comments

commented

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

commented

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

commented

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

commented

I logged in with no crash but the fluid (creosote oil) seems to be gone (the corner break doesn't work) but every time I click the tank this appears for a split second.
vlc_2017-09-24_18-28-27
Edit: Tank was full with Creosote oil

commented

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)

commented

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.

commented

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 .
javaw_2017-09-25_16-26-27

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.

commented

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.

commented

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

commented

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.

commented

Logs
Server:
fml-server-latest.log

Client:
latest.log

Better image of the setup:
javaw_2017-09-26_17-15-00

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.

commented

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!

commented

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

commented

Ok, it's a string that's null... but can't figure out using just github where it's ever set ๐Ÿค”

commented

Ok, so you still can't reproduce it?

That's the temp modpack I created to do all the testing with debug-3.
2017-10-01_16-57-11

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

commented

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

commented

Well there's no encoding error that I can see. How're the numbers looking in-game?

commented

chrome_2017-10-02_14-39-41

Negative as you can see. Sometimes it corrects itself and goes to 0mB. I cant see a pattern tho.

You can see everything in the video I uploaded.