[ODE] bug?: a hinge2 joint to bodyID=0

Adam Rotaru adam_rotaru at yahoo.com
Sat Dec 8 16:24:01 2001


  Hi,

While I was testing different joint types, I found the
following problem: when I link a body with a Hinge2
joint to the BodyID=0 (fixed), I get a segmentation
fault:

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 1024 (LWP 3062)]
0x08056dee in makeHinge2V1andV2 (joint=0xbffffe92)
    at ../../include/ode/odemath.h:39
39        { return ((a)[0]*(b)[0] + (a)[1]*(b)[1] +
(a)[2]*(b)[2]); }
(gdb) bt
#0  0x08056dee in makeHinge2V1andV2 (joint=0xbffffe92)
    at ../../include/ode/odemath.h:39
#1  0x0806fa58 in ?? ()
#2  0x402f365f in __libc_start_main () from
/lib/libc.so.6
(gdb)

My workaround is to create another body, link it to
BodyID=0 using a Hinge joint, and link my other bodies
to this auxiliary body using a Hinge2 joint.

I posted a simple program that exhibits this problem
to:
http://www.geocities.com/adam_rotaru/tmp/ode/test_bug_hinge2_0.cpp.txt

It simulates joints of various types, the first
argument given to the program must be a number:
    printf("  1 - hinge\n");
    printf("  2 - ballsocket\n");
    printf("  3 - hinge2\n");
    printf("  4 - hinge + hinge\n");
Case 3 has the problem.

It is possible that I do something wrong, but I
suspect this is a bug which is trivial to fix.

cheers,
  Adam


__________________________________________________
Do You Yahoo!?
Send your FREE holiday greetings online!
http://greetings.yahoo.com