I believe you are using sprite->setPosition(Vec2(posX, posY)); you should never set positions to your sprites(with physics body attached), it will cause all type of problems as you are having one, One work around would be to check if your Sprite has collision with other Sprite(both Physics bodes attached) using physics listeners if they collide then stop positioning your physics body. Use this link to get listeners.
Try following link if you are using internal Physics.