Need some help with panda bullet

I’m using bullet engine for my tank game. I use BulletBoxShape to simulate a tank: one BulletBoxShape for tank’s body, one BulletBoxShape for turret, one BulletBoxShape for cannon. And I use BulletConstraint for tank’s components: one BulletGenericConstraint for tank’s body and turret, one BulletGenericConstraint for tank’s turret and cannon. I also set the limit of these constraint points to avoid unexcepted movement and separateness. Then I set the mass for these components and start to run. Everything looks good if the tank doesn’t collide with something.
But if the tank’s cannon collide with wall, it will separate from the turret for a distance.(I don’t wish any part of tank get separated) I have set up the constraint. I’m really confused about this problem. And I also find that if the cannon collide with wall, the tank won’t stop or decelerate unless the tank’s boy collide with the wall(I wish tank will stop or decelerate if any part of the tank collide the wall)
Thanks for you help !

and sorry, but I would need more concrete information to help you here. Can you wrap up your tank setup in a small example?