Well, I found where the problem is. I wanted to us KSP to solve a system for which I created a matrix-free matrix, and I provide the MatMult method. I created the vectors the same way I showed before, but when I ran KSPSolve I found that the ghost communication did not happen automatically during the solve. So I tried to add it to the multiplication method and it did not work. Thats when I sent the e-mail... But I found out in the meantime that when I call MatMult(A,b,x,info) the communication does take place!
So I guess my real question is how should I get KSPSolve to update the ghosts while solving a system? (before or after every multiplication)