I'm finding this issue when running the user_commands integration test on the main branches. I haven't been able to find the exact root issue, but it appears to be a double ownership of a dartsim collision shape. This issue probably exists in other integration tests, but this one is the one I noticed it in.
The implicit destructor makes it hard to pin point the maps that are double freeing, but I believe it's the entityCollisionMap and one of 'entityLinkMeshMapandentityLinkCollisionMap`. The calls to entityCast casts the results into two separate cache maps, I think without properly incrementing shared_ptr count somewhere.
I'm finding this issue when running the
user_commands
integration test on the main branches. I haven't been able to find the exact root issue, but it appears to be a double ownership of a dartsim collision shape. This issue probably exists in other integration tests, but this one is the one I noticed it in.The implicit destructor makes it hard to pin point the maps that are double freeing, but I believe it's the
entityCollisionMap
and one of 'entityLinkMeshMapand
entityLinkCollisionMap`. The calls to entityCast casts the results into two separate cache maps, I think without properly incrementing shared_ptr count somewhere.https://github.com/ignitionrobotics/ign-gazebo/blob/2bc062dd5493b3f6550e97c098c2d09ecc47b04f/src/systems/physics/Physics.cc#L922 https://github.com/ignitionrobotics/ign-gazebo/blob/2bc062dd5493b3f6550e97c098c2d09ecc47b04f/src/systems/physics/Physics.cc#L945 https://github.com/ignitionrobotics/ign-gazebo/blob/main/src/systems/physics/Physics.cc#L966
Valgrind output: