Continuity

Continuity

9M Downloads

SpriteFinder sometimes fails to initialize

rokoblox opened this issue ยท 20 comments

commented

Leaving the game then joining again right in the nether causes lots of surfaces to be invisible yet still interactable.
I'm on version 2.0.0-1.19 fabric 0.14.7

commented

Sorry for the late reply.
Apparently this doesn't just happen when I log in the nether, it just happens randomly sometimes, I have sodium + indium and immersive portals installed if these cause any conflicts.

image

Here is the log https://mclo.gs/Ohvxzdl

commented

It seems as though the SpriteFinder is not properly initialized, which will cause Continuity to not work. The log does not state the cause of the issue, but it is not a Continuity issue. This will be investigated.

commented

I just tried without the mod DashLoader which seems to have fixed the issue for this and another mod (Xaero's map) but I'm unsure because this issue didn't always occur even with the mod enabled.

commented

Log?

commented

Could you send the log from when it worked as well (same mods but without DashLoader)? It might provide some key information needed to fix this.

commented

There you go https://mclo.gs/WT65SYG
I logged into a world, went into the nether, quit the world, then loaded it again in the nether.
Everything seems fine now though.

commented
commented

@rokoblox recommend retitling this issue to be more accurate to what's actually happening so that other people like me can have an easier time finding it (it has taken me DAYS to find this issue).

commented

I found the issue to be with dashloader though, I don't know which name do you think fits best here.

commented

I found the issue to be with dashloader though

Are you sure it's DashLoader? Disabling it and having it not happen for a little while isn't enough - sometimes I've been playing on a test world for an entire day before this decides to happen again.

I mean, it's definitely possible, likely even, but let's not narrow down on one thing too fast, in case it ends up not being the root cause.

commented

Hi so ive got the same problem. I also had dashloader installed, deleted it but it happened again.
Or is there a known fix or what causes this? ^^"

It always happens randomly.

https://gist.github.com/pewblaze/7caafeafc237b21facb420877306bead

commented

@pewblaze Your issue is different than the SpriteFinder bug and will be fixed in the next release.

commented

Oh i see thank you! Sorry for posting in the wrong channel!

commented

The current status of this issue as follows.

  • This is not a Continuity bug. SpriteFinder is a Fabric API class which is used by Continuity, which is why the bug does not appear when Continuity is not present. Fundamentally this is likely a Fabric API bug, which is why the issue has the "upstream issue" label and no "bug" label.
  • The root of the issue is that the SpriteFinder for the block atlas failed to initialize due to stack overflow due to infinite recursion. The maximum recursion depth should not exceed 16 under any circumstances.
  • A reliable reproduction case has not been found. This means that no set of mods and resource packs has been found that can always trigger the error regardless of the user's environment. Without such a case, the root cause of the issue cannot be found and thus the issue cannot be fixed.

Any help with debugging this further would be appreciated.

commented

@PepperCode1 I am reliably crashing 1.18.2 with Continuity: #121 (comment)

commented

@PepperCode1 I am reliably crashing 1.18.2 with Continuity: #121 (comment)

That is #107 and completely unrelated to this issue. Read the large warnings on the project pages.

commented

That is #107 and completely unrelated to this issue. Read the large warnings on the project pages.

Oh, okay, thank you. I got this as a pack of mods, so didn't really pay much attention to any project pages FWIW ๐Ÿ˜๐Ÿ˜…

commented

The current status of this issue as follows.

  • This is not a Continuity bug. SpriteFinder is a Fabric API class which is used by Continuity, which is why the bug does not appear when Continuity is not present. Fundamentally this is likely a Fabric API bug, which is why the issue has the "upstream issue" label and no "bug" label.
  • The root of the issue is that the SpriteFinder for the block atlas failed to initialize due to stack overflow due to infinite recursion. The maximum recursion depth should not exceed 16 under any circumstances.
  • A reliable reproduction case has not been found. This means that no set of mods and resource packs has been found that can always trigger the error regardless of the user's environment. Without such a case, the root cause of the issue cannot be found and thus the issue cannot be fixed.

Any help with debugging this further would be appreciated.

Interesting to note is that even with a custom-built version of FAPI that implements manual code to prevent infinite recursion, the same sort of crash would still occur.

Feels like a while ago now, so it's hard for me to remember if this was a separate issue or still part of the same hunt to resolve this issue, but if I remember correctly I found out that parts of the world not rendering and everything freezing was actually caused by something totally separate: https://github.com/svenhjol/Charm/issues/246#issuecomment-1193206521

It's at least something for others suffering from these game symptoms to check.

commented

Some Fabric API developers have been able to reproduce the issue in a development environment and find the cause, which is that some mods like DashLoader and BetterEnd add sprites to the atlas with invalid UV bounds that are absolute instead of normalized. Fabric API commit FabricMC/fabric@c0ae659 has added a check to the SpriteFinder to prevent the initialization from failing completely.

commented

Wow, absolute props for figuring that out.

Have those mod authors been notified too?