<HTML><BODY style="word-wrap: break-word; -khtml-nbsp-mode: space; -khtml-line-break: after-white-space; "><BR><DIV><DIV>On 26 Jan 2006, at 12:22, Rich Adamson wrote:</DIV><BR class="Apple-interchange-newline"><BLOCKQUOTE type="cite"><BLOCKQUOTE type="cite"><BLOCKQUOTE type="cite"><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">However, in addition to the magic, anyone moving complete new code into</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">a high visibility production network without "first" testing it is nuts.</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV> </BLOCKQUOTE><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">I agree with you, but in this case, we test 1.2 stable, but not test in</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">"time machine" mode, i mean moving the system clock forward and</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">backward. I thing this bug take many people by Surprise.</DIV> </BLOCKQUOTE><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; min-height: 14px; "><BR></DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">Obviously, it already did. Luckily out of all deployed systems, there were</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">not that many implementors that upgraded to v1.2.2 within the couple of</DIV><DIV style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">days since it was released.</DIV></BLOCKQUOTE></DIV><DIV><BR class="khtml-block-placeholder"></DIV>(Puts head above parapet and gets ready to be 'corrected'...)<DIV><BR class="khtml-block-placeholder"></DIV><DIV>These sorts of time dependent bugs are almost impossible to find in</DIV><DIV>testing - this one only occurs every 48 days, so you'd have to have a </DIV><DIV>7 week beta period to have tested it. And this is a 'simple' one</DIV><DIV>compared to leap seconds or whatever. </DIV><DIV><BR class="khtml-block-placeholder"><DIV>If I read the patch right this was a bug where a signed 32bit quantity was</DIV><DIV>treated as if it were unsigned (or the other was around).</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>You'll only catch this kind of thing with lint, and/or strict use of</DIV><DIV>macros/functions to do time comparisons.</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>For the first time in 10 years I understand why all integer types in Java</DIV><DIV>are signed, which is ironic, I've just been grumbling about all those</DIV><DIV>64 bit ints I need to represent IAX 32bit (unsigned) timestamps!</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>(P.S. I love the hint that Mark contributed to the fix over a 9600baud </DIV><DIV>GPRS connection)</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>Tim.</DIV><DIV><BR><DIV> <P style="margin: 0.0px 0.0px 0.0px 0.0px"><FONT face="Helvetica" size="3" style="font: 12.0px Helvetica"><A href="http://www.westhawk.co.uk">http://www.westhawk.co.uk</A>/</FONT></P> </DIV><BR></DIV></DIV></BODY></HTML>