The problem is the parameters you pass to glReadPixels.
glReadPixels(1, 1, x, y, ...)
assuming x and y are higher than 1. I already answered this exact question in the gl ng. Are you that same person?
Besides, why not do
glReadPixels(0, 0, x, y, ....)