Hmm... Maybe I have misunderstood something about how the cameras work?

My camera class has only the position as a vector and orientation as a quaternion. I multiply the orientation with given pitch/yaw/roll degrees, then convert the resulting quaternion to a matrix which I then feed to OpenGL to update the view. I also translate the position vector with the direction orientation information of the quaternion when I move the camera.

All this works fine if I don't try to turn the camera upside down at that point everything goes to hell.