[Vm-dev] Re: Socket clock rollover issues

Andreas Raab andreas.raab at gmx.de
Wed May 6 00:52:04 UTC 2009

Folks -

Just as a follow-up to this note I now have proof that we're loosing 
semaphore signals occasionally. What I was able to detect was that when 
running forums over a period of 20 hours we lost 2 out of 421355 
signals. We'll have the follow-on discussion on vm-dev since I don't 
think most people here are interested in discussing the possibilities of 
how this could happen and what to do about it. Please send any 
follow-ups to vm-dev (and vm-dev only).

   - Andreas

Andreas Raab wrote:
> John M McIntosh wrote:
>> Er, so given we don't have a thread safe signalSemaphoreWithIndex code 
>> base (on purpose) I wonder how many signals per second are you doing 
>> and are you perhaps
>> overflowing the semaphoresUseBufferA/B table? Assuming you are saying 
>> you do the signalSemaphoreWithIndex() and you never see that over in 
>> the image?
> I cannot prove any of this because it's so unreliable but I don't think 
> that's the problem. An overflow like you are describing is only possible 
> if you overflow before the VM (not the image!) gets to the next 
> interrupt check. If that were the case (for example because we're 
> spending too much time in some primitive like BitBlt) I believe we'd be 
> seeing this problem more reliably than we do.
> Also, the Windows VM actually replaces signalSemaphoreWithIndex with a 
> version that *is* thread-safe in the proxy interface since this used to 
> be an issue in the past. It is still possible to overflow the semaphores 
> but not that you're competing between two threads when signaling (i.e., 
> overwriting entries because threads are executing on different cores).
> Perhaps most importantly, the last place where I've seen this happen was 
> in a callback which means the signaling code was running from the main 
> thread. There is of course a possibility something completely else goes 
> wrong (random corruption of the semaphore index for example) but I 
> haven't had the time to investigate this - I was more interested in 
> finding a suitable workaround for the release ;-)
> Cheers,
>   - Andreas

More information about the Vm-dev mailing list