It sounds like the xenstored was corrupted. The code that's responsible for figuring out which VNC server to connect to is at:
https://xvm.scripts.mit.edu/browser/trunk/packages/invirt-vnc-server/python/vnc/get_port.py
As you can see, it uses the XenAPI to request the information for the specific VM name it is given and then extracts the virtual framebuffer location from that information.
It sounds like the xenstored was corrupted. The code that's responsible for figuring out which VNC server to connect to is at:
https:/ /xvm.scripts. mit.edu/ browser/ trunk/packages/ invirt- vnc-server/ python/ vnc/get_ port.py
As you can see, it uses the XenAPI to request the information for the specific VM name it is given and then extracts the virtual framebuffer location from that information.