[ODE] linux amd64 compile error - 0.6-rc1

Chris M. czb182 at hotmail.com
Sat May 27 13:14:47 MST 2006


Whoops, that was indeed the problem.  I was able to run every test without 
crashing, and test_ode had only one test fail.  Im sure yall are glad that 
it was a problem on my side ;)

>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 20:30:54 +0200
>
>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