• fubarx@lemmy.ml
    link
    fedilink
    arrow-up
    86
    ·
    10 months ago

    Worked on a project where devices just magically froze, but only during the month of February!

    Turned out the people who had written the firmware had decided to do their own time math to save space and had put in an exception in the code for leap year values. Except instead of February 29th, it kicked in for the whole month. And the math was wrong so you ended up with negative values.

    The product was due for launch in March of that year and was headed to manufacturing. It was by sheer luck that someone ran a test on February 1st and caught the problem.

    Don’t mess with time in code, kids.

      • fubarx@lemmy.ml
        link
        fedilink
        arrow-up
        8
        ·
        10 months ago

        Consumer health.

        Good product, too. Won a bunch of awards. Unfortunately, the company has since gone out of business.

      • fubarx@lemmy.ml
        link
        fedilink
        arrow-up
        1
        ·
        10 months ago

        Embedded portable device with a teeny ARM processor. Sadly, no room for linux anything or even an RTC. Every time it connected to a phone, the phone would set its clock so the timestamps were somewhat close to being accurate.

        However, if you swapped out the AAA battery and DIDN’T connect it to the phone at least once, all your subsequent readings would go back to zero epoch and would be forgotten 🤷🏻‍♂️

        Good times.

      • Fishbone@lemmy.world
        link
        fedilink
        arrow-up
        0
        ·
        edit-2
        10 months ago

        too bad unix time only has 14 years of life left in it.

        Edit: this only applies to 32 bit Unix time. The 64 bit lifespan is a little longer, at 584 billion years. Whoops lol.