gazebosim / gazebo-classic

Gazebo classic. For the latest version, see https://github.com/gazebosim/gz-sim
http://classic.gazebosim.org/
Other
1.17k stars 477 forks source link

Simbody exception when manipulating object twice while paused #2309

Open osrf-migration opened 7 years ago

osrf-migration commented 7 years ago

Original report (archived issue) by Peter Horak (Bitbucket: pchorak).


Gazebo crashes while manipulating (translating or rotating) objects while the simulation is paused when using Simbody as the physics engine. Manipulating objects while the simulation is playing appears to be ok though.

The exception message:

terminate called after throwing an instance of 'SimTK::Exception::CacheEntryOutOfDate'
  what():  SimTK Exception thrown at StateImpl.h:1678:
  State Cache entry was out of date at Stage Position. This entry depends on version 39497 of Stage Position but was last updated at version 39496.

To reproduce the exception, try the following:

  1. Launch Gazebo: gazebo -u -e simbody

  2. Add a unit box to the simulation

  3. Click the button to enter translation mode

  4. Click the box and translate it up (+z) and then right (+y)

I am using libsimbody3.5v5 (3.5.3+dfsg-1ubuntu1)

osrf-migration commented 7 years ago

Original comment by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).


Good catch. I have moved objects once before while paused, but I hadn't noticed the problem when manipulating them twice.

osrf-migration commented 7 years ago

Original comment by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).


The PhysicsMsgs MoveTool test tests the interface used for manipulating objects from the GUI. Do you think you could add a testcase that reproduces this test failure?

osrf-migration commented 7 years ago

Original comment by Peter Horak (Bitbucket: pchorak).


Ok, I'll look into it

osrf-migration commented 7 years ago

Original comment by Peter Horak (Bitbucket: pchorak).


Failing test case: pull request #2737

osrf-migration commented 7 years ago

Original comment by Peter Horak (Bitbucket: pchorak).


The problem appears to be triggered by Gazebo's user command manager, which enables undo and redo. The exception occurs when it queries the state of Simbody's integrator. A backtrace:

#0  0x00007ffff65b7428 in __GI_raise (sig=sig@entry=6)
    at ../sysdeps/unix/sysv/linux/raise.c:54
#1  0x00007ffff65b902a in __GI_abort () at abort.c:89
#2  0x00007ffff6efa84d in __gnu_cxx::__verbose_terminate_handler() ()
   from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#3  0x00007ffff6ef86b6 in ?? () from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#4  0x00007ffff6ef8701 in std::terminate() ()
   from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#5  0x00007ffff6ef8919 in __cxa_throw ()
   from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#6  0x00007fffed26edc4 in SimTK::StateImpl::getCacheEntry(SimTK::SubsystemIndex, SimTK::CacheEntryIndex) const ()
   from /usr/lib/x86_64-linux-gnu/libSimTKsimbody.so.3.5
#7  0x00007fffed4d5474 in SimTK::MobilizedBody::getBodyVelocity(SimTK::State const&) const () from /usr/lib/x86_64-linux-gnu/libSimTKsimbody.so.3.5
#8  0x00007ffff5a29295 in SimTK::MobilizedBody::getBodyAngularVelocity (
    this=0x17cce38, state=...)
    at /usr/include/simbody/simbody/internal/MobilizedBody.h:354
#9  0x00007ffff5a264bd in gazebo::physics::SimbodyLink::GetWorldAngularVel (
    this=0x17cc910)
    at /home/osrf/gazebo7/src/gazebo/gazebo/physics/simbody/SimbodyLink.cc:444
#10 0x00007ffff5b13ba8 in gazebo::physics::LinkState::LinkState (
    this=0x7fffcd06a190, _link=..., _realTime=..., _simTime=..., 
    _iterations=80754)
    at /home/osrf/gazebo7/src/gazebo/gazebo/physics/LinkState.cc:44
#11 0x00007ffff5b3bf0e in gazebo::physics::ModelState::ModelState (
    this=0x7fffcd06a760, _model=..., _realTime=..., _simTime=..., 
    _iterations=80754)
    at /home/osrf/gazebo7/src/gazebo/gazebo/physics/ModelState.cc:45
#12 0x00007ffff5bc7616 in gazebo::physics::WorldState::WorldState (
    this=0x7fffcd06aab0, _world=...)
    at /home/osrf/gazebo7/src/gazebo/gazebo/physics/WorldState.cc:61
#13 0x00007ffff5b80162 in gazebo::physics::UserCmd::UserCmd (
    this=0x7fff80003940, _id=1, _world=..., 
    _description="Translate [unit_box]", 
    _type=@0x7fffcd06abfc: gazebo::msgs::UserCmd_Type_MOVING)
    at /home/osrf/gazebo7/src/gazebo/gazebo/physics/UserCmdManager.cc:51

So, tests that translate the object through the "~/model/modify" topic directly do not detect the exception.

osrf-migration commented 7 years ago

Original comment by Steve Peters (Bitbucket: Steven Peters, GitHub: scpeters).