Code: Select all
#0 0x004a9121 in btUnionFind::find (this=0x204dd54, x=1818322290) at btUnionFind.h:104
#1 0x004a9150 in btUnionFind::unite (this=0x204dd54, p=-1, q=4) at btUnionFind.h:80
#2 0x00611776 in btDiscreteDynamicsWorld::calculateSimulationIslands (this=0x204dc30) at /Users/ejt/todo/packages/bullet-svn/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp:754
#3 0x00612e03 in btDiscreteDynamicsWorld::internalSingleStepSimulation (this=0x204dc30, timeStep=0.00999999978) at /Users/ejt/todo/packages/bullet-svn/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp:381
#4 0x006133be in btDiscreteDynamicsWorld::stepSimulation (this=0x204dc30, timeStep=0.00999999978, maxSubSteps=1, fixedTimeStep=0.00999999978) at /Users/ejt/todo/packages/bullet-svn/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp:342
So there's a couple oddities. One is how the -1 becomes 1818322290, this isn't a straightforward wrap around. The second is why the -1 is passed to unite in the first place: since that is expected to be an index in array for find, it's going to cause trouble even if it stays -1.
Another failure mode is that NaNs pop up and are passed to graphics for object positions, where Ogre chokes with an exception. These two types of failure seem to have started occurring at the same time, so I can't help but think they are related. However they occur sporadically, so it's hard for me to tell if it was a change to my code that started this.
Thoughts? Anything I can try to test or assert() to track this down would help, thanks!