Open Sunconure11 opened 5 years ago
I just experienced this same issue during server startup.
The server has been restarted several times over the last few days with no issues until now. No config changes were made between the last successful restart and this crash.
HWYLA: Hwyla-1.8.26-B41_1.12.2.jar Minecraft 1.12.2 Forge 2831 Java 8 u212 OS Linux Ubuntu ModPack Sky Factory 4
It's due to the custom comparator method for an array sort at https://github.com/TehNut/HWYLA/blob/34decc22cd15633b662ed3905d67a90b985b22dc/src/main/java/mcp/mobius/waila/proxy/ProxyCommon.java#L64
sortedPlugins.sort((o1, o2) -> {
if (o1.getKey().getCanonicalName().startsWith("mcp.mobius.waila"))
return -1;
return o1.getKey().getCanonicalName().compareToIgnoreCase(o2.getKey().getCanonicalName());
});
The special case with a name starting with "mcp.mobius.waila" is only being tested on one of the items being compared. Depending on the order of the unsorted array, the crash has a chance of occurring.
It should also check if:
compareToIgnoreCase()
So it should look something like this:
sortedPlugins.sort((o1, o2) -> {
if (o1.getKey().getCanonicalName().startsWith("mcp.mobius.waila") && !o2.getKey().getCanonicalName().startsWith("mcp.mobius.waila")) {
return -1;
} else if (!o1.getKey().getCanonicalName().startsWith("mcp.mobius.waila") && o2.getKey().getCanonicalName().startsWith("mcp.mobius.waila")) {
return 1;
} else {
return o1.getKey().getCanonicalName().compareToIgnoreCase(o2.getKey().getCanonicalName());
}
});
Edit: Changed proposed replacement due to the original being incorrect
Issue Description:
I don't even know how this happened.
What happens:
This, I guess
https://paste.dimdev.org/dowowejeya.mccrash
What you expected to happen:
Not this. I'm out of words.
Steps to reproduce:
...
Affected Versions (Do not use "latest"):
Possible Conflicting Mods (Provide their version, as well)