1.20.3 crash with Sodium: UnsupportedOperationException

java.lang.UnsupportedOperationException: The internal methods provided by BufferVertexConsumer (as used to upcall into BufferBuilder) are unsupported
java.lang.UnsupportedOperationException: The internal methods provided by BufferVertexConsumer (as used to upcall into BufferBuilder) are unsupported
The exception seems to be intentionally thrown by Sodium code and I can't seem to reproduce it without having Iris installed alongside it, so I figured it might be better to report this here. This is without using any shaders. Crash report: https://mclo.gs/HjxexI1
6 Replies
caoimhe
caoimhe•12mo ago
Hi 👋 I'm having this issue too, originally thought it was something to do with our mod, Essential, but it turns out that that may not be completely true. It appears that because MixinBufferBuilder extends VertexConsumer, a default uv2/light implementation is generated, which seems to go down a code-path that eventually calls one of the methods stubbed out by Sodium's createBlockedUpcallException. That's my analysis from the problem anyways, I'm unsure of the specifics of the new changes between Iris and Sodium so I can't offer a solution to the devs, but I'm sure they'll have something 😅 @IMS if there's any more info that you need I'll be around all day Both mixin methods end up having equal priority in this situation, but usually the correct path is chosen
[12:49:28] [Render thread/WARN]: Method overwrite conflict for method_22921 in sodium.mixins.json:core.render.immediate.consumer.BufferBuilderMixin from mod sodium, previously written by net.coderbot.iris.mixin.vertices.MixinBufferBuilder. Skipping method.
[12:49:28] [Render thread/WARN]: Method overwrite conflict for method_22921 in sodium.mixins.json:core.render.immediate.consumer.BufferBuilderMixin from mod sodium, previously written by net.coderbot.iris.mixin.vertices.MixinBufferBuilder. Skipping method.
In the correct case, BufferBuilder will end up containing:
@MixinMerged(
mixin = "me.jellysquid.mods.sodium.mixin.core.render.immediate.consumer.BufferBuilderMixin",
priority = 1000,
sessionId = "96c7028b-6220-41eb-8f34-0dfca1d6eadc"
)
public VertexConsumer light(int u, int v) {
return this.light(packU16x2(u, v));
}
@MixinMerged(
mixin = "me.jellysquid.mods.sodium.mixin.core.render.immediate.consumer.BufferBuilderMixin",
priority = 1000,
sessionId = "96c7028b-6220-41eb-8f34-0dfca1d6eadc"
)
public VertexConsumer light(int u, int v) {
return this.light(packU16x2(u, v));
}
in the incorrect case:
@MixinMerged(
mixin = "net.coderbot.iris.mixin.vertices.MixinBufferBuilder",
priority = 1000,
sessionId = "4d787d32-0be4-46e6-9b31-060e715effdb"
)
@NotNull
public VertexConsumer light(int var1, int var2) {
return super.light(var1, var2);
}
@MixinMerged(
mixin = "net.coderbot.iris.mixin.vertices.MixinBufferBuilder",
priority = 1000,
sessionId = "4d787d32-0be4-46e6-9b31-060e715effdb"
)
@NotNull
public VertexConsumer light(int var1, int var2) {
return super.light(var1, var2);
}
IMS
IMS•12mo ago
thanks! i'll make a fix, but do you know a reliable way to cause the crash? ok wow nevermind literally just going to any snowy biome no clue how i didn't catch that ironically, this wasn't a default implementation i added that for a feature, and that feature ended up being cut and ig i just forgot to remove it
caoimhe
caoimhe•12mo ago
I just noticed that, yeah. We use different mappings, so the method names started throwing me off when I was trying to find it in your mixin
IMS
IMS•12mo ago
releasing 1.6.12 now to fix it place your bets now on if i'll need another one
caoimhe
caoimhe•12mo ago
Wonderful, thank you ✨ Can confirm that Essential no longer crashes either, thanks for the quick fix IMS
IMS
IMS•12mo ago
no problem
Want results from more Discord servers?
Add your server