Comment by panda88888

6 years ago

I think you are right. 50 days is 4.32e9 ms, which is just a bit under max value of unsigned 32-bit int.

It's actually a bit over the max value[1] - I agree though that I'd strongly suspect this issue is related to overflowing a millisecond counter stored in a 32-bit int. The numbers are way too close.

Hey, maybe <51 was just a off-by-one error... or maybe the actual advisory is to be <50 and some PM decided that number was too round or violated an SLA.

1. 4,294,967,296 or 4.29e9

  • But with engineering we almost always have safety factors. I'd say it's probably a 64-bit int, but that would be way too much of a safety factor.

    • Safety factors are a thing, sure. Safety factors of 4.29e9x (which is what you get when you go from 32- to 64-bit ints) are possibly a bit excessive, and not at all worthy of an FAA airworthiness directive.

      1 reply →

    • Given this appears to be used in the communications layer of the system I expect that the width is a defined segment of some part of the wire protocol.

Good old GetTickCount() bug.