I'm using Box2D.
I think it's something to do with wall's fixture definition, but when a ball goes toward a wall at a 45 degree angle, I would expect it to bounce off at 135 degrees, but it always goes 90 degrees against wall. Why would this be?
I was setting a large restitution value (greater than 1), that caused the problem.
I know this is an old question, but I've just come across this solution and found that making sure restitution is not above 1 is not enough. friction also caused differentiation in the angle of which it bounces off. so setting friction to 0 allowed me to bounce a ball up against a 45* wall and get the expected perpendicular reaction.