On Tue, Jan 30, 2007 at 10:57:17AM -0800, John M McIntosh wrote:
On Jan 30, 2007, at 4:27 AM, David T. Lewis wrote:
That said, that actual lockup appears to be happening in AioPlugin, which invokes the aio functions in the VM. The aio functions depend on select(), and it looks like this is where you are hanging up. I certainly can't think of anything in the 3.9 image (versus 3.8) that could be triggering it, so it seems more likely to be something in the VM, either the AIO plugin or the underlying aio functions.
I noted in the 3.9 unix source code has HAVE_NANOSLEEP defined and when the VM sleeps we call nanosleep() then aioPoll twice with the value of zero. But then aioPoll() returns early since the value is zero and it never invokes select().
Perhaps some unix folks can comment if there are any interesting side effects of this behaviour, such as never calling select()
It looks OK to me, aioPoll() only bypasses the select() if there are no file descriptors being watched.
/* get out early if there is no pending i/o and no need to relinquish cpu */ if ((maxFd == 0) && (microSeconds == 0)) return 0;
I'll note issues with MC servers based on 3.9 where they hang, and a swirl of a mouse on a VNC display of their X-11 display restores functionality.
hmmm....
Dave