<p>Ah, I see that the roll-over case was handled at image side already, at the end of <code>handleTimerEvent</code></p>
<pre><code>...snip...
"Since we have processed all outstanding requests, reset the timing semaphore so
that only new work will wake us up again. Do this RIGHT BEFORE setting the next
wakeup call from the VM because it is only signaled once so we mustn't miss it."
TimingSemaphore initSignals.
Delay primSignal: TimingSemaphore atMilliseconds: nextTick.

"This last test is necessary for the obscure case that the msecs clock rolls over
after nowTick has been computed (unlikely but not impossible). In this case we'd
wait for MillisecondClockMask msecs (roughly six days) or until another delay gets
scheduled (which may not be any time soon). In any case, since handling the
condition is easy, let's just deal with it"
Time millisecondClockValue < nowTick ifTrue:[TimingSemaphore signal]. "retry"
</code></pre>
<p>I added the protection to prevent <code>long</code> overflow in <code>ioRelinquishProcessorForMicroseconds</code>.<br>
The protection is not strictly necessary after <a class="commit-link" data-hovercard-type="commit" data-hovercard-url="https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/b80dd63c2aa1517b186099b9669a89e4385772cb/hovercard" href="https://github.com/OpenSmalltalk/opensmalltalk-vm/commit/b80dd63c2aa1517b186099b9669a89e4385772cb"><tt>b80dd63</tt></a>.<br>
However, I see that the <code>SuspendedDelays</code> sorting by <code>resumptionTime</code> will be BAD after a roll-over. Those greater than limit/2 should come before those less than limit/2! This should be handled at the end of <code>handleTimerEvent</code>. These delays might never get signalled...</p>
<p>This does not explain why CI still fails...</p>

<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/OpenSmalltalk/opensmalltalk-vm/issues/436?email_source=notifications&email_token=AIJPEW7LBC5BGXLRF7Q6FX3QQWWCNA5CNFSM4JEWQPE2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOECLCB4Y#issuecomment-546709747">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/AIJPEW25VRTZ4GZNPEMLP5DQQWWCNANCNFSM4JEWQPEQ">unsubscribe</a>.<img src="https://github.com/notifications/beacon/AIJPEW4OWTCHNYT4GP6K2LDQQWWCNA5CNFSM4JEWQPE2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOECLCB4Y.gif" height="1" width="1" alt="" /></p>
<script type="application/ld+json">[
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"potentialAction": {
"@type": "ViewAction",
"target": "https://github.com/OpenSmalltalk/opensmalltalk-vm/issues/436?email_source=notifications\u0026email_token=AIJPEW7LBC5BGXLRF7Q6FX3QQWWCNA5CNFSM4JEWQPE2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOECLCB4Y#issuecomment-546709747",
"url": "https://github.com/OpenSmalltalk/opensmalltalk-vm/issues/436?email_source=notifications\u0026email_token=AIJPEW7LBC5BGXLRF7Q6FX3QQWWCNA5CNFSM4JEWQPE2YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOECLCB4Y#issuecomment-546709747",
"name": "View Issue"
},
"description": "View this Issue on GitHub",
"publisher": {
"@type": "Organization",
"name": "GitHub",
"url": "https://github.com"
}
}
]</script>