[Vm-dev] nanoseconds problem in cocoa cog

Esteban Lorenzano estebanlm at gmail.com
Mon Apr 11 21:00:13 UTC 2011


Hi,
I'm experimenting some "random hangs" with my latest builds of cocoa cog (any jit version, I don't know jet if stack too)
The application was hanging (but not crashing) each X random time and with no information, even running with gdb. After a while testing, I found that the problem was gere: 

/* sleep for microSeconds or until i/o becomes possible, avoiding
   sleeping in select() if timeout too small */

int aioSleepForUsecs(int microSeconds)
{
#if defined(HAVE_NANOSLEEP)
  if (microSeconds < (1000000/60))	/* < 1 timeslice? */
    {
      if (!aioPoll(0))
	{
	  struct timespec rqtp= { 0, microSeconds * 1000 };
	  struct timespec rmtp;
	  nanosleep(&rqtp, &rmtp);
	  microSeconds= 0;			/* poll but don't block */
	}
    }
#endif
  return aioPoll(microSeconds);
}

and more precisely when calling nanosleep
for now, I disabled HAVE_NANOSLEEP definition, and I'm testing (right now, no hangs), but I don't know how this should work. 

Someone knows?

Cheers,
Esteban
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20110411/636902de/attachment.htm


More information about the Vm-dev mailing list