[ODE] linux amd64 compile error - 0.6-rc1

Chris M. czb182 at hotmail.com
Sat May 27 09:15:14 MST 2006


I compiled ode with double precision to do these test.  With single 
precision some of them actually run.

dstest runs fine.

Now on to ode test.  I ran test_I and got this
ODE Message 2: mass must be > 0 in checkMass()
ODE Message 2: inertia must be positive definite in dBodySetMass()
...
ODE INTERNAL ERROR 2: stepsize must be > 0 in dWorldStep()
Aborted

Ran test_basket
numv=486, numi=486
./test_basket: symbol lookup error: ./test_basket: undefined symbol: 
dGeomTriMeshDataCreate

ran test_buggy
ODE Message 2: mass must be > 0 in checkMass()
ODE INTERNAL ERROR 2: Bad argument(s) in dxBox()
Aborted

ran test_motor
ODE Message 2: mass must be > 0 in checkMass()
./test_motor: symbol lookup error: ./test_motor: undefined symbol: 
dJointCreateLMotor

And I got similar results with the other test.

Let me know if there is anything else I should do, I'll be glad to help.

>From: Bram Stolk <bram at sara.nl>
>To: "Chris M." <czb182 at hotmail.com>
>CC: ode at q12.org
>Subject: Re: [ODE] linux amd64 compile error - 0.6-rc1
>Date: Sat, 27 May 2006 12:51:29 +0200
>
>Chris, and others,
>
>
>This is bad news... we need to figure this one out for 0.6
>
>Chris, I suspect your crash is not related to the asm code for
>serialize().
>
>Could you please see if drawstuff actually works for you?
>
>$ cd drawstuff/dstest
>$ ./dstest
>
>If that one crashes as well, it may be something related to OpenGL.
>Do you have permision to open windows on you x11 server?
>
>
>About the missing dMassSetCapsule :
>This is really weird.. the symbol is defined in mass.cpp
>unconditionally.
>And mass.cpp is used unconditionally in ode/src/Makefile.am
>
>About the FAILs in ode_test : I do not worry much about those.
>As I understand it, that file measures the difference between
>the results from optimized code from that of slow but more
>mathimatically correct code.
>ode_test fails for me as well.
>
>   Bram
>
>
>
>Chris M. wrote:
>>
>>I added a % to push and pop to get this
>>
>>
>>  asm volatile (
>>     "mov $0,%%rax\n"
>>     "push %%rbx\n"
>>     "cpuid\n"
>>     "pop %%rbx\n"
>>     : : : "%rax","%rcx","%rdx","cc","memory");
>>
>>and it compiled , however the test programs that I have run all crash. 
>>test_ode gives this
>>testRandomNumberGenerator()
>>        passed
>>testInfinity()
>>        passed
>>testPad()
>>        passed
>>testCrossProduct()
>>        passed
>>testSetZero()
>>        FAILED
>>testNormalize3()
>>        FAILED (code=3)
>>testPlaneSpace()
>>        FAILED
>>testMatrixMultiply()
>>        FAILED (1)
>>        FAILED (2)
>>        FAILED (3)
>>testSmallMatrixMultiply()
>>        passed (1)
>>        passed (2)
>>        passed (3)
>>        passed (4)
>>        passed (5)
>>        passed (6)
>>testCholeskyFactorization()
>>        FAILED (1)
>>        maximum difference = 0.000000e+00 - passed (2)
>>testCholeskySolve()
>>        FAILED (1)
>>        maximum difference = 0.000000e+00 - passed (2)
>>testInvertPDMatrix()
>>        FAILED (1)
>>        FAILED (2)
>>testIsPositiveDefinite()
>>        passed (1)
>>        FAILED (2)
>>testFastLDLTFactorization()
>>        maximum difference = 5.336397e-315 - passed
>>testSolveLDLT()
>>        maximum difference = 0.000000e+00 - passed
>>testLDLTAddTL()
>>        maximum difference = 5.336397e-315 - passed
>>testLDLTRemove()
>>        row/col removal FAILED for row 0
>>        row/col removal FAILED for row 1
>>        row/col removal FAILED for row 2
>>        row/col removal FAILED for row 3
>>        row/col removal FAILED for row 4
>>        row/col removal FAILED for row 5
>>        row/col removal FAILED for row 6
>>        row/col removal FAILED for row 7
>>        row/col removal FAILED for row 8
>>        row/col removal FAILED for row 9
>>        row/col removal FAILED for row 10
>>        row/col removal FAILED for row 11
>>        row/col removal FAILED for row 12
>>        row/col removal FAILED for row 13
>>        row/col removal FAILED for row 14
>>        row/col removal FAILED for row 15
>>        row/col removal FAILED for row 16
>>        row/col removal FAILED for row 17
>>        row/col removal FAILED for row 18
>>        row/col removal FAILED for row 19
>>        maximum difference = 5.336397e-315 - passed
>>testMassFunctions()
>>        (Message 2: mass must be > 0 in checkMass()) passed (1)
>>        (Message 2: mass must be > 0 in checkMass()) FAILED (2)
>>        FAILED (3)
>>
>>ODE Message 2: mass must be > 0 in checkMass()
>>        FAILED (4)
>>./test_ode: symbol lookup error: ./test_ode: undefined symbol: 
>>dMassSetCapsule
>>
>>------------------
>>
>>This is with double precision.
>>If I rebuild without double precision some things do run and test_ode 
>>gives this
>>
>>-----------------------
>>
>>testRandomNumberGenerator()
>>        passed
>>testInfinity()
>>        passed
>>testPad()
>>        passed
>>testCrossProduct()
>>        passed
>>testSetZero()
>>        passed
>>testNormalize3()
>>        passed
>>testPlaneSpace()
>>        passed
>>testMatrixMultiply()
>>        passed (1)
>>        passed (2)
>>        passed (3)
>>testSmallMatrixMultiply()
>>        passed (1)
>>        passed (2)
>>        passed (3)
>>        passed (4)
>>        passed (5)
>>        passed (6)
>>testCholeskyFactorization()
>>        passed (1)
>>        maximum difference = 9.536743e-07 - passed (2)
>>testCholeskySolve()
>>        passed (1)
>>        maximum difference = 3.325939e-05 - FAILED (2)
>>testInvertPDMatrix()
>>        passed (1)
>>        FAILED (2)
>>testIsPositiveDefinite()
>>        passed (1)
>>        passed (2)
>>testFastLDLTFactorization()
>>        maximum difference = 4.768372e-07 - passed
>>testSolveLDLT()
>>        maximum difference = 2.095699e-04 - FAILED
>>testLDLTAddTL()
>>        maximum difference = 9.536743e-07 - passed
>>testLDLTRemove()
>>        maximum difference = 4.768372e-07 - passed
>>testMassFunctions()
>>        (Message 2: inertia must be positive definite in checkMass()) 
>>passed (1)
>>         passed (2)
>>        passed (3)
>>        passed (4)
>>./test_ode: symbol lookup error: ./test_ode: undefined symbol: 
>>dMassSetCapsule
>>
>>
>>
>>>From: Bram Stolk <bram at sara.nl>
>>>To: "Chris M." <czb182 at hotmail.com>
>>>CC: ode at q12.org
>>>Subject: Re: [ODE] linux amd64 compile error - 0.6-rc1
>>>Date: Thu, 25 May 2006 10:22:41 +0200
>>>
>>>Chris M. wrote:
>>>
>>>>Hello, I just downloaded the 0.6-rc1 to give it a test of my gentoo 
>>>>linux athlon64 box.
>>>>Im getting some compilation errors.  I'm wasn't sure where to file a bug 
>>>>report, hopefully this is fine.
>>>
>>>
>>>This is the perfect place, we need to iron out matters like these for
>>>0.6, just here.
>>>
>>>>timer.cpp: In function `void dStopwatchStart(dStopwatch*)':
>>>>timer.cpp:139: error: invalid `asm': operand number missing after 
>>>>%-letter
>>>>timer.cpp:139: error: invalid `asm': operand number missing after 
>>>>%-letter
>>>
>>>
>>>The x64 code looks suspect to me:
>>>   asm volatile (
>>>         "mov $0,%%rax\n"
>>>         "push %rbx\n"
>>>         "cpuid\n"
>>>         "pop %rbx\n"
>>>         : : : "%rax","%rcx","%rdx","cc","memory");
>>>
>>>Why is rbx prefixed with one % char, and rax with two?
>>>
>>>Could you please try adding a '%' to the push and to the pop command?
>>>
>>>Thanks you for testing,
>>>
>>>    Bram
>>>
>>>
>>>>
>>>>This is with gcc 3.4.5
>>>>
>>>>
>>>>_______________________________________________
>>>>ODE mailing list
>>>>ODE at q12.org
>>>>http://q12.org/mailman/listinfo/ode
>>>
>>>
>>
>>
>




More information about the ODE mailing list