[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