[ODE] Fwd: AMD x86_64 dMassCheck() and bNormalizationResult errors

Funky Fred funkyfredmale at hotmail.com
Sun Nov 18 21:11:51 MST 2007


Looks like NAN (I also added a print statement to make sure my changes were actually happening)

No source file named util.cpp.
Breakpoint 1 at 0x2af26a2008db: file util.cpp, line 258.
[Thread debugging using libthread_db enabled]
[New Thread 47220667346784 (LWP 15338)]
gravity: 0,10,0
before: 
pos 1: 0,10,0
pos 2: 0,10,0
size of short: 2
[Switching to Thread 47220667346784 (LWP 15338)]

Breakpoint 1, dxStepBody (b=0x60f680, h=-nan(0x400000)) at util.cpp:258
258       cout << "Testing quat with dVALIDVEC4" << endl;
(gdb) next
72            return __pf(*this);
(gdb) display b->q
1: b->q = {nan(0x400000), -nan(0x400000), -nan(0x400000), -nan(0x400000)}

(needless to say, if I let it keep running, I get the same error as before. The assert doesn't appear to trigger)
 
changes were like so:
  // normalize the quaternion and convert it to a rotation matrix
  cout << "Testing quat with dVALIDVEC4" << endl;
  dVALIDVEC4( b->q );
  dNormalize4 (b->q);

I'm I feeding it funky number that throws it off (that 32 bit machines didn't catch)? Or is this a 64 bit issue?
Note I'm using the dMassAdjust version (as outlined in the previous mail), which I haven't tried on 32 bit, Should make too much of a difference, though, should it?

A snippet to refresh:
    dMass dmass;
    dMassSetZero( &dmass );
    dMassAdjust( &dmass, mass );
    //dmass.mass = mass;
    dBodySetMass( bodies[name], &dmass );
    return true;

Btw, thanks for the quick response! I would have pinged back sooner, but I work on Sundays ...

-Stu

________________________________
> Date: Sun, 18 Nov 2007 07:58:35 -0800
> From: b.stolk at gmail.com
> To: ode at ode.org
> Subject: [ODE] Fwd: AMD x86_64 dMassCheck() and bNormalizationResult errors
> 
> a copy to the list as well.
> 
> 
> On Nov 18, 2007 12:08 AM, Funky Fred > wrote:
> 
> ODE INTERNAL ERROR 1: assertion "bNormalizationResult" failed in _dNormalize4() [../../include/ode/odemath.h]
> 
> Program received signal SIGABRT, Aborted.
> [Switching to Thread 47280432254816 (LWP 8903)]
> 0x00002b00550a3765 in raise () from /lib/libc.so.6
> (gdb) bt
> #0  0x00002b00550a3765 in raise () from /lib/libc.so.6
> #1  0x00002b00550a51c0 in abort () from /lib/libc.so.6
> #2  0x00002b00546098f6 in dDebug (num=,
>    msg=) at error.cpp:102
> #3  0x00002b005464283a in dxStepBody (b=0x60e680, h=4.59163468e-41)
>    at ../../include/ode/odemath.h:304
> #4  0x00002b0054610a6f in dxQuickStepper (world=0x60e010, body=0x7fff566e2830,
>    nb=2, _joint=, nj=1, stepsize=1) at quickstep.cpp:868
> #5  0x00002b00546422cd in dxProcessIslands (world=0x60e010, stepsize=1,
>    stepper=0x2b005460f630 ) at util.cpp:339
> #6  0x00000000004042fe in evolve::PhysicsEngine::doPhysics (
>    this=0x7fff566e2920) at PhysicsEngine.cc:240
> #7  0x0000000000409920 in main () at testPhysicsEngine.cc:37
> 
> 
> 
> It is this normalization in dxStepBody()
> 
>   // normalize the quaternion and convert it to a rotation matrix
>   dNormalize4 (b->q);
>   dQtoR (b->q,b->posr.R);
> 
> It means that the quaternion calculated by dxStepBody() is 0,0,0,0
> Or just maybe it is trying to use NaN values?
> Please put in line 254 of util.cpp the following assert macro:
>   dVALIDVEC4(b->q);
> And let us know if it is triggered or not.
> 
> 
>   Bram
> 
> 
> --
> Zapp: Captain's log, stardate...er..
> Kif: Ohhh. April 13th.
> Zapp: April 13th. Point 2.

_________________________________________________________________
You keep typing, we keep giving. Download Messenger and join the i’m Initiative now.
http://im.live.com/messenger/im/home/?source=TAGLM


More information about the ODE mailing list