The following scene should be simple.
A sphere on a (CSG) plane.
The sphere is applied with a force in z-direction.
The sphere should but does not follow a straight line.
Unfortunately, this issue is linked to the physics engine. Between determinism, number precision, implementation, … you will have to tweak your values to make it behave the way you want.
For example, I’ve seen that if the cylinder has too many side, more triangles are generated by the CSG and Cannon computes ‘ghost’ collisions near the hole. With fewer sides and with a lower restitution value, the ball follows a more straight trajectory.
So, no magic here. Test, tweak improve. It will be the same with other engines. I generally have more trust in ammojs because it’s been used in VFX and has a broader adoption.