OpenBlocks

OpenBlocks

56M Downloads

Client crash with elevator block

Gunner76th opened this issue ยท 14 comments

commented

http://pastebin.com/Z4V2L3nw

I went to go up on my elevator like I have about a thousand times already, but this time the client crashed back to launcher. One thing different this time vs others, is that I have a Tinkers Construct pickaxe in my inventory that has -2 modifiers on it due to a bug with adding quartz to it for sharpness. I suspect the elevator block did not know how to handle this invalid data, and as such crashed out.

commented

Looks like there is file missing from OpenModsLib-1.7.10-0.6.jar. Please redownload from openmods.info. I would also like to have copy of your current file, if possible. Please upload it somewhere/

commented

Hmm, exactly same as release. And this file (/openmods/utils/NetUtils.class). Can you try renaming .jar to .zip and extracting that file? I'm starting to suspect false-positive from anti-virus software.

commented

https://dl.dropboxusercontent.com/u/251115511/OpenModsLib-1.7.10-0.6.jar there is a copy of the one we have on our server/clients.

commented

Sorry, I was just trying to figure what's going on. I got few similar issues on OpenEye (like this, this and this, etc. Always single issues, no common factory. Never actually had chance to ask anyone who experience it.

This crash in not caused in any way by gameplay content. Elevator doesn't care about inventory contents. It's actually class-loading issued that I can't reproduce.

The exact exception is java.lang.NoClassDefFoundError: openmods/utils/NetUtils. It can happen when class is either missing from jar (not in this case, because I already double checked archive, that's why I suspected AV) or when it has failed to initialize. In that case there should be line containing java.lang.ExceptionInInitializerError in logs before crash - please check (or even post full logs if possible).

commented

If you are thinking it is AV software on my client, I can 100% rule that out because at the time I was not running any sort of AV software. Also, I have all bu t confirmed that the issue was the elevator block not knowing how to handle a Tinker's Construct pickaxe that had true invalid data in it. Some how I managed to modify a pickaxe (not through creative means) to the point where it was showing as having -2 modifications on it ( meaning it had more on it that it could handle). When I logged back in, my pickaxe no longer showed as having -2 modifiers, and when I went and used the elevator again right after logging back on, everything was working perfectly.

So in short, the problem was the code used for the elevator block on the client's end was unable to understand the invalid data in the tool. The server corrected the problem, and upon logging back in, everything was working again.

@boq: as to your request to rename the file from .jar to .zip, that is not needed, as ALL archiving software that is able to handle a .zip archive are able to open a .jar due to the fact they are 1 in the same, just different extensions (note, windows inherent ability to open a .zip archive does not count as I do not consider it an archiving software.) With that being said, because of the fact I have already posted the requested file, you yourself are more than welcome to open the file listed above with any archiving software such as winzip, winrar, or 7zip.

commented

Ok, so I officially have no idea what's going on. Java just randomly decides that file /openmods/utils/NetUtils.class is missing. And it's only this exact, perfectly ordinary file. No idea why.

commented

https://gist.github.com/Gunner76th/abee5046b3eab46fa59a

So, I went to the console log file for my client while I was connected to the server at the time of the crash. At line 4408 is when the crash starts to happen as a result of me using the elevator block.

commented

NoClassDef can be thrown if the static initializer (clinit) throws an exception.
The static initializer invokes NetUtils.getPlayersWatchingChunk

That's all the information I can add to this currently.

commented

I queried OpenEye for this crash and this is what I got:

summary

individual crashes

As you can see, there is probably no pattern and almost no repeatability.

Missing internal class is even more interesting...

commented

OpenEye is beautiful on every level.
Do all of those NoClassDef classes have a static initializer? Because I can't think of anything else unless by some strange reason a client running out of memory during class load would throw a NoClassDef error instead of an OOM.

commented

Ah I was looking at the version linked above as that was the binary that was causing the issue, back then the static initializer did a lot more.

commented

'NetUtils' initializer only allocates single object ('LOGGING_LISTENER').

'OpenBlock$1' is autogenerated class (for enum switch) and has initializer that fills table with enum values.

commented

I'm not sure what binary you have. This file was changed only once in its lifetime and it was only field rename.

commented

What the -- what binary do I have!
I'll find out when I'm at work tomorrow as the binary is there.


Had a look and it matches the binary you mentioned, I must've been asleep or I had the wrong class open.