Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Bug / Crash  Invalid memory access using libOni backend
#1
I recently switched from the Burst backend to libOni due to a crash that would occur late in the gameplay (posted here).
It's been a while that I tried long gameplay, but unfortunately libOni seems affected as well. About 35 minutes into gameplay, this "crash to desktop" occurred:


Code:
========== OUTPUTTING STACK TRACE ==================

0x00007FFC8E5A84F0 (libOni) Ordinal0
0x00007FFC8E5EB319 (libOni) GetPointCloudAnisotropy
0x00007FFC8E5F054A (libOni) GetPointCloudAnisotropy
0x00007FFC8E5F13B5 (libOni) GetPointCloudAnisotropy
0x00007FFC8E5A74A6 (libOni) Ordinal0
0x00007FFC8E5C2EDF (libOni) UpdateColliderGrid
0x0000012A65040C6C (Mono JIT Code) (wrapper managed-to-native) Oni:UpdateColliderGrid (single)
0x0000012A65040B8B (Mono JIT Code) [C:\Dev\Wrestle\Assets\Plugins\Obi\Scripts\Common\Backends\Oni\OniColliderWorld.cs:36] Obi.OniColliderWorld:UpdateWorld (single)
0x0000012A3E2C46CF (Mono JIT Code) [C:\Dev\Wrestle\Assets\Plugins\Obi\Scripts\Common\Collisions\ObiColliderWorld.cs:383] Obi.ObiColliderWorld:UpdateWorld (single)
0x0000012A3E2C20FB (Mono JIT Code) [C:\Dev\Wrestle\Assets\Plugins\Obi\Scripts\Common\Updaters\ObiUpdater.cs:58] Obi.ObiUpdater:BeginStep (single)
0x0000012A3E2C180B (Mono JIT Code) [C:\Dev\Wrestle\Assets\Plugins\Obi\Scripts\Common\Updaters\ObiFixedUpdater.cs:48] Obi.ObiFixedUpdater:FixedUpdate ()
0x0000012A122F2448 (Mono JIT Code) (wrapper runtime-invoke) object:runtime_invoke_void__this__ (object,intptr,intptr,intptr)
0x00007FFC655DE034 (mono-2.0-bdwgc) mono_jit_set_domain
0x00007FFC6551E724 (mono-2.0-bdwgc) mono_object_get_virtual_method
0x00007FFC6551E8BC (mono-2.0-bdwgc) mono_runtime_invoke

The GetLastError output that Unity produces for crashes again indicates an invalid memory accesses, much like for the Burst crash I reported.

This happens in a development build of Unity 2021.2.7 on Windows 10, 64-bit. I've also encountered this same crash in the editor once, which was when I was working on procedural generation that created Obi colliders and rigidbodies.

Again, like in the thread related to the Burst backend, I sadly cannot give a minimal example to reproduce. There's no specific action that seems to lead to a crash, and everything is just fine for over half an hour. The scenario is roughly the same: there are 12 Obi ropes with about 16 particles each. These are there from the beginning and always stay enabled. There are also quite some Obi rigidbodies and colliders (around ~300 seems plausible) that can interact with the ropes and are enabled and disabled in irregular intervals depending on their game states.

Now that both backends seem to be crashing for me at some point, it'd be crucial to have some kind of hint as to what may be going wrong. I'd be ready to try some debug build of libOni, maybe with debug information included, to get a more meaningful stack trace - unless you can already work with the above? The goal has to be that whatever happens, there should never be a crash to desktop, so I also wouldn't mind trying a build with manual assertions and error logging, even if that costs performance.

Many thanks in advance!

I'm also going to post in Made with Obi now that my project is public. The videos are teasers for the game, but they should give you a better idea as to what I'm even doing.
EDIT: See here, and maybe also this video, where there are many more characters in the game, which describes the crashing scenario much better.
Reply


Messages In This Thread
Invalid memory access using libOni backend - by pdinklag - 13-02-2022, 07:25 AM