<div dir="auto"><div><div class="gmail_extra"><div class="gmail_quote">Am 22.02.2017 11:24 schrieb "Daniel Martin" <<a href="mailto:consume.noise@gmail.com">consume.noise@gmail.com</a>>:<br type="attribution"><blockquote class="quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="quoted-text">On 21 February 2017 at 17:48, walter harms <<a href="mailto:wharms@bfs.de">wharms@bfs.de</a>> wrote:<br>
> Am 20.02.2017 10:55, schrieb Daniel Martin:<br>
</div><div class="elided-text">>> What happens is:<br>
>> - ServertimeBlockHandler() forwards a _big_ unsigned timeout to<br>
>> AdjustWaitForDelay()<br>
>> - AdjustWaitForDelay() takes this _big_ unsigned as int and it becomes<br>
>> a negative value<br>
>> - the negative value ends up as timeout in ospoll_wait() as parameter<br>
>> to epoll_wait()<br>
>>> epoll_wait() blocks due to the negative timeout<br>
>><br>
>> XSyncValueSubtract() doesn't handle unsigned wraps. That's why we get<br>
>> a big unsigned from ServertimeBlockHandler(). Just imagine two<br>
>> XSyncValues:<br>
>>     a = {.hi=1, .lo=1} and b = {.hi=0, lo=.2}.<br>
>> The result of XSyncValueSubtract(a - b) is<br>
>>     presult = {.hi=0, .lo=4294967295},<br>
>> where I would expect<br>
>>    presult = {.hi=0, .lo=9}.<br>
>><br>
>> If .lo=4294967295 is wrong and .lo=9 is what we want, could anyone<br>
>> provide a fix, please? I'm to dumb for the (binary?) arithmetic atm.<br>
>> (And if it is wrong, did I just uncovered an ancient bug?)<br>
>><br>
><br>
> XSyncValueSubtract is doing as expected,<br>
> XSyncValue is the simulation of 64bitvalues on 32bit.<br>
> see this in hex:<br>
>  100000001<br>
> -000000002<br>
>  0FFFFFFFF = 4294967295 in .lo<br>
<br>
</div>If XSyncValueSubtract is correct as is, then I would say, that it is<br>
not what we want in ServertimeBlockHandler().<br>
At that point we handle XSyncValues like a struct timeval, though .lo<br>
not being in usec, but ms. So, every .lo < 0 or > 999 is wrong.</blockquote></div></div></div><div dir="auto"><br></div><div dir="auto">That's wrong.  Ignore this.</div></div>