Crashes when porting a newton 2.x program to 3.00

Report any bugs here and we'll post fixes

Moderators: Sascha Willems, Thomas

Re: Crashes when porting a newton 2.x program to 3.00

Postby carli2 » Sat Jul 14, 2012 2:18 am

Code: Select all
#0  0x00007ffff52c4445 in __GI_raise (sig=<optimized out>)
    at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#1  0x00007ffff52c7bab in __GI_abort () at abort.c:91
#2  0x00007ffff52bd10e in __assert_fail_base (fmt=<optimized out>,
    assertion=0x7ffff7454658 "((sizeof (m_matrix[i][j]) == sizeof (float) ? __finitef (m_matrix[i][j]) : sizeof (m_matrix[i][j]) == sizeof (double) ? __finite (m_matrix[i][j]) : __finitel (m_matrix[i][j])) && !(sizeof (m_matrix[i]"...,
    file=0x7ffff74548ae "../../source/physics/dgBody.h", line=<optimized out>,
    function=<optimized out>) at assert.c:94
#3  0x00007ffff52bd1b2 in __GI___assert_fail (
    assertion=0x7ffff7454658 "((sizeof (m_matrix[i][j]) == sizeof (float) ? __finitef (m_matrix[i][j]) : sizeof (m_matrix[i][j]) == sizeof (double) ? __finite (m_matrix[i][j]) : __finitel (m_matrix[i][j])) && !(sizeof (m_matrix[i]"...,
    file=0x7ffff74548ae "../../source/physics/dgBody.h", line=756,
    function=0x7ffff7454f00 "virtual void dgBody::SetMatrixOriginAndRotation(const dgMatrix&)") at assert.c:103
#4  0x00007ffff72adde2 in dgBody::SetMatrixOriginAndRotation (this=0xf0b3c0,
    matrix=...) at ../../source/physics/dgBody.h:756
#5  0x00007ffff729fe3d in dgBody::SetMatrix (this=0xf0b3c0, matrix=...)
    at ../../source/physics/dgBody.cpp:367
#6  0x00007ffff72a19a8 in dgBody::SetMatrixIgnoreSleep (this=0xf0b3c0,
---Type <return> to continue, or q <return> to quit---
    matrix=...) at ../../source/physics/dgBody.cpp:383
#7  0x00007ffff743ca01 in NewtonBodySetMatrix (bodyPtr=<optimized out>,
    matrixPtr=<optimized out>) at ../../source/newton/Newton.cpp:4902
#8  0x00000000005d2a8b in SETROT (HOME=0xa3c, PARS=0xa3c)
    at physicscript.pas:776


The code of SETROT is btw following:
Code: Select all
  angles[0]:=0;
  angles[1]:=-pars[0].float*pi/180;
  angles[2]:=0;
  NewtonBodyGetMatrix(o.newton, @matrix2[0][0]);
  NewtonSetEulerAngle(@angles[0], @matrix[0][0]);
  matrix[3]:=matrix2[3];
  NewtonBodySetMatrix(o.newton, @matrix[0][0]);


After deactivating SETROT, the following assertion fails:
Code: Select all
gwX.engine: ../../source/core/dgVector.h:305: dgVector::dgVector(const dgTemplateVector<float>&): Assertion `(((sizeof ((*this)[0]) == sizeof (float) ? __finitef ((*this)[0]) : sizeof ((*this)[0]) == sizeof (double) ? __finite ((*this)[0]) : __finitel ((*this)[0])) && !(sizeof ((*this)[0]) == sizeof (float) ? __isnanf ((*this)[0]) : sizeof ((*this)[0]) == sizeof (double) ? __isnan ((*this)[0]) : __isnanl ((*this)[0]))) && ((sizeof ((*this)[1]) == sizeof (float) ? __finitef ((*this)[1]) : sizeof ((*this)[1]) == sizeof (double) ? __finite ((*this)[1]) : __finitel ((*this)[1])) && !(sizeof ((*this)[1]) == sizeof (float) ? __isnanf ((*this)[1]) : sizeof ((*this)[1]) == sizeof (double) ? __isnan ((*this)[1]) : __isnanl ((*this)[1]))) && ((sizeof ((*this)[2]) == sizeof (float) ? __finitef ((*this)[2]) : sizeof ((*this)[2]) == sizeof (double) ? __finite ((*this)[2]) : __finitel ((*this)[2])) && !(sizeof ((*this)[2]) == sizeof (float) ? __isnanf ((*this)[2]) : sizeof ((*this)[2]) == sizeof (double) ? __isnan ((*this)[2]) : __isnanl ((*this)[2]))) && ((sizeof ((*this)[3]) == sizeof (float) ? __finitef ((*this)[3]) : sizeof ((*this)[3]) == sizeof (double) ? __finite ((*this)[3]) : __finitel ((*this)[3])) && !(sizeof ((*this)[3]) == sizeof (float) ? __isnanf ((*this)[3]) : sizeof ((*this)[3]) == sizeof (double) ? __isnan ((*this)[3]) : __isnanl ((*this)[3]))))' failed.

Program received signal SIGABRT, Aborted.
0x00007ffff52c4445 in __GI_raise (sig=<optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
64   ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) backtrace
#0  0x00007ffff52c4445 in __GI_raise (sig=<optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#1  0x00007ffff52c7bab in __GI_abort () at abort.c:91
#2  0x00007ffff52bd10e in __assert_fail_base (fmt=<optimized out>,
    assertion=0x7ffff74497c0 "(((sizeof ((*this)[0]) == sizeof (float) ? __finitef ((*this)[0]) : sizeof ((*this)[0]) == sizeof (double) ? __finite ((*this)[0]) : __finitel ((*this)[0])) && !(sizeof ((*this)[0]) == sizeof (float) "..., file=0x7ffff7449dfe "../../source/core/dgVector.h",
    line=<optimized out>, function=<optimized out>) at assert.c:94
#3  0x00007ffff52bd1b2 in __GI___assert_fail (
    assertion=0x7ffff74497c0 "(((sizeof ((*this)[0]) == sizeof (float) ? __finitef ((*this)[0]) : sizeof ((*this)[0]) == sizeof (double) ? __finite ((*this)[0]) : __finitel ((*this)[0])) && !(sizeof ((*this)[0]) == sizeof (float) "..., file=0x7ffff7449dfe "../../source/core/dgVector.h", line=305,
    function=0x7ffff7456e20 "dgVector::dgVector(const dgTemplateVector<float>&)") at assert.c:103
#4  0x00007ffff72b95a1 in dgVector (this=<optimized out>, v=...) at ../../source/core/dgVector.h:305
#5  dgVector (v=..., this=<optimized out>) at ../../source/physics/dgBroadPhaseCollision.cpp:506
#6  Reset (t=<optimized out>, this=<optimized out>) at ../../source/core/dgIntersections.h:50
#7  dgBroadPhaseCollision::ConvexCast (this=0xddd7f0, shape=0x14ff180, matrix0=..., target=..., timeToImpact=@0x7ffffffefdac: 0,
    prefilter=0x5d1798 <MYPREFILTER>, userData=0x7fffd568f040, info=0x7fffe8091920, maxContacts=128, threadIndex=0)
    at ../../source/physics/dgBroadPhaseCollision.cpp:570
#8  0x00007ffff743f6c8 in NewtonWorldConvexCast (newtonWorld=0xddd7c0, matrix=0x7ffffffefdd4, target=<optimized out>, shape=0x14ff180,
    hitParam=<optimized out>, userData=0x7fffd568f040, prefilter=0x5d1798 <MYPREFILTER>, info=0x7fffe8091920, maxContactsCount=128, threadIndex=0)
    at ../../source/newton/Newton.cpp:1360
#9  0x00000000005d1ab0 in MOVETILL (HOME=0x7ffffffefdbc, PARS=0x14ff180) at physicscript.pas:634
carli2
 
Posts: 157
Joined: Thu Nov 10, 2011 1:53 pm

Re: Crashes when porting a newton 2.x program to 3.00

Postby Julio Jerez » Sat Jul 14, 2012 9:05 am

I think this is the bug
Code: Select all
void NewtonSetEulerAngle(const dFloat* const angles, dFloat* const matrix)
{
   TRACE_FUNCTION(__FUNCTION__);
   dgMatrix mat (dgPitchMatrix (angles[0]) * dgYawMatrix(angles[1]) * dgRollMatrix(angles[2]));
   dgMatrix retMatrix (matrix);


it should be like this:
Code: Select all
void NewtonSetEulerAngle(const dFloat* const angles, dFloat* const matrix)
{
   dgMatrix mat (dgPitchMatrix (angles[0]) * dgYawMatrix(angles[1]) * dgRollMatrix(angles[2]));
   //dgMatrix retMatrix (matrix);
   dgMatrix& retMatrix = *((dgMatrix*) matrix);


it is fixed now, update
Julio Jerez
Moderator
Moderator
 
Posts: 12249
Joined: Sun Sep 14, 2003 2:18 pm
Location: Los Angeles

Re: Crashes when porting a newton 2.x program to 3.00

Postby carli2 » Sat Jul 14, 2012 2:25 pm

Yay, that fixed it! I can see the world now. (thanks)

And now the next problem (the crash after player join).

But first, when I enable debug, the following happens:
Code: Select all
In file included from ../../source/core/dgVector.h:28:0,
                 from ../../source/core/dgMatrix.h:28,
                 from ../../source/core/dgAABBPolygonSoup.cpp:32:
../../source/core/dgSimd_128.h: In member function ‘simd_128 simd_128::Floor() const’:
../../source/core/dgSimd_128.h:192:4: error: request for member ‘m128_f32’ in ‘ret.simd_128::m_type’, which is of non-class type ‘__m128 {aka __vector(4) float}’
../../source/core/dgSimd_128.h:192:4: error: request for member ‘m128_f32’ in ‘((const simd_128*)this)->simd_128::m_type’, which is of non-class type ‘const __m128 {aka const __vector(4) float}’
../../source/core/dgSimd_128.h:193:4: error: request for member ‘m128_f32’ in ‘ret.simd_128::m_type’, which is of non-class type ‘__m128 {aka __vector(4) float}’
../../source/core/dgSimd_128.h:193:4: error: request for member ‘m128_f32’ in ‘((const simd_128*)this)->simd_128::m_type’, which is of non-class type ‘const __m128 {aka const __vector(4) float}’
../../source/core/dgSimd_128.h:194:4: error: request for member ‘m128_f32’ in ‘ret.simd_128::m_type’, which is of non-class type ‘__m128 {aka __vector(4) float}’
../../source/core/dgSimd_128.h:194:4: error: request for member ‘m128_f32’ in ‘((const simd_128*)this)->simd_128::m_type’, which is of non-class type ‘const __m128 {aka const __vector(4) float}’
../../source/core/dgSimd_128.h:195:4: error: request for member ‘m128_f32’ in ‘ret.simd_128::m_type’, which is of non-class type ‘__m128 {aka __vector(4) float}’
../../source/core/dgSimd_128.h:195:4: error: request for member ‘m128_f32’ in ‘((const simd_128*)this)->simd_128::m_type’, which is of non-class type ‘const __m128 {aka const __vector(4) float}’
make: *** [../../source/core/dgAABBPolygonSoup.o] Error 1

In file included from ../../source/core/dg.h:37:0,
                 from ../../source/physics/dgPhysicsStdafx.h:35,
                 from ../../source/physics/dgBallConstraint.cpp:22:
../../source/core/dgGraph.h: In member function ‘void dgGraphNode<dgNodeData, dgEdgeData>::Trace() const’:
../../source/core/dgGraph.h:183:2: error: ‘m_index’ was not declared in this scope
make: *** [../../source/physics/dgBallConstraint.o] Error 1

../../source/physics/dgMinkowskiConv.cpp:830:3: error: ‘__FUNCDNAME__’ was not declared in this scope
../../source/physics/dgMinkowskiConv.cpp: In member function ‘dgContactSolver::dgMinkReturnCode dgContactSolver::UpdateSeparatingPlaneFallbackSolution(dgContactSolver::dgMinkFace*&, const dgVector&)’:
../../source/physics/dgMinkowskiConv.cpp:1176:3: error: ‘__FUNCDNAME__’ was not declared in this scope
make: *** [../../source/physics/dgMinkowskiConv.o] Error 1


I simply commented them out, but you can maybe fix that in a better way.
btw __FUNCDNAME__ is __PRETTY_FUNCTION__

Before I can backtrace the crash, the following assertion fails:
Code: Select all
gwX.engine: ../../source/core/dgVector.h:305: dgVector::dgVector(const dgTemplateVector<float>&): Assertion `(((sizeof ((*this)[0]) == sizeof (float) ? __finitef ((*this)[0]) : sizeof ((*this)[0]) == sizeof (double) ? __finite ((*this)[0]) : __finitel ((*this)[0])) && !(sizeof ((*this)[0]) == sizeof (float) ? __isnanf ((*this)[0]) : sizeof ((*this)[0]) == sizeof (double) ? __isnan ((*this)[0]) : __isnanl ((*this)[0]))) && ((sizeof ((*this)[1]) == sizeof (float) ? __finitef ((*this)[1]) : sizeof ((*this)[1]) == sizeof (double) ? __finite ((*this)[1]) : __finitel ((*this)[1])) && !(sizeof ((*this)[1]) == sizeof (float) ? __isnanf ((*this)[1]) : sizeof ((*this)[1]) == sizeof (double) ? __isnan ((*this)[1]) : __isnanl ((*this)[1]))) && ((sizeof ((*this)[2]) == sizeof (float) ? __finitef ((*this)[2]) : sizeof ((*this)[2]) == sizeof (double) ? __finite ((*this)[2]) : __finitel ((*this)[2])) && !(sizeof ((*this)[2]) == sizeof (float) ? __isnanf ((*this)[2]) : sizeof ((*this)[2]) == sizeof (double) ? __isnan ((*this)[2]) : __isnanl ((*this)[2]))) && ((sizeof ((*this)[3]) == sizeof (float) ? __finitef ((*this)[3]) : sizeof ((*this)[3]) == sizeof (double) ? __finite ((*this)[3]) : __finitel ((*this)[3])) && !(sizeof ((*this)[3]) == sizeof (float) ? __isnanf ((*this)[3]) : sizeof ((*this)[3]) == sizeof (double) ? __isnan ((*this)[3]) : __isnanl ((*this)[3]))))' failed.

Program received signal SIGABRT, Aborted.
0x00007ffff52c2445 in __GI_raise (sig=<optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
64   ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) backtrace
#0  0x00007ffff52c2445 in __GI_raise (sig=<optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64
#1  0x00007ffff52c5bab in __GI_abort () at abort.c:91
#2  0x00007ffff52bb10e in __assert_fail_base (fmt=<optimized out>,
    assertion=0x7ffff7448d60 "(((sizeof ((*this)[0]) == sizeof (float) ? __finitef ((*this)[0]) : sizeof ((*this)[0]) == sizeof (double) ? __finite ((*this)[0]) : __finitel ((*this)[0])) && !(sizeof ((*this)[0]) == sizeof (float) "..., file=0x7ffff744939e "../../source/core/dgVector.h",
    line=<optimized out>, function=<optimized out>) at assert.c:94
#3  0x00007ffff52bb1b2 in __GI___assert_fail (
    assertion=0x7ffff7448d60 "(((sizeof ((*this)[0]) == sizeof (float) ? __finitef ((*this)[0]) : sizeof ((*this)[0]) == sizeof (double) ? __finite ((*this)[0]) : __finitel ((*this)[0])) && !(sizeof ((*this)[0]) == sizeof (float) "..., file=0x7ffff744939e "../../source/core/dgVector.h", line=305,
    function=0x7ffff74564c0 "dgVector::dgVector(const dgTemplateVector<float>&)") at assert.c:103
#4  0x00007ffff72b7f91 in dgVector (this=<optimized out>, v=...) at ../../source/core/dgVector.h:305
#5  dgVector (v=..., this=<optimized out>) at ../../source/physics/dgBroadPhaseCollision.cpp:506
#6  Reset (t=<optimized out>, this=<optimized out>) at ../../source/core/dgIntersections.h:50
#7  dgBroadPhaseCollision::ConvexCast (this=0xddfdf0, shape=0x14ffc00, matrix0=..., target=..., timeToImpact=@0x7ffffffefdac: 0,
    prefilter=0x5d1798 <MYPREFILTER>, userData=0x7fffe8050040, info=0x7fffe808f920, maxContacts=128, threadIndex=0)
    at ../../source/physics/dgBroadPhaseCollision.cpp:570
#8  0x00007ffff743ede8 in NewtonWorldConvexCast (newtonWorld=0xddfdc0, matrix=0x7ffffffefdd4, target=<optimized out>, shape=0x14ffc00,
    hitParam=<optimized out>, userData=0x7fffe8050040, prefilter=0x5d1798 <MYPREFILTER>, info=0x7fffe808f920, maxContactsCount=128, threadIndex=0)
    at ../../source/newton/Newton.cpp:1360
Last edited by carli2 on Sat Jul 14, 2012 2:29 pm, edited 1 time in total.
carli2
 
Posts: 157
Joined: Thu Nov 10, 2011 1:53 pm

Re: Crashes when porting a newton 2.x program to 3.00

Postby carli2 » Sat Jul 14, 2012 2:28 pm

And here's the backtrace of the crash: (I disabled assertions to get to this point)
Code: Select all
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffd6dee700 (LWP 13078)]
0x00007ffff739e7e8 in dgCollisionCompound::CalculateContactsToSingle (this=0xeed580, pair=<optimized out>, proxy=..., useSimd=<optimized out>)
    at ../../source/physics/dgCollisionCompound.cpp:1508
1508                     processContacts = constraint->GetMaterial()->m_compoundAABBOverlap (*constraint->GetMaterial(), *compoundBody, *otherBody, proxy.m_threadIndex);
(gdb) backtrace
#0  0x00007ffff739e7e8 in dgCollisionCompound::CalculateContactsToSingle (this=0xeed580, pair=<optimized out>, proxy=..., useSimd=<optimized out>)
    at ../../source/physics/dgCollisionCompound.cpp:1508
#1  0x00007ffff73a17f1 in dgCollisionCompound::CalculateContacts (this=0xeed580, pair=0x7fffd6dd2f60, proxy=..., useSimd=0)
    at ../../source/physics/dgCollisionCompound.cpp:1320
#2  0x00007ffff742309c in dgWorld::CompoundContacts (this=0xdddb80, pair=0x7fffd6dd2f60, proxy=...)
    at ../../source/physics/dgNarrowPhaseCollision.cpp:1023
#3  0x00007ffff74233a8 in dgWorld::CalculateContacts (this=0xdddb80, pair=0x7fffd6dd2f60, timestep=<optimized out>, threadIndex=<optimized out>)
    at ../../source/physics/dgNarrowPhaseCollision.cpp:1410
#4  0x00007ffff7424c97 in dgWorld::CollideContinue (this=0xdddb80, collisionSrcA=0x14fe780, matrixA=..., velocA=..., omegaA=...,
    collisionSrcB=<optimized out>, matrixB=..., velocB=..., omegaB=..., retTimeStep=@0x7fffd6dd3da0: 1e+10, points=0x7fffd6dd38e0,
    normals=0x7fffd6dd3a60, penetration=0x7fffd6dd3cb0, maxSize=32, threadIndex=0) at ../../source/physics/dgNarrowPhaseCollision.cpp:1617
#5  0x00007ffff7383cc0 in dgBroadPhaseCollision::ConvexCast (this=0xdddbb0, shape=0x14fe780, matrix0=..., target=..., timeToImpact=@0x7fffd6dd40ec: 0,
    prefilter=0x5d1798 <MYPREFILTER>, userData=0x7ffff7fe1d40, info=0x7fffd4ddd060, maxContacts=128, threadIndex=0)
    at ../../source/physics/dgBroadPhaseCollision.cpp:561
#6  0x00007ffff747796f in NewtonWorldConvexCast (newtonWorld=<optimized out>, matrix=<optimized out>, target=<optimized out>, shape=<optimized out>,
    hitParam=<optimized out>, userData=<optimized out>, prefilter=0x5d1798 <MYPREFILTER>, info=0x7fffd4ddd060, maxContactsCount=128, threadIndex=0)
    at ../../source/newton/Newton.cpp:1360
#7  0x00000000005d1ab0 in MOVETILL (HOME=0x7fffd6dd40fc, PARS=0x14fe780) at physicscript.pas:634
carli2
 
Posts: 157
Joined: Thu Nov 10, 2011 1:53 pm

Re: Crashes when porting a newton 2.x program to 3.00

Postby Julio Jerez » Sat Jul 14, 2012 3:35 pm

you are prbably setting teh code to use simd_d , and since continue collsion if no fully ready
funtion dgInt32 dgBroadPhaseCollision::ConvexCast will see teh simd path, but that pasth will call CollideContinueSimd


this is what the function is now.
Code: Select all
dgInt32 dgWorld::CollideContinueSimd  (
    const dgCollisionInstance* const collisionA, const dgMatrix& matrixA, const dgVector& velocA, const dgVector& omegaA,
   const dgCollisionInstance* const collisionB, const dgMatrix& matrixB, const dgVector& velocB, const dgVector& omegaB,
   dgFloat32& retTimeStep, dgTriplex* const points, dgTriplex* const normals, dgFloat32* const penetration, dgInt32 maxSize, dgInt32 threadIndex)
{
   _ASSERTE (0);
   return 0;


like I said I am plalning to move to OpenCL, and base on the result, I will decide if I will maintain the simd or I will remove it all togheter in favor of OpenCL on CPU and GPU.
do not use simd code, because no all is functional.
Julio Jerez
Moderator
Moderator
 
Posts: 12249
Joined: Sun Sep 14, 2003 2:18 pm
Location: Los Angeles

Re: Crashes when porting a newton 2.x program to 3.00

Postby carli2 » Sat Jul 14, 2012 3:45 pm

Please take a second look at the posts. I found three points where newton refuses to compile with -D_DEBUG.

My last post was a copy&paste error. Here's the correct backtrace:
Code: Select all
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffd6de6700 (LWP 14811)]
0x00007ffff739e7e8 in dgCollisionCompound::CalculateContactsToSingle (
    this=0xeee740, pair=<optimized out>, proxy=..., useSimd=<optimized out>)
    at ../../source/physics/dgCollisionCompound.cpp:1508
1508                     processContacts = constraint->GetMaterial()->m_compoundAABBOverlap (*constraint->GetMaterial(), *compoundBody, *otherBody, proxy.m_threadIndex);
(gdb) backtrace
#0  0x00007ffff739e7e8 in dgCollisionCompound::CalculateContactsToSingle (
    this=0xeee740, pair=<optimized out>, proxy=..., useSimd=<optimized out>)
    at ../../source/physics/dgCollisionCompound.cpp:1508
#1  0x00007ffff73a17f1 in dgCollisionCompound::CalculateContacts (
    this=0xeee740, pair=0x7fffd6dcaf60, proxy=..., useSimd=0)
    at ../../source/physics/dgCollisionCompound.cpp:1320
#2  0x00007ffff742309c in dgWorld::CompoundContacts (this=0xde0540,
    pair=0x7fffd6dcaf60, proxy=...)
    at ../../source/physics/dgNarrowPhaseCollision.cpp:1023
#3  0x00007ffff74233a8 in dgWorld::CalculateContacts (this=0xde0540,
    pair=0x7fffd6dcaf60, timestep=<optimized out>, threadIndex=<optimized out>)
    at ../../source/physics/dgNarrowPhaseCollision.cpp:1410
#4  0x00007ffff7424c97 in dgWorld::CollideContinue (this=0xde0540,
    collisionSrcA=0x1500600, matrixA=..., velocA=..., omegaA=...,
    collisionSrcB=<optimized out>, matrixB=..., velocB=..., omegaB=...,
    retTimeStep=@0x7fffd6dcbda0: 1e+10, points=0x7fffd6dcb8e0,
    normals=0x7fffd6dcba60, penetration=0x7fffd6dcbcb0, maxSize=32,
    threadIndex=0) at ../../source/physics/dgNarrowPhaseCollision.cpp:1617
#5  0x00007ffff7383cc0 in dgBroadPhaseCollision::ConvexCast (this=0xde0570,
    shape=0x1500600, matrix0=..., target=..., timeToImpact=@0x7fffd6dcc0ec: 0,
    prefilter=0x5d1798 <MYPREFILTER>, userData=0x7fffe8394840,
---Type <return> to continue, or q <return> to quit---
    info=0x7fffd4e2d060, maxContacts=128, threadIndex=0)
    at ../../source/physics/dgBroadPhaseCollision.cpp:561
#6  0x00007ffff747796f in NewtonWorldConvexCast (newtonWorld=<optimized out>,
    matrix=<optimized out>, target=<optimized out>, shape=<optimized out>,
    hitParam=<optimized out>, userData=<optimized out>,
    prefilter=0x5d1798 <MYPREFILTER>, info=0x7fffd4e2d060,
    maxContactsCount=128, threadIndex=0) at ../../source/newton/Newton.cpp:1360
#7  0x00000000005d1ab0 in MOVETILL (HOME=0x7fffd6dcc0fc, PARS=0x1500600)
    at physicscript.pas:634


(btw I disabled continuous collision)
carli2
 
Posts: 157
Joined: Thu Nov 10, 2011 1:53 pm

Re: Crashes when porting a newton 2.x program to 3.00

Postby Julio Jerez » Sat Jul 14, 2012 3:52 pm

yes I said do not use simd if you are callun conve cast, because that funtion use the continue collision
Julio Jerez
Moderator
Moderator
 
Posts: 12249
Joined: Sun Sep 14, 2003 2:18 pm
Location: Los Angeles

Re: Crashes when porting a newton 2.x program to 3.00

Postby Julio Jerez » Sat Jul 14, 2012 3:59 pm

Oh I see, NewtonWorldConvexCast will crash because in core 300 now the joint are persistace and they need a material, but NewtonWorldConvexCast set a dummy unitilized material. I need to fix that.
Julio Jerez
Moderator
Moderator
 
Posts: 12249
Joined: Sun Sep 14, 2003 2:18 pm
Location: Los Angeles

Re: Crashes when porting a newton 2.x program to 3.00

Postby Julio Jerez » Sat Jul 14, 2012 4:07 pm

this is the bug, the contact material constructor do not initilize the callbacks, this should fix it

Code: Select all
dgContactMaterial::dgContactMaterial()
   :m_userData(NULL)
   ,m_aabbOverlap(NULL)
   ,m_contactPoint(NULL)
   ,m_compoundAABBOverlap(NULL)
{


sinc to svn
Julio Jerez
Moderator
Moderator
 
Posts: 12249
Joined: Sun Sep 14, 2003 2:18 pm
Location: Los Angeles

Re: Crashes when porting a newton 2.x program to 3.00

Postby carli2 » Sat Jul 14, 2012 4:08 pm

Don't forget to write commit messages into SVN.

Currently, Newtons project history looks like that:

Code: Select all
------------------------------------------------------------------------
r2301 | jerezjulio@sbcglobal.net | 2012-07-14 19:06:54 +0200 (Sa, 14 Jul 2012) | 1 line


------------------------------------------------------------------------
r2300 | jerezjulio@sbcglobal.net | 2012-07-14 17:35:33 +0200 (Sa, 14 Jul 2012) | 1 line


------------------------------------------------------------------------
r2299 | jerezjulio@sbcglobal.net | 2012-07-14 15:09:53 +0200 (Sa, 14 Jul 2012) | 1 line


------------------------------------------------------------------------
r2298 | jerezjulio@sbcglobal.net | 2012-07-14 15:05:15 +0200 (Sa, 14 Jul 2012) | 1 line


------------------------------------------------------------------------
r2297 | jerezjulio@sbcglobal.net | 2012-07-13 17:35:14 +0200 (Fr, 13 Jul 2012) | 1 line


------------------------------------------------------------------------
r2296 | jerezjulio@sbcglobal.net | 2012-07-13 13:29:02 +0200 (Fr, 13 Jul 2012) | 1 line


------------------------------------------------------------------------
r2295 | jerezjulio@sbcglobal.net | 2012-07-12 18:47:30 +0200 (Do, 12 Jul 2012) | 1 line


------------------------------------------------------------------------
r2294 | jerezjulio@sbcglobal.net | 2012-07-12 17:29:14 +0200 (Do, 12 Jul 2012) | 1 line
carli2
 
Posts: 157
Joined: Thu Nov 10, 2011 1:53 pm

Re: Crashes when porting a newton 2.x program to 3.00

Postby carli2 » Sat Jul 14, 2012 4:19 pm

Okay, this fixes the crash, thanks.

Now I need to make some fine adjustments to my code. I did not test it yet, but my function MoveTill which moves a object into one direction until it hits sth is behaving differently. There must be a return value of 0 for the hitparam of ConvexCast. This blocks my character controller to not move.
carli2
 
Posts: 157
Joined: Thu Nov 10, 2011 1:53 pm

Re: Crashes when porting a newton 2.x program to 3.00

Postby Julio Jerez » Sat Jul 14, 2012 5:08 pm

carli2 wrote:There must be a return value of 0 for the hitparam of ConvexCast. This blocks my character controller to not move.

ConvextCast returns 0 if the object is colliding at the zero location, else it returns the parametric value to the first hit.
Julio Jerez
Moderator
Moderator
 
Posts: 12249
Joined: Sun Sep 14, 2003 2:18 pm
Location: Los Angeles

Re: Crashes when porting a newton 2.x program to 3.00

Postby carli2 » Sun Jul 15, 2012 6:39 am

Julio Jerez wrote:
carli2 wrote:There must be a return value of 0 for the hitparam of ConvexCast. This blocks my character controller to not move.

ConvextCast returns 0 if the object is colliding at the zero location, else it returns the parametric value to the first hit.


Does this mean, when a object is stuck, I cannot move it out by checking it with ConvexCast?
Is this a function change from 2.xx to 3.00?
carli2
 
Posts: 157
Joined: Thu Nov 10, 2011 1:53 pm

Re: Crashes when porting a newton 2.x program to 3.00

Postby Julio Jerez » Sun Jul 15, 2012 7:11 am

if an object is stuck and you move agaist the diretion that get even more stucke you get zero, but i fteh motion move the mode away form teh collsion yse you can get aout.

Th ebefaviuor of convex cast in core 300 is identical to that of core 2.xx
Julio Jerez
Moderator
Moderator
 
Posts: 12249
Joined: Sun Sep 14, 2003 2:18 pm
Location: Los Angeles

Re: Crashes when porting a newton 2.x program to 3.00

Postby carli2 » Sun Jul 15, 2012 7:40 am

So it seems to be a numerical issue. I will see if some constants are too small. (in my character controller)
carli2
 
Posts: 157
Joined: Thu Nov 10, 2011 1:53 pm

PreviousNext

Return to Bugs and Fixes

Who is online

Users browsing this forum: No registered users and 5 guests

cron