Thanks for the response. I did a bunch of testing and I've pinpointed the problem: it seems the call to XSync is extremely slow. On line 4568 of xboard.c if I do:
printf("About to call XSync\n");
printf("Done calling XSync\n");
Then the "About to call XSync" gets printed right before the long, painful hang, and "Done calling XSync" gets called right when it recovers. The two prints are about 10 seconds apart. So I think this is definitely the issue.
Unfortunately I'm not very familiar with low-level X programming to be able to diagnose this right away -- it's way before my time :) I'll take more of a look if nobody here knows what might be the cause off the top of their heads.
On Wed, Aug 4, 2010 at 5:53 AM, h.g. muller <address@hidden>
This will indeed be a tough cookie...
At 22:33 3-8-2010 -0400, Adrian Petrescu wrote:
Here is a strange symptom that may illuminate the issue or make it more puzzling. You decide which.
For me, startup of XBoard under Ubuntu is fast, so I cannot test it myself.
It sounds like XBoard is making a system request that your system has big trouble in satisfying.
What are you seeing durng these 10 seconds? Is the XBoard main window already up, and
is the Chess board properly displayed? Are any of the auxiliary windows already up?
The most passive mode to bring XBoard up in is -ncp (with -ics you might still hang because
of connection problems with the ICS), so perhaps you should always test on that.
Could you start XBoard with the -debug option? This should make a file xboard.debug,
and if we are lucky, we can establish from that where it hangs. I think it does print some
progress reports during the startup process, from main() in xboard.c. If not, we should
add some fprintf(stderr, "..."); there to figure out where it hangs. There are no time stamps
with debug messages from XBoard itself, though. So to see where it hangs, it might be
necessary to kill it during those 10 sec.