Crash in NewtonUpdate() :(

Report any bugs here and we'll post fixes

Moderators: Sascha Willems, Thomas

Crash in NewtonUpdate() :(

Postby Marc » Wed Nov 18, 2009 7:48 pm

Hi !

Related to my issue in this thread http://newtondynamics.com/forum/viewtopic.php?f=9&t=5499&start=15, I continued developing with the modified spheres of radius x and y being 1 instead of 0.3 for my local test system.

Now I have this situation: When I crowd about 20 units around a house, my app crashes inside NewtonUpdate(). Here is a stacktrace:

Code: Select all
    newton.dll!dgCollisionMesh::dgCollisionConvexPolygon::DistanceToOrigen(const dgMatrix & matrix={...}, const dgVector & scale={...}, float radius=1.0000000, dgVector & out={...})  Line 595 + 0x1d bytes   C++
    newton.dll!dgWorld::CalculatePolySoupToElipseContactsDescrete(dgCollisionParamProxi & proxi={...})  Line 7336 + 0x2d bytes   C++
    newton.dll!dgWorld::CalculateConvexToNonConvexContacts(dgCollisionParamProxi & proxi={...})  Line 8364   C++
    newton.dll!dgWorld::ConvexContacts(dgCollidingPairCollector::dgPair * const pair=0x225f8268, dgCollisionParamProxi & proxi={...})  Line 2134 + 0xa bytes   C++
    newton.dll!dgWorld::CalculateContacts(dgCollidingPairCollector::dgPair * const pair=0x225f8268, float timestep=0.016000001, int threadIndex=0)  Line 2375   C++
    newton.dll!dgBroadPhaseCalculateContactsWorkerThread::ThreadExecute()  Line 911   C++
    newton.dll!dgBroadPhaseCollision::UpdateContacts(float timestep=0.016000001, bool collisioUpdate=false)  Line 1691   C++
    newton.dll!dgWorld::Update(float timestep=0.016000001)  Line 702   C++
>   newton.dll!Newton::UpdatePhysics(float timestep=0.016000001)  Line 115   C++
    [External Code]   
    Client.exe!CUPhysics::Iterate() Line 296   C++
    Client.exe!RegionDataResCU::Iterate(unsigned __int64 timeold = 1258587057831936, unsigned __int64 timestep = 16384, unsigned int participants = 1, bool isclient = true, bool iskeyframe = false) Line 444   C++


I can reproduce this by moving about 20 units towards a house.

Maybe I did something wrong - but I'm 100% sure what. As you noticed a few weeks back when we were debugging, I use usercollisions with OPCODE 1.3 backend. Do you think that could be the problem? I don't see a the callback in the stacktrace. But maybe the callback was called before and the returned values are the problem?

I haven't noticed crashes like that with radius x and y being 0.3.

Any idea/clue?
Millenium Project Enterprises - Hobbyist Gamedev Group http://www.mpe-online.org
Walkover is now on Steam => http://store.steampowered.com/app/348700/
User avatar
Marc
 
Posts: 281
Joined: Sun Mar 14, 2004 4:07 pm
Location: Germany

Re: Crash in NewtonUpdate() :(

Postby Julio Jerez » Wed Nov 18, 2009 8:36 pm

so it crashes consitently in function when usein spheres of equal radio?
newton.dll!dgCollisionMesh::dgCollisionConvexPolygon::DistanceToOrigen(const dgMatrix & matrix={...}, const dgVector & scale={...}, float radius=1.0000000, dgVector & out={...}) Line 595 + 0x1d bytes C++
Julio Jerez
Moderator
Moderator
 
Posts: 12249
Joined: Sun Sep 14, 2003 2:18 pm
Location: Los Angeles

Re: Crash in NewtonUpdate() :(

Postby Julio Jerez » Wed Nov 18, 2009 8:40 pm

can you runn it until is crashe an dthe disaseembly when it crashes maybe I can see what is wrong in the function.
Julio Jerez
Moderator
Moderator
 
Posts: 12249
Joined: Sun Sep 14, 2003 2:18 pm
Location: Los Angeles

Re: Crash in NewtonUpdate() :(

Postby Marc » Wed Nov 18, 2009 10:07 pm

it's not just spheres. about 20 spheres, 1 newtonheightfield and 1 usermeshcollision with opcode as backend.

I'll have do undo a few changes because of my attempt to replace the opcode-usermeshcollision with newtoncollisions leading to "not working anymore". Luckily I made ifdefs around the changes. Let's see how easy I can revert it for getting the disasm ...
Millenium Project Enterprises - Hobbyist Gamedev Group http://www.mpe-online.org
Walkover is now on Steam => http://store.steampowered.com/app/348700/
User avatar
Marc
 
Posts: 281
Joined: Sun Mar 14, 2004 4:07 pm
Location: Germany

Re: Crash in NewtonUpdate() :(

Postby Marc » Wed Nov 18, 2009 10:17 pm

actually, my ifdefs worked perfectly :)

here is the crash again:
Code: Select all
    newton.dll!dgCollisionMesh::dgCollisionConvexPolygon::DistanceToOrigen(const dgMatrix & matrix={...}, const dgVector & scale={...}, float radius=1.0000000, dgVector & out={...})  Line 595 + 0x1d bytes   C++
    newton.dll!dgWorld::CalculatePolySoupToElipseContactsDescrete(dgCollisionParamProxi & proxi={...})  Line 7336 + 0x2d bytes   C++
    newton.dll!dgWorld::CalculateConvexToNonConvexContacts(dgCollisionParamProxi & proxi={...})  Line 8364   C++
    newton.dll!dgWorld::ConvexContacts(dgCollidingPairCollector::dgPair * const pair=0x29804208, dgCollisionParamProxi & proxi={...})  Line 2134 + 0xa bytes   C++
    newton.dll!dgWorld::CalculateContacts(dgCollidingPairCollector::dgPair * const pair=0x29804208, float timestep=0.016000001, int threadIndex=0)  Line 2375   C++
    newton.dll!dgBroadPhaseCalculateContactsWorkerThread::ThreadExecute()  Line 911   C++
    newton.dll!dgBroadPhaseCollision::UpdateContacts(float timestep=0.016000001, bool collisioUpdate=true)  Line 1691   C++
    newton.dll!dgWorld::Update(float timestep=0.016000001)  Line 702   C++
    newton.dll!Newton::UpdatePhysics(float timestep=0.016000001)  Line 115   C++
    [External Code]   
>   Client.exe!CUPhysics::Iterate() Line 296   C++
    Client.exe!RegionDataResCU::Iterate(unsigned __int64 timeold = 1258596853301248, unsigned __int64 timestep = 16384, unsigned int participants = 1, bool isclient = true, bool iskeyframe = false) Line 445   C++


... and here hte disasm: the arrow points to
00649BA2 fld dword ptr [ecx]

Code: Select all
--- No source file -------------------------------------------------------------
006499B5  int         3   
006499B6  int         3   
006499B7  int         3   
006499B8  int         3   
006499B9  int         3   
006499BA  int         3   
006499BB  int         3   
006499BC  int         3   
006499BD  int         3   
006499BE  int         3   
006499BF  int         3   
--- c:\newton_200\3dlib\sdk\physics\dgcollisionmesh.cpp ------------------------
006499C0  push        ebp 
006499C1  mov         ebp,esp
006499C3  and         esp,0FFFFFFF0h
006499C6  sub         esp,54h
006499C9  fld         dword ptr [__real@60ad78ec (6AE51Ch)]
006499CF  push        ebx 
006499D0  fst         dword ptr [esp+14h]
006499D4  push        esi 
006499D5  mov         esi,ecx
006499D7  mov         ecx,dword ptr [esi+830h]
006499DD  mov         edx,dword ptr [esi+82Ch]
006499E3  mov         eax,dword ptr [esi+838h]
006499E9  push        edi 
006499EA  mov         edi,dword ptr [ecx]
006499EC  imul        edi,edx
006499EF  fld         dword ptr [eax+edi*4]
006499F2  fld         dword ptr [eax+edi*4+4]
006499F6  fld         dword ptr [eax+edi*4+8]
006499FA  lea         eax,[eax+edi*4]
006499FD  mov         edi,dword ptr [matrix]
00649A00  mov         eax,dword ptr [scale]
00649A03  lea         ebx,[esi+120h]
00649A09  fld         dword ptr [edi]
00649A0B  fmul        st,st(3)
00649A0D  fld         dword ptr [edi+20h]
00649A10  fmul        st,st(2)
00649A12  faddp       st(1),st
00649A14  fld         dword ptr [edi+10h]
00649A17  fmul        st,st(3)
00649A19  faddp       st(1),st
00649A1B  fadd        dword ptr [edi+30h]
00649A1E  fld         dword ptr [edi+24h]
00649A21  fmul        st,st(2)
00649A23  fld         dword ptr [edi+14h]
00649A26  fmul        st,st(4)
00649A28  faddp       st(1),st
00649A2A  fld         st(4)
00649A2C  fmul        dword ptr [edi+4]
00649A2F  faddp       st(1),st
00649A31  fadd        dword ptr [edi+34h]
00649A34  fxch        st(2)
00649A36  fmul        dword ptr [edi+28h]
00649A39  fxch        st(3)
00649A3B  fmul        dword ptr [edi+18h]
00649A3E  faddp       st(3),st
00649A40  fld         dword ptr [edi+8]
00649A43  fmulp       st(4),st
00649A45  fxch        st(2)
00649A47  faddp       st(3),st
00649A49  fxch        st(2)
00649A4B  fadd        dword ptr [edi+38h]
00649A4E  fld         dword ptr [eax]
00649A50  fmulp       st(2),st
00649A52  fxch        st(1)
00649A54  fstp        dword ptr [esp+20h]
00649A58  mov         edx,dword ptr [esp+20h]
00649A5C  fld         dword ptr [eax+4]
00649A5F  fmulp       st(2),st
00649A61  fxch        st(1)
00649A63  fstp        dword ptr [esp+24h]
00649A67  fmul        dword ptr [eax+8]
00649A6A  mov         dword ptr [ebx],edx
00649A6C  mov         edx,dword ptr [esp+24h]
00649A70  mov         dword ptr [ebx+4],edx
00649A73  fstp        dword ptr [esp+28h]
00649A77  mov         edx,dword ptr [esp+28h]
00649A7B  fldz             
00649A7D  mov         dword ptr [ebx+8],edx
00649A80  fst         dword ptr [esp+2Ch]
00649A84  mov         edx,dword ptr [esp+2Ch]
00649A88  mov         dword ptr [ebx+0Ch],edx
00649A8B  mov         edx,dword ptr [ecx+4]
00649A8E  imul        edx,dword ptr [esi+82Ch]
00649A95  mov         ecx,dword ptr [esi+838h]
00649A9B  lea         ecx,[ecx+edx*4]
00649A9E  fld         dword ptr [ecx]
00649AA0  fld         dword ptr [ecx+4]
00649AA3  fld         dword ptr [ecx+8]
00649AA6  fld         dword ptr [edi]
00649AA8  fmul        st,st(3)
00649AAA  fld         dword ptr [edi+20h]
00649AAD  fmul        st,st(2)
00649AAF  faddp       st(1),st
00649AB1  fld         dword ptr [edi+10h]
00649AB4  fmul        st,st(3)
00649AB6  faddp       st(1),st
00649AB8  fadd        dword ptr [edi+30h]
00649ABB  fld         dword ptr [edi+24h]
00649ABE  fmul        st,st(2)
00649AC0  fld         dword ptr [edi+14h]
00649AC3  fmul        st,st(4)
00649AC5  faddp       st(1),st
00649AC7  fld         st(4)
00649AC9  fmul        dword ptr [edi+4]
00649ACC  faddp       st(1),st
00649ACE  fadd        dword ptr [edi+34h]
00649AD1  fld         dword ptr [edi+8]
00649AD4  fmulp       st(5),st
00649AD6  fxch        st(2)
00649AD8  fmul        dword ptr [edi+28h]
00649ADB  faddp       st(4),st
00649ADD  fxch        st(2)
00649ADF  fmul        dword ptr [edi+18h]
00649AE2  faddp       st(3),st
00649AE4  fxch        st(2)
00649AE6  fadd        dword ptr [edi+38h]
00649AE9  fld         dword ptr [eax]
00649AEB  fmulp       st(2),st
00649AED  fxch        st(1)
00649AEF  fstp        dword ptr [esp+20h]
00649AF3  mov         ecx,dword ptr [esp+20h]
00649AF7  fxch        st(1)
00649AF9  fmul        dword ptr [eax+4]
00649AFC  fstp        dword ptr [esp+24h]
00649B00  mov         edx,dword ptr [esp+24h]
00649B04  fmul        dword ptr [eax+8]
00649B07  mov         dword ptr [esi+130h],ecx
00649B0D  mov         dword ptr [esi+134h],edx
00649B13  fstp        dword ptr [esp+28h]
00649B17  mov         ecx,dword ptr [esp+28h]
00649B1B  mov         dword ptr [esi+138h],ecx
00649B21  fst         dword ptr [esp+2Ch]
00649B25  mov         edx,dword ptr [esp+2Ch]
00649B29  fst         dword ptr [esp+50h]
00649B2D  mov         ecx,2
00649B32  cmp         dword ptr [esi+820h],ecx
00649B38  fst         dword ptr [esp+54h]
00649B3C  fst         dword ptr [esp+58h]
00649B40  mov         dword ptr [esi+13Ch],edx
00649B46  fst         dword ptr [esp+5Ch]
00649B4A  mov         dword ptr [esp+14h],ecx
00649B4E  fst         dword ptr [esp+20h]
00649B52  fst         dword ptr [esp+24h]
00649B56  fst         dword ptr [esp+28h]
00649B5A  fst         dword ptr [esp+2Ch]
00649B5E  jle         dgCollisionMesh::dgCollisionConvexPolygon::DistanceToOrigen+2EAh (649CAAh)
00649B64  fstp        st(1)
00649B66  lea         ecx,[esi+140h]
00649B6C  fstp        dword ptr [esp+3Ch]
00649B70  mov         dword ptr [esp+18h],ecx
00649B74  jmp         dgCollisionMesh::dgCollisionConvexPolygon::DistanceToOrigen+1C5h (649B85h)
00649B76  jmp         dgCollisionMesh::dgCollisionConvexPolygon::DistanceToOrigen+1C0h (649B80h)
00649B78  lea         esp,[esp]
00649B7F  nop             
00649B80  mov         eax,dword ptr [scale]
00649B83  fstp        st(0)
00649B85  mov         edx,dword ptr [esi+830h]
00649B8B  mov         ecx,dword ptr [esp+14h]
00649B8F  mov         edx,dword ptr [edx+ecx*4]
00649B92  imul        edx,dword ptr [esi+82Ch]
00649B99  mov         ecx,dword ptr [esi+838h]
00649B9F  lea         ecx,[ecx+edx*4]
00649BA2  fld         dword ptr [ecx]
00649BA4  fld         dword ptr [ecx+4]
00649BA7  fld         dword ptr [ecx+8]
00649BAA  fld         st(0)
00649BAC  fmul        dword ptr [edi+20h]
00649BAF  fld         st(2)
00649BB1  fmul        dword ptr [edi+10h]
00649BB4  faddp       st(1),st
00649BB6  fld         dword ptr [edi]
00649BB8  fmul        st,st(4)
00649BBA  faddp       st(1),st
00649BBC  fadd        dword ptr [edi+30h]
00649BBF  fld         dword ptr [edi+24h]
00649BC2  fmul        st,st(2)
00649BC4  fld         dword ptr [edi+14h]
00649BC7  fmul        st,st(4)
00649BC9  faddp       st(1),st
00649BCB  fld         st(4)
00649BCD  fmul        dword ptr [edi+4]
00649BD0  faddp       st(1),st
00649BD2  fadd        dword ptr [edi+34h]
00649BD5  fld         dword ptr [edi+8]
00649BD8  fmulp       st(5),st
00649BDA  fxch        st(2)
00649BDC  fmul        dword ptr [edi+28h]
00649BDF  faddp       st(4),st
00649BE1  fxch        st(2)
00649BE3  fmul        dword ptr [edi+18h]
00649BE6  faddp       st(3),st
00649BE8  fxch        st(2)
00649BEA  fadd        dword ptr [edi+38h]
00649BED  fld         dword ptr [eax]
00649BEF  fmulp       st(2),st
00649BF1  fxch        st(1)
00649BF3  fstp        dword ptr [esp+30h]
00649BF7  mov         edx,dword ptr [esp+30h]
00649BFB  fxch        st(1)
00649BFD  fmul        dword ptr [eax+4]
00649C00  fstp        dword ptr [esp+34h]
00649C04  mov         ecx,dword ptr [esp+34h]
00649C08  fmul        dword ptr [eax+8]
00649C0B  mov         eax,dword ptr [esp+18h]
00649C0F  mov         dword ptr [eax],edx
00649C11  mov         dword ptr [eax+4],ecx
00649C14  mov         ecx,dword ptr [esp+3Ch]
00649C18  fstp        dword ptr [esp+38h]
00649C1C  mov         edx,dword ptr [esp+38h]
00649C20  push        eax 
00649C21  mov         dword ptr [eax+8],edx
00649C24  mov         dword ptr [eax+0Ch],ecx
00649C27  add         eax,0FFFFFFF0h
00649C2A  push        eax 
00649C2B  push        ebx 
00649C2C  lea         edx,[esp+5Ch]
00649C30  push        edx 
00649C31  lea         eax,[esp+50h]
00649C35  push        eax 
00649C36  mov         ecx,esi
00649C38  call        dgCollisionMesh::dgCollisionConvexPolygon::ClosestDistanceToTriangle (649370h)
00649C3D  fld         dword ptr [esp+40h]
00649C41  fld         dword ptr [esp+44h]
00649C45  fld         dword ptr [esp+48h]
00649C49  fmul        st(0),st
00649C4B  fld         st(1)
00649C4D  fmulp       st(2),st
00649C4F  faddp       st(1),st
00649C51  fld         st(1)
00649C53  fmulp       st(2),st
00649C55  faddp       st(1),st
00649C57  fld         dword ptr [esp+1Ch]
00649C5B  fcom        st(1)
00649C5D  fnstsw      ax   
00649C5F  test        ah,41h
00649C62  jne         dgCollisionMesh::dgCollisionConvexPolygon::DistanceToOrigen+2CCh (649C8Ch)
00649C64  mov         ecx,dword ptr [esp+40h]
00649C68  fstp        st(0)
00649C6A  mov         edx,dword ptr [esp+44h]
00649C6E  fst         dword ptr [esp+1Ch]
00649C72  mov         eax,dword ptr [esp+48h]
00649C76  mov         dword ptr [esp+20h],ecx
00649C7A  mov         ecx,dword ptr [esp+4Ch]
00649C7E  mov         dword ptr [esp+24h],edx
00649C82  mov         dword ptr [esp+28h],eax
00649C86  mov         dword ptr [esp+2Ch],ecx
00649C8A  jmp         dgCollisionMesh::dgCollisionConvexPolygon::DistanceToOrigen+2CEh (649C8Eh)
00649C8C  fstp        st(1)
00649C8E  mov         eax,dword ptr [esp+14h]
00649C92  add         dword ptr [esp+18h],10h
00649C97  inc         eax 
00649C98  cmp         eax,dword ptr [esi+820h]
00649C9E  mov         dword ptr [esp+14h],eax
00649CA2  jl          dgCollisionMesh::dgCollisionConvexPolygon::DistanceToOrigen+1C0h (649B80h)
00649CA8  fldz             
00649CAA  fld         dword ptr [radius]
00649CAD  fmul        st(0),st
00649CAF  fcomp       st(2)
00649CB1  fnstsw      ax   
00649CB3  fstp        st(1)
00649CB5  test        ah,5
00649CB8  jp          dgCollisionMesh::dgCollisionConvexPolygon::DistanceToOrigen+307h (649CC7h)
00649CBA  fstp        st(0)
00649CBC  xor         al,al
00649CBE  pop         edi 
00649CBF  pop         esi 
00649CC0  pop         ebx 
00649CC1  mov         esp,ebp
00649CC3  pop         ebp 
00649CC4  ret         10h 
00649CC7  mov         eax,dword ptr [esi+830h]
00649CCD  mov         edi,dword ptr [eax]
00649CCF  mov         ecx,dword ptr [esi+82Ch]
00649CD5  mov         edx,dword ptr [esi+838h]
00649CDB  imul        edi,ecx
00649CDE  fld         dword ptr [edx+edi*4]
00649CE1  fstp        dword ptr [esp+40h]
00649CE5  fld         dword ptr [edx+edi*4+4]
00649CE9  fstp        dword ptr [esp+44h]
00649CED  fld         dword ptr [edx+edi*4+8]
00649CF1  fstp        dword ptr [esp+48h]
00649CF5  fst         dword ptr [esp+4Ch]
00649CF9  lea         edi,[edx+edi*4]
00649CFC  mov         edi,dword ptr [esp+40h]
00649D00  mov         dword ptr [ebx],edi
00649D02  mov         edi,dword ptr [esp+44h]
00649D06  mov         dword ptr [ebx+4],edi
00649D09  mov         edi,dword ptr [esp+48h]
00649D0D  mov         dword ptr [ebx+8],edi
00649D10  mov         edi,dword ptr [esp+4Ch]
00649D14  mov         dword ptr [ebx+0Ch],edi
00649D17  mov         edi,dword ptr [eax+4]
00649D1A  imul        edi,ecx
00649D1D  fld         dword ptr [edx+edi*4]
00649D20  fstp        dword ptr [esp+40h]
00649D24  fld         dword ptr [edx+edi*4+4]
00649D28  fstp        dword ptr [esp+44h]
00649D2C  fld         dword ptr [edx+edi*4+8]
00649D30  fstp        dword ptr [esp+48h]
00649D34  fst         dword ptr [esp+4Ch]
00649D38  lea         edi,[edx+edi*4]
00649D3B  mov         edi,dword ptr [esp+40h]
00649D3F  mov         dword ptr [esi+130h],edi
00649D45  mov         edi,dword ptr [esp+44h]
00649D49  mov         dword ptr [esi+134h],edi
00649D4F  mov         edi,dword ptr [esp+48h]
00649D53  mov         dword ptr [esi+138h],edi
00649D59  mov         edi,dword ptr [esp+4Ch]
00649D5D  mov         dword ptr [esi+13Ch],edi
00649D63  mov         eax,dword ptr [eax+8]
00649D66  imul        eax,ecx
00649D69  fld         dword ptr [edx+eax*4]
00649D6C  fstp        dword ptr [esp+40h]
00649D70  fld         dword ptr [edx+eax*4+4]
00649D74  fstp        dword ptr [esp+44h]
00649D78  fld         dword ptr [edx+eax*4+8]
00649D7C  fstp        dword ptr [esp+48h]
00649D80  mov         ecx,dword ptr [esp+40h]
00649D84  fstp        dword ptr [esp+4Ch]
00649D88  lea         eax,[edx+eax*4]
00649D8B  mov         edx,dword ptr [esp+44h]
00649D8F  mov         eax,dword ptr [esp+48h]
00649D93  mov         dword ptr [esi+140h],ecx
00649D99  mov         ecx,dword ptr [esp+4Ch]
00649D9D  mov         dword ptr [esi+144h],edx
00649DA3  mov         dword ptr [esi+148h],eax
00649DA9  mov         dword ptr [esi+14Ch],ecx
00649DAF  fld         dword ptr [esi+130h]
00649DB5  fsub        dword ptr [ebx]
00649DB7  fld         dword ptr [esi+134h]
00649DBD  fsub        dword ptr [ebx+4]
00649DC0  fld         dword ptr [esi+138h]
00649DC6  fsub        dword ptr [ebx+8]
00649DC9  fld         dword ptr [esi+13Ch]
00649DCF  fstp        dword ptr [esp+5Ch]
00649DD3  fld         dword ptr [esi+140h]
00649DD9  fsub        dword ptr [esi+130h]
00649DDF  fld         dword ptr [esi+144h]
00649DE5  fsub        dword ptr [esi+134h]
00649DEB  fld         dword ptr [esi+148h]
00649DF1  fsub        dword ptr [esi+138h]
00649DF7  fld         st(0)
00649DF9  fmul        st,st(5)
00649DFB  fld         st(2)
00649DFD  fmul        st,st(5)
00649DFF  fsubp       st(1),st
00649E01  fst         dword ptr [esp+30h]
00649E05  fxch        st(4)
00649E07  fmul        st,st(3)
00649E09  fxch        st(1)
00649E0B  fmul        st,st(6)
00649E0D  fsubp       st(1),st
00649E0F  push        ecx 
00649E10  fst         dword ptr [esp+38h]
00649E14  fxch        st(1)
00649E16  fmulp       st(5),st
00649E18  fxch        st(3)
00649E1A  fmulp       st(1),st
00649E1C  fsubp       st(3),st
00649E1E  fxch        st(2)
00649E20  fst         dword ptr [esp+3Ch]
00649E24  fmul        st(0),st
00649E26  fld         st(1)
00649E28  fmulp       st(2),st
00649E2A  faddp       st(1),st
00649E2C  fld         st(1)
00649E2E  fmulp       st(2),st
00649E30  faddp       st(1),st
00649E32  fadd        dword ptr [__real@179abe15 (6AE68Ch)]
00649E38  fstp        dword ptr [esp]
00649E3B  call        dgSqrt (68CAE0h)
00649E40  fld1             
00649E42  add         esp,4
00649E45  fdivrp      st(1),st
00649E47  pop         edi 
00649E48  fld         dword ptr [esp+2Ch]
00649E4C  fmul        st,st(1)
00649E4E  fstp        dword ptr [esp+3Ch]
00649E52  mov         edx,dword ptr [esp+3Ch]
00649E56  fld         dword ptr [esp+30h]
00649E5A  mov         dword ptr [esi+110h],edx
00649E60  fmul        st,st(1)
00649E62  fstp        dword ptr [esp+40h]
00649E66  mov         eax,dword ptr [esp+40h]
00649E6A  mov         dword ptr [esi+114h],eax
00649E70  fmul        dword ptr [esp+34h]
00649E74  mov         eax,dword ptr [ebp+14h]
00649E77  fstp        dword ptr [esp+44h]
00649E7B  mov         ecx,dword ptr [esp+44h]
00649E7F  fld         dword ptr [esp+58h]
00649E83  mov         dword ptr [esi+118h],ecx
00649E89  mov         ecx,dword ptr [esp+1Ch]
00649E8D  fstp        dword ptr [esp+48h]
00649E91  mov         edx,dword ptr [esp+48h]
00649E95  mov         dword ptr [esi+11Ch],edx
00649E9B  mov         edx,dword ptr [esp+20h]
00649E9F  mov         dword ptr [eax],ecx
00649EA1  mov         ecx,dword ptr [esp+24h]
00649EA5  mov         dword ptr [eax+4],edx
00649EA8  mov         edx,dword ptr [esp+28h]
00649EAC  mov         dword ptr [eax+8],ecx
00649EAF  pop         esi 
00649EB0  mov         dword ptr [eax+0Ch],edx
00649EB3  mov         al,1
00649EB5  pop         ebx 
00649EB6  mov         esp,ebp
00649EB8  pop         ebp 
00649EB9  ret         10h 
--- No source file -------------------------------------------------------------
00649EBC  int         3   
00649EBD  int         3   
00649EBE  int         3   
00649EBF  int         3   
--- c:\newton_200\3dlib\sdk\physics\dgcollisionmesh.cpp ------------------------
Millenium Project Enterprises - Hobbyist Gamedev Group http://www.mpe-online.org
Walkover is now on Steam => http://store.steampowered.com/app/348700/
User avatar
Marc
 
Posts: 281
Joined: Sun Mar 14, 2004 4:07 pm
Location: Germany

Re: Crash in NewtonUpdate() :(

Postby Marc » Thu Nov 19, 2009 6:10 pm

Just a note: I retried this after I made the heightfield determinant positive and it still crashes in this situation at the same position. :(
Millenium Project Enterprises - Hobbyist Gamedev Group http://www.mpe-online.org
Walkover is now on Steam => http://store.steampowered.com/app/348700/
User avatar
Marc
 
Posts: 281
Joined: Sun Mar 14, 2004 4:07 pm
Location: Germany

Re: Crash in NewtonUpdate() :(

Postby Julio Jerez » Thu Nov 19, 2009 7:15 pm

we deal with that later, the bug fix is so that I do not get so many asserts.
plus some rotations are comming out wrong because of that.
Julio Jerez
Moderator
Moderator
 
Posts: 12249
Joined: Sun Sep 14, 2003 2:18 pm
Location: Los Angeles

Re: Crash in NewtonUpdate() :(

Postby Marc » Thu Nov 19, 2009 7:30 pm

I just got the replacement of opcode user collisions with newtoncollisions completed. And now, this crash doesn't happen anymore. So it must have been related to the results opcode returned.

I tried moving >20 to houses multiple times and no crash anymore while it happened every time before.

As a sidenote: besides that, the bouncing increased with this change when a building is involved in the collision. Not the amount of bounces, but the energy/width of every bounce. Every time I see a bounce now, the units literally get fired into orbit :D
Millenium Project Enterprises - Hobbyist Gamedev Group http://www.mpe-online.org
Walkover is now on Steam => http://store.steampowered.com/app/348700/
User avatar
Marc
 
Posts: 281
Joined: Sun Mar 14, 2004 4:07 pm
Location: Germany

Re: Crash in NewtonUpdate() :(

Postby Julio Jerez » Thu Nov 19, 2009 7:42 pm

Marc wrote:I just got the replacement of opcode user collisions with newtoncollisions completed. And now, this crash doesn't happen anymore. So it must have been related to the results opcode returned. I tried moving >20 to houses multiple times and no crash anymore while it happened every time before.

Maybe it could be that the some how the locla buffet fo eth polygon was over flowed. but let us not worried abpou that, never look into eth mouse of a gifted horse.


Marc wrote:As a sidenote: besides that, the bouncing increased with this change when a building is involved in the collision. Not the amount of bounces, but the energy/width of every bounce. Every time I see a bounce now, the units literally get fired into orbit :D

Is asume the this is bad, this happen when you use spheres intead of elipsis?
Julio Jerez
Moderator
Moderator
 
Posts: 12249
Joined: Sun Sep 14, 2003 2:18 pm
Location: Los Angeles

Re: Crash in NewtonUpdate() :(

Postby Marc » Thu Nov 19, 2009 7:48 pm

Ah no, it's still related to distorted ellipsoids as far as I can tell. If I try this with perfect spheres, I can't see these bounces/fireing into orbit.
Millenium Project Enterprises - Hobbyist Gamedev Group http://www.mpe-online.org
Walkover is now on Steam => http://store.steampowered.com/app/348700/
User avatar
Marc
 
Posts: 281
Joined: Sun Mar 14, 2004 4:07 pm
Location: Germany

Re: Crash in NewtonUpdate() :(

Postby Julio Jerez » Thu Nov 19, 2009 8:04 pm

Ok so the sphere are ok but the bug happend with elipses,

Marc wrote:Ah no, it's still related to distorted ellipsoids as far as I can tell. If I try this with perfect spheres, I can't see these bounces/fireing into orbit.

that is a signg of some numerical bug that should trigger an assert.

can you run one more test, can you try elipsi with half the aspec ratio,
say a elipsi is 2 high an 1 in radio, make it 1.5 and 1,
see if the jump is less energetic, the purpose is to see if the bug is related to a bad rotation because of the curvature of the eleisi surface at the contact
Julio Jerez
Moderator
Moderator
 
Posts: 12249
Joined: Sun Sep 14, 2003 2:18 pm
Location: Los Angeles

Re: Crash in NewtonUpdate() :(

Postby Marc » Thu Nov 19, 2009 8:31 pm

ok I can try such things. What I already tried was

Code: Select all
xy     z
0.3    0.9       original values, bounces like you know it
1      0.9       can't see bounces
0.9    0.9       can't see bounces

after replacing opcode with newtoncollisions for houses
1      0.9       can't see bounces
0.9    0.9       can't see bounces
4      0.9       against house: huge bounces, fire into orbit
4      0.9       against terrain edges: normal bounces
0.3    0.9       against house: no bounces
0.3    0.9       against terrain edges: normal bounces


so it seems to make a differnces as well how the ellipsoid is distorted, 0.3/0.9 is distorted oposite of 4/0.9.

Also note that these hugh bounces probably also happened with 0.3,0.9 with opcode somehow. That's what I got complains about, units flying over the whole map and die etc. But I haven't seen it myself like now before.
Millenium Project Enterprises - Hobbyist Gamedev Group http://www.mpe-online.org
Walkover is now on Steam => http://store.steampowered.com/app/348700/
User avatar
Marc
 
Posts: 281
Joined: Sun Mar 14, 2004 4:07 pm
Location: Germany

Re: Crash in NewtonUpdate() :(

Postby Julio Jerez » Thu Nov 19, 2009 8:35 pm

Ok, well hopefull when I get you fixes and I run another debug section tomorrow we can find what it is
Julio Jerez
Moderator
Moderator
 
Posts: 12249
Joined: Sun Sep 14, 2003 2:18 pm
Location: Los Angeles

Re: Crash in NewtonUpdate() :(

Postby Marc » Thu Nov 19, 2009 8:44 pm

Ok I tried a few aspect ratios and it looks like the jump distances is related to the aspect ratio.

radiusxy 4 makes them fire in the orbit
3 makes them jump about 50
2 about 15

With 3, I've seen something new: On rather flat terrain, 3 units pushed against each other approximately symetrically from 3 directions and then jumped appart backwards at the same time about the same length. Before, I've only seen bounces between dynamic vs. static bodies but this looked like dynamic vs. dynamic can bounce as well. I've only seen this once though.
Millenium Project Enterprises - Hobbyist Gamedev Group http://www.mpe-online.org
Walkover is now on Steam => http://store.steampowered.com/app/348700/
User avatar
Marc
 
Posts: 281
Joined: Sun Mar 14, 2004 4:07 pm
Location: Germany

Re: Crash in NewtonUpdate() :(

Postby Marc » Thu Nov 19, 2009 8:45 pm

Julio Jerez wrote:Ok, well hopefull when I get you fixes and I run another debug section tomorrow we can find what it is

Just wondering: you noticed that I posted the determinat positive fix on the other thread?
Millenium Project Enterprises - Hobbyist Gamedev Group http://www.mpe-online.org
Walkover is now on Steam => http://store.steampowered.com/app/348700/
User avatar
Marc
 
Posts: 281
Joined: Sun Mar 14, 2004 4:07 pm
Location: Germany

Next

Return to Bugs and Fixes

Who is online

Users browsing this forum: No registered users and 5 guests

cron