From 8b04e8a297054a2c16978a1ee3c92460c11eaccc Mon Sep 17 00:00:00 2001 From: Robert Adams Date: Thu, 2 Aug 2012 16:30:23 -0700 Subject: BulletSim: Debugging log statements added. Reduced size of updata buffer trying to find a corrupted memory problem. Update DLL and SO. --- OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs | 4 +++- OpenSim/Region/Physics/BulletSPlugin/BSScene.cs | 29 ++++++++++++++++++++---- bin/OpenSimDefaults.ini | 2 +- bin/lib32/BulletSim.dll | Bin 532480 -> 533504 bytes bin/lib32/libBulletSim.so | Bin 2321137 -> 2340496 bytes bin/lib64/BulletSim.dll | Bin 683008 -> 684032 bytes bin/lib64/libBulletSim.so | Bin 2516576 -> 2540931 bytes 7 files changed, 28 insertions(+), 7 deletions(-) diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs index a4ab702..ebfd85b 100644 --- a/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSPrim.cs @@ -1331,13 +1331,15 @@ public sealed class BSPrim : PhysicsActor base.RequestPhysicsterseUpdate(); } + /* else { - // For debugging, we can also report the movement of children + // For debugging, we also report the movement of children DetailLog("{0},UpdateProperties,child,pos={1},orient={2},vel={3},accel={4},rotVel={5}", LocalID, entprop.Position, entprop.Rotation, entprop.Velocity, entprop.Acceleration, entprop.RotationalVelocity); } + */ } // I've collided with something diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs b/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs index 28d5cb5..011033c 100644 --- a/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs +++ b/OpenSim/Region/Physics/BulletSPlugin/BSScene.cs @@ -390,9 +390,9 @@ public class BSScene : PhysicsScene, IPhysicsParameters // Simulate one timestep public override float Simulate(float timeStep) { - int updatedEntityCount; + int updatedEntityCount = 0; IntPtr updatedEntitiesPtr; - int collidersCount; + int collidersCount = 0; IntPtr collidersPtr; LastSimulatedTimestep = timeStep; @@ -411,8 +411,21 @@ public class BSScene : PhysicsScene, IPhysicsParameters // step the physical world one interval m_simulationStep++; - int numSubSteps = BulletSimAPI.PhysicsStep(m_worldID, timeStep, m_maxSubSteps, m_fixedTimeStep, - out updatedEntityCount, out updatedEntitiesPtr, out collidersCount, out collidersPtr); + int numSubSteps = 0; + try + { + numSubSteps = BulletSimAPI.PhysicsStep(m_worldID, timeStep, m_maxSubSteps, m_fixedTimeStep, + out updatedEntityCount, out updatedEntitiesPtr, out collidersCount, out collidersPtr); + DetailLog("{0},Simulate,call, substeps={1}, updates={2}, colliders={3}", "0000000000", numSubSteps, updatedEntityCount, collidersCount); + } + catch (Exception e) + { + m_log.WarnFormat("{0},PhysicsStep Exception: substeps={1}, updates={2}, colliders={3}, e={4}", LogHeader, numSubSteps, updatedEntityCount, collidersCount, e); + DetailLog("{0},PhysicsStepException,call, substeps={1}, updates={2}, colliders={3}", "0000000000", numSubSteps, updatedEntityCount, collidersCount); + // updatedEntityCount = 0; + collidersCount = 0; + } + // Don't have to use the pointers passed back since we know it is the same pinned memory we passed in @@ -711,7 +724,7 @@ public class BSScene : PhysicsScene, IPhysicsParameters return true; } - // The calls to the PhysicsActors can't directly call into the physics engine + // Calls to the PhysicsActors can't directly call into the physics engine // because it might be busy. We delay changes to a known time. // We rely on C#'s closure to save and restore the context for the delegate. public void TaintedObject(TaintCallback callback) @@ -1275,5 +1288,11 @@ public class BSScene : PhysicsScene, IPhysicsParameters #endregion Runtime settable parameters + // Invoke the detailed logger and output something if it's enabled. + private void DetailLog(string msg, params Object[] args) + { + PhysicsLogging.Write(msg, args); + } + } } diff --git a/bin/OpenSimDefaults.ini b/bin/OpenSimDefaults.ini index f92c555..ff5bdec 100644 --- a/bin/OpenSimDefaults.ini +++ b/bin/OpenSimDefaults.ini @@ -937,7 +937,7 @@ FixedTimeStep = .01667 MaxCollisionsPerFrame = 2048 - MaxUpdatesPerFrame = 8192 + MaxUpdatesPerFrame = 2048 [RemoteAdmin] enabled = false diff --git a/bin/lib32/BulletSim.dll b/bin/lib32/BulletSim.dll index fd8f39a..03e8f26 100755 Binary files a/bin/lib32/BulletSim.dll and b/bin/lib32/BulletSim.dll differ diff --git a/bin/lib32/libBulletSim.so b/bin/lib32/libBulletSim.so index 72847e7..4e119c4 100755 Binary files a/bin/lib32/libBulletSim.so and b/bin/lib32/libBulletSim.so differ diff --git a/bin/lib64/BulletSim.dll b/bin/lib64/BulletSim.dll index 300e4be..6e8d6b4 100755 Binary files a/bin/lib64/BulletSim.dll and b/bin/lib64/BulletSim.dll differ diff --git a/bin/lib64/libBulletSim.so b/bin/lib64/libBulletSim.so index 1acc0dd..9363d1a 100755 Binary files a/bin/lib64/libBulletSim.so and b/bin/lib64/libBulletSim.so differ -- cgit v1.1