I'm using Bullet as an external library. In debug mode the following assert fails the first time btDiscreteDynamicsWorld::stepSimulation() is called because numRows and numRowsOther are both 0 :
Code: Select all
void multiply2_p8r (const btScalar *B, const btScalar *C, int numRows, int numRowsOther, int row, int col)
{
btAssert (numRows>0 && numRowsOther>0 && B && C);
Code: Select all
> sim_1_0d.dll!btMatrixX<double>::multiply2_p8r() Line 387 + 0x34 bytes C++
sim_1_0d.dll!btMLCPSolver::createMLCPFast(void (char *, char *, char *) infoGlobal) Line 418 C++
sim_1_0d.dll!btMLCPSolver::solveGroupCacheFriendlySetup() Line 113 + 0x13 bytes C++
sim_1_0d.dll!btSequentialImpulseConstraintSolver::solveGroup() Line 1725 + 0x2f bytes C++
sim_1_0d.dll!InplaceSolverIslandCallback::processConstraints() Line 191 + 0x5c bytes C++
sim_1_0d.dll!btDiscreteDynamicsWorld::solveConstraints() Line 731 C++
sim_1_0d.dll!btDiscreteDynamicsWorld::internalSingleStepSimulation() Line 502 + 0x1b bytes C++
sim_1_0d.dll!btDiscreteDynamicsWorld::stepSimulation() Line 452 + 0x1b bytes C++
Does anybody have any idea what may be the cause of this? In release it seems to work fine.
I am not familiar with this part of the code at all. This is line that causes the variables to be 0:
Code: Select all
void btMLCPSolver::createMLCPFast(const btContactSolverInfo& infoGlobal)
{
......
// compute diagonal blocks of m_A
....
const unsigned int infom = row__ < m_tmpSolverNonContactConstraintPool.size() ? m_tmpConstraintSizesPool[jj].m_numConstraintRows : numContactRows;
infom (0) is then passed to multiplyAdd2_p8r as 3rd and 4th argument causing the assert to fail.
I have no idea what could cause m_tmpConstraintSizesPool[2].m_numConstraintRows to be 0. And if this is actually a problem.
Any help would be greatly appreciated.
Thanks!
Iman