[ODE] linux amd64 compile error - 0.6-rc1

Bram Stolk bram at sara.nl
Sat May 27 11:30:54 MST 2006


Chris M. wrote:
> I compiled ode with double precision to do these test.  With single 
> precision some of them actually run.

The only cause I can think of right now, is a forgotten make install.
Could it be that you skipped a 'make install' after switching a
configuration?

Could you do a make clean, make install and then run the tests?
Please check your LD_LIBRARY_PATH.

Also, 'ldd test_basket' could give some info.

If problems persists, I will try if I can get an account for
the SF amd64 farm, so I can attempt to reproduce this.

   Bram


> 
> 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