It's the 29th February. Time for a poll: Whose software just broke?



  • Ours did.

    Bad date processing fails badly.



  • And that's why you do not store time in the way you intent to display it to the end user. Timestamps for storage all the way.



  • Truth. Our problem stems from a calculation which tries to get the date a year from now. The developer thought it would be safe to just get the current day, month and year add construct a new date after adding 1 to the year.

    Fail :(



  • Our phone system is completely dead- internal and external. Not ideal. We didn't even write that! 



  •  On a similar note...

    Epoch Fail



  • Feb 29 broke our software early; in the first week of January. It's supposed to do some calculations with the longest running contracts for a customer. This particular customer had a couple of short contracts and two full year contracts; 2007 and 2008. Yet our software only picked 2008 and seemed to ignore the 2007 contract. It turned out, of course, that the length of the contract was calculated in days, which made the 2008 contract slightly longer that the 2007 one.



  •  Minor problem with one test system here. A table is supposed to contain one entry per day, but on the test system, my coworker just copied last year's data. Of course today's entry is missing. Of course exactly today we had a meeting with a customer and showed him the application.



  • I'm running PointUI (www.pointui.com) on an iPaq. Today, it decided that it was 12:00AM 1/1/1601 until I quit the app, then it completely refused to run until I set the date back to yesterday.



  • Ours is fine here, but a few of my colleagues had problems with their contactless payment cards for the trams on the way to work - they let you 'tag on' but gave an invalid date error on tagging off. Meaning you got charged as if you went from one terminus of the line to another.

     

    www.luas.ie being the offenders ehre. 




  • Ah, leap day... when CmpDates() returns 0 for CmpDates(2292008, 3012008).

    Well, actually, CmpDates() would return 0 in that case anyway...

    (And yes, CmpDates() and our date representation are WTFs.)



  • @MetalPig said:

    Feb 29 broke our software early; in the first week of January.

    Same here. A routine for calculating the first (part-month) payment on a new mortgage was failing for January - but not February - of a leap year. The method involves subtracting months and then subtracting days, (including an extra day to ignore Feb 29). Trouble is, Feb 29 might already have been skipped by the subtract-months part, making the result one day short of what it should be.

    The code's been like that for well over 4 years. Seems no-one spotted the problem in January 2004.

    The real WTF is the number of different calculation options for this routine - or maybe it's when one of our users queries the calculation because they've been given some simple documentation from 9 years ago that no longer matches the way it works.

     



  •  Ours did, although I have a feeling it was human error last night rather than computer error this morning. ("28th Feb? Oooh monthend! Best run all those processes!") 



  • Not a tech WTF but here goes.

    I signed the lease for my apartment February 1, 2007.  It was a 13 month lease, ending on Feb 28, 2008.

    I signed a new lease in January.  It'a 13 month lease going from March 1, 2008 to March 31, 2009.  

    Today, they have no contractual obligation to let me stay there.  I also have no contractual obligation to pay to live there today. 

    Since they're not kicking me out, I get a day for free*! 

    free = not free 



  •  Is that all?

     Keep 'em coming!



  •  I don't have anything.

    Everything works. 



  • Mine didn't break, but somebody else in the company did.  They were using a SimpleDateFormatter to parse a date in "MM/DD" format without considering the year.....

    The email bounced around through several layers of management before wwasting an hour of my time checking our code.  I did, however find a similar bug in the CSWDateTime class which....basically does the same stuff java.util.Date does, only in a halfassed way....

     


        public static long calcWaitMillis(String endDateTime) {
            Date endDate = getDate(endDateTime);
            return endDate.getTime() - new Date().getTime();
        }

        public static Date getDate(String dateTime) {
            SimpleDateFormat dateFormatter = null;
            if (dateTime.length() > 8) {
                    // assume a date-time has been passed in
                dateFormatter = new SimpleDateFormat("yyyyMMdd HH:mm:ss");
            }
            else {
                // just a time has been passed in
                dateFormatter = new SimpleDateFormat("HH:mm:ss");
            }

            ParsePosition pp = new ParsePosition(0);
            Date date = dateFormatter.parse(dateTime, pp);
                // date should correspond to 1st Jan 1970 hh:mm:ss
            if (date == null) {
                date = new Date(0); // 1st Jan 1970 00:00:00
                Trace.log(1, "Invalid date <" + dateTime + ">, setting to " +
                          date.getTime());
            }
            return date;
        }



    so getWaitMillis can be called with either "yyyyMMdd HH:mm:ss" or "HH:mm:ss".  So in the latter case it will always tell us the amount of milliseconds between now and HH:mm:ss on January 1st 1970!

     Good thing nobody actually uses it....



  •  ding

     As an added bonus, since it's a Friday, and we don't normally run production operations on a Friday unless we're behind schedule, nobody would have noticed for another four years.



  • @belgariontheking said:

    I signed the lease for my apartment February 1, 2007.  It was a 13 month lease, ending on Feb 28, 2008.

    I signed a new lease in January.  It'a 13 month lease going from March 1, 2008 to March 31, 2009.

    My lease on my old apartment started December 15th, 2006, and ended on December 15th 2005.  I saw the error but signed it anyhow, just incase.  As luck would have it, I had to move out of town mid-2006.  Good thing I wasn't contractually obligated to keep paying rent or pay the "early termination" fee.



  • @belgariontheking said:

    Not a tech WTF but here goes.

    I signed the lease for my apartment February 1, 2007.  It was a 13 month lease, ending on Feb 28, 2008.

    I signed a new lease in January.  It'a 13 month lease going from March 1, 2008 to March 31, 2009.  

    Today, they have no contractual obligation to let me stay there.  I also have no contractual obligation to pay to live there today. 

    Since they're not kicking me out, I get a day for free*! 

    free = not free 

     

     

    Kinda ironic how the guy who keeps saying I'm 12 years old still rents while I have a mortgage. snicker 



  • Maybe that's just the apartment he uses to keep his wife from finding out about his mistress.

    P.S. If you have an adjustable rate mortgage, you're really not making a good case for yourself.



  • @Lysis said:

    Kinda ironic how the guy who keeps saying I'm 12 years old still rents while I have a mortgage. snicker 
     

    Yeah, but his rent is on an actual apartment, while your "mortgage" is what you pay the other bums under the bridge to stay away from your box.

    Back to /., script kiddie, and let the grownups talk. 



  • @vt_mruhlin said:

    Maybe that's just the apartment he uses to keep his wife from finding out about his mistress.

    P.S. If you have an adjustable rate mortgage, you're really not making a good case for yourself.

     

     

    Uhhh no. Just no. 



  • @Squiggle said:

    Ours did.

    Bad date processing fails badly.

     

    You knew about the three year life cycle in 2004 when you guys wrote it. You need to work on your AutoObsolete functionality. 



  • @medialint said:

    @Squiggle said:

    Ours did.

    Bad date processing fails badly.

     

    You knew about the three year life cycle in 2004 when you guys wrote it. You need to work on your AutoObsolete functionality. 

     

    We were since bought out by a company that expected our product to actually work.

    On a similar note, today has been SO MUCH FAIL:

    • The live software broke due to a leap year bug.
    • The coffee machine broke
    • The Internet was down for half the day (a city-wide outage for one of the main ISPs)
    • I got rained on at lunchtime and now I have a very soggy left foot
    • The project we've been working on for the past 9 months just got cancelled (technically "put on hold", but we all know how that pans out...).

    Wonderful.

    I need a beer.



  • @Squiggle said:

    The Internet was down for half the day
     

    Oh crap! When was someone going to tell me the tubez were broken???

    Wait... What?



  • I know somebody whose software broke today.  Some variables have not been evaluated to protect the children.

     

    @Kederaji's Email said:

    $city, $state. (February 29, 2008) – A precautionary boil water
    notice is in effect for all water users in the city of $city.
    The boil water advisory was issued due to loss of water pressure caused
    by an early morning power failure at the $street water plant.

    Although
    the loss of power was of short duration, water pressure dropped below
    the 20 psi threshold which triggers the boil water notice. The water
    plant has returned to normal operations.

    A boil water notice is
    a request for residents to bring water to a rolling boil for one to
    three minutes before using it for drinking or cooking. The boil request
    is a precautionary measure that is expected to be removed after
    satisfactory tests, according to Utility Director $bureaucrat. First
    test results will be available on Saturday by 9 a.m.

    The city of $city also supplies water to $nearby_city and the area north
    of $other_street in $other_nearby_city. All residents in these areas
    are advised to adhere to the boil water advisory.

    For more information, please call the city’s utility department at $telephone_number.


    Info courtesy of the city of $city.

    Campus Safety

     

     



  • Nothing major has failed around here, remarkably. Though we did have one workstation suddenly think it was March 29, which wrecked kerberos quite handily (something of a WTF in itself).



  • Turns out the Apache Commons Net package has a bug that breaks loading of files from an FTP server if the date is Feb 29. I got paged at 1am as almost everything my team owns ground to a halt since no new files could be retrieved for processing.



  • On a semi-related note, I always like to check out what happens to the interactive-on-screen digital cable tv guide at around 2am on Daylight Saving switch day.  It seems to do something slightly different every time.  But it's gotten a lot better; years ago it would do some strange shit.

    Yes, my Saturday nights are always that exciting -- married five years now...



  • @Kederaji said:

    I know somebody whose software broke today.  Some variables have not been evaluated to protect the children.

     

    @Kederaji's Email said:

    DAYTONA BEACH, Fla. (February 29, 2008) – A precautionary boil water
    notice is in effect for all water users in the city of Daytona Beach.
    The boil water advisory was issued due to loss of water pressure caused
    by an early morning power failure at the LPGA water plant.

    Although
    the loss of power was of short duration, water pressure dropped below
    the 20 psi threshold which triggers the boil water notice. The water
    plant has returned to normal operations.

    A boil water notice is
    a request for residents to bring water to a rolling boil for one to
    three minutes before using it for drinking or cooking. The boil request
    is a precautionary measure that is expected to be removed after
    satisfactory tests, according to Utility Director Mitt Tidwell. First
    test results will be available on Saturday by 9 a.m.

    The city of Daytona Beach also supplies water to South Daytona and the area north
    of $other_street in Daytona Beach Shores. All residents in these areas
    are advised to adhere to the boil water advisory.

    For more information, please call the city’s utility department at $telephone_number.


    Info courtesy of the city of Daytona Beach.

    Campus Safety

     

     


    Un-anonymizer-bot fixed (most of) that for you.



  • I have never used any software with bugs that cause it to fail on February 29. But I have heard of bugs based on the phase of the moon. And probably some software (including ones I wrote but a lot of other people as well) won't work good at midnight, I never had this problem and I never heard of it or seen it elsewhere but I think it will fail at midnight. Can you understand why? I can understand why but I don't know for sure because I haven't tested it or even heard of it before I thought of it!



  • Sharepoint doesn't like users who are born Februari 29th [ http://support.microsoft.com/default.aspx?scid=kb;en-us;936912 ]

    Error message when you enter February 29 in the
    "Birthday" field in SharePoint Server 2007: "The date you have entered
    is not in a valid format"

    SYMPTOMS

    You visit the View User Profiles Web page in the SharePoint Shared Services Administration Web site in Microsoft Office SharePoint Server 2007. You enter February 29 in the Birthday field, and then you click Save and Close. When you do this, you receive the following error message:
    The
    date you have entered is not in a valid format, or it is outside of the
    valid range of dates. Reenter a valid date in the format May 03

    CAUSE

    This
    behavior occurs because SharePoint Server 2007 does not support
    February 29 as a birthday value. This is because most users who have
    birthdays that occur on February 29 select February 28 or March 1 as
    their annual birthday. Additionally, birthdays that occur on February
    29 do not work correctly in non-Gregorian calendars.

    WORKAROUND

    To work around this behavior, you must enter February 28 or March 1 as the birthday value.

    STATUS


    This behavior is by design.





  •  A. The one you posted isn't a bug.

    B.  Half the ones in that list are even less of bugs. 



  • @gremlin said:

    snip
    Un-anonymizer-bot fixed (most of) that for you.
    And here I was hoping I wasn't worth the effort to stalk.



  • TRWTF is 34 posts and no-one mentioned St Tib! 



  •  As long as Warcraft works, all is forgiven.



  • @zzo38 said:

    I have never used any software with bugs that cause it to fail on February 29. But I have heard of bugs based on the phase of the moon. And probably some software (including ones I wrote but a lot of other people as well) won't work good at midnight, I never had this problem and I never heard of it or seen it elsewhere but I think it will fail at midnight. Can you understand why?

    The moon is screwing up your magic numbers. It'll only work reliably between sunrise and sunset, except on Samhain.



  • We had all of our Business Objects XI servers (every single one) keel over dead. The reports were still being run, but administration couldn't happen until Monday (well, Saturday, but...).



  • @Kyanar said:

    We had all of our Business Objects XI servers (every single one) keel over dead. The reports were still being run, but administration couldn't happen until Monday (well, Saturday, but...).
     

    Huh ... I don't believe we had that issue. They keel over now and then but not because of 2/29, Friday the 13th, Groundhog Day or any other date event... 



  • Well...

     I had a bug about 4 years ago... It was an odd situation thats even worse than a simple Feb.29... It was a leapyear that startet on a "thursday". And that meant by "german norms" , its a year with -53- weeks...

    The bug is fixed, even though i know it would not happen again until 2032 (and i was already migrating the database to the new system)

     



  • @Squiggle said:

    Our problem stems from a calculation which tries to get the date a year from now. The developer thought it would be safe to just get the current day, month and year add construct a new date after adding 1 to the year.

     

     

    I made that mistake myself, only it was getting the date a year ago.  Fortunately, it was just a report, and the client was understanding ("this problem will go away if we just wait till Monday, right?"), and it only took a few minutes to replace it with DateAdd("yyyy",-1,the_date) or whatever exactly it was.

     



  • Ok, it wasn't the 29th of February that broke it, but the time change.  My wife's company (the one that generated this lovely WTF) had their ticket system behaving strangely.  They couldn't close tickets until one hour after they had been opened.   



  •  We have a system monitor that works like this:

     

    SELECT * FROM Log WHERE logDate > @lastCheck

     once per minute.

     

    The machine running the monitor had never had the DST rule update applied... so when messages started coming in for 1 hour in the future, they got emailed out once per minute for an hour.

     

    I'm not sure why we didn't notice this last year.



  • The church down the street used to ring its bells every day at noon, 6PM, and presumably at 6AM. Ever since the daylight savings time change, the bells have been ringing at 7AM, 1PM, and presumably 7PM.


Log in to reply
 

Looks like your connection to What the Daily WTF? was lost, please wait while we try to reconnect.