NVIDIAGameWorks / PhysX

NVIDIA PhysX SDK
Other
3.11k stars 793 forks source link

Crash in IslandSim #655

Open zemlifr opened 6 months ago

zemlifr commented 6 months ago

Hello, we have encountered crash in IslandSim code with following callstacks

>   PhysX_64.dll!physx::IG::IslandSim::activateIsland(unsigned int islandId) Line 649   C++
    PhysX_64.dll!physx::IG::IslandSim::processNewEdges() Line 1052  C++
    PhysX_64.dll!physx::IG::SimpleIslandManager::firstPassIslandGen() Line 206  C++
    PhysX_64.dll!physx::Cm::Task::run() Line 67 C++

And

  PhysX_64.dll!physx::IG::IslandSim::addConnectionToGraph(unsigned int handle=9) Line 273        C++
         [Inline Frame] PhysX_64.dll!physx::IG::IslandSim::insertNewEdges() Line 890        C++
         PhysX_64.dll!physx::IG::IslandSim::processNewEdges() Line 927        C++
         PhysX_64.dll!physx::IG::SimpleIslandManager::firstPassIslandGen() Line 206        C++
         PhysX_64.dll!physx::Cm::Task::run() Line 67  

Unfortunately it happens very rarely in quite complex multiplayer scenario, so we don't have any simple or stable repro. I only suspect from some other logs that it happens when some joint constraint is violated which results to huge force applied to connected object.

I can see velocities like (-33018.468750, 107253.906250, 26213.623047) and it seems CTD happens several frames later, not immediately.

Is there some fix for that, or at least some tip which might cause that so we can try investigate deeper?

Thanks

preist-nvidia commented 6 months ago

Hi Frantisek,

Can you repro it in PhysX 5, assuming you are using 4? But sounds like it's not easy to use PhysX 5 if it only happens in the complex multiplayer scenario.

Thanks, Philipp

zemlifr commented 6 months ago

Hi, thanks for reply. Yes we are using 4.1.2. I have some prototype where we use Physx 5, but it is very wip. Crash really happens rarely during release testing, so there is not much chance to try physx 5 right now or even add some heavy logs :(

preist-nvidia commented 6 months ago

Hi Frantisek - I see. We will not update PhysX 4 anymore, so there will be no fix if it is an issue on our side, and it's hard to tell from the IslandSim source and your callstack why you get the crash (I assume we can rule out OOM, the callstacks could be caused by a failed PxArray allocation). If you can provide a repro with PhysX 5 (I know, not easy), we could look into it.

My best tip at this point is to detect and avoid large joint constraint violations that you found correlate with the crash.