To me, this sounds like a bug, somewhere. In principle, I see nothing wrong with what you are trying to do, and that you get something captured suggests that your method is at least mostly right. What is the nature of your two X server setup? Are both X servers displaying concurrently, or is one of them 'backgrounded' (probably incorrect jargonolgy) while the other occupies the screen? I don't know exactly what your end goal is, but perhaps you can use an X virtual frambuffer, Xvfb as your second X server. It never displays on a screen, but does satisfy the requirements of X clients. Xvfb was developed for the purpose that it sounds like you're after.
One question that I had when I first read your post was about ownership of the X servers, and of the processes using the server(s). Not too sure how that matters exactly, but I feel certain that if the same uid owns both servers, you would stand a better chance of success. The question of X server authorization/security might come into play, I suppose. Sorry for being a bit vague; I'm kind of spitballing on that last part.
Last edited by theNbomr; 06-08-2010 at 10:44 AM.