physx cache crash using generated static collision with many entities

I'm using RealityKit for a scene with many static and dynamic ModelEntitys simulating physics. When all the entities have simple collision generated from .generateCollisionShapes I don't see any issues, but for some entities I need much more complex and accurate collision. For this I've been using ShapeResource.generateStaticMesh with the mesh's data (2769 positions, 16272 face indices in this case), which works exactly as desired with a low entity count. However once there are 600+ dynamic entities introducing even one static entity with complex collision will reliably trigger a crash when colliding with one of the dynamic entities (not necessarily on first contact, but inevitably after multiple collisions).

If I arbitrarily limit the number of entities to a max of around 500 it seems to prevent the issue from happening, though the likelihood seems to increase with the number of entities so there may be a low probability of it triggering even at 500 entities that I haven't hit while testing.

If physx imposes some kind of entity or collision face/shape limit or something like that I'd at least like to know exactly what it is, but ideally there's a way to work around this. Right now my "fix" is just arbitrarily restricting the entity count in a way that limits what my app can do.

The crash triggers inside 0x00000001a6790dfc in physx::PxcDiscreteNarrowPhasePCM(physx::PxcNpThreadContext&, physx::PxcNpWorkUnit const&, physx::Gu::Cache&, physx::PxsContactManagerOutput&) ()

which looks like this (crash line has an -> arrow at the bottom)

CoreRE`physx::PxcDiscreteNarrowPhasePCM:
    ...
    0x1a6790df0 <+668>:  mov    x1, x24
    0x1a6790df4 <+672>:  bl     0x1a67913d8               ; physx::PxcNpCacheStreamPair::reserve(unsigned int)
    0x1a6790df8 <+676>:  ldrb   w8, [x23]
->  0x1a6790dfc <+680>:  str    w8, [x0, #0x20]

The only solution I've found to this so far is just limiting the entity count. Seems safe to use up to around 600 total model entities with around 200 max dynamic entities. Hoping these limits can be worked around or formalized at some point.

We are also experiencing this even with a small number of dynamic models interacting with the scene mesh and are unable to find a stable fix.

physx cache crash using generated static collision with many entities
 
 
Q