back to article That code that could never run? Well, guess what. Now Windows thinks it's Batman

Welcome back to On Call, The Register's weekly peer into the dungeon of despair inhabited by those who twitch uncontrollably at the trill of a telephone. Today's tale comes from a reader we'll call "Theo" and should serve as a warning for anyone ever tempted to insert witty error messages into their code. The story takes us …

  1. A K Stiles Silver badge
    Joke

    Assume the worst

    Good work on putting in the check, if the code shouldn't continue were the value not to be trusted. Less good work putting your personal landline number in the error message! Always pass that joy along to the person now occupying your previous desk (and hope it's not you!)

    Inconceivable, for when things don't quite do (or mean) what you think they do!

    1. Phil O'Sophical Silver badge

      Re: Assume the worst

      Good work on putting in the check,

      Maybe not, since "I threw in code that wrote the variable to two locations" is clearly NOT atomic, so it's entirely possible that his atomic operation was still fine, and it was his non-atomic check that broke things.

      1. imanidiot Silver badge

        Re: Assume the worst

        It worked for a long time. The comment still stands, it's not a good idea to hardcode a landline number in. Who knows if the number will still be active when the error actually occurs.

        1. baud Bronze badge

          Re: Assume the worst

          It's even worse if the number is still active when the error occurs, because they're going to call you instead of the helpdesk. I think the major issue wasn't the error message, but putting his personal phone number.

          1. ridley

            Re: Assume the worst

            Agreed, he should have put in Whitehall 1212 as the contact.

          2. TeeCee Gold badge
            Meh

            Re: Assume the worst

            Hmm. Anyone know Bill Gates' mobile number?

            1. Killfalcon Silver badge

              Re: Assume the worst

              I don't, but Weird Al has him on speed-dial.

        2. Anonymous Coward
          Anonymous Coward

          Re: Assume the worst

          I just had this visual of a dimly lit apartment complete with crime scene yellow tape, chalk outline, forensics team speaking in hushed murmurs...and the phone rings. Not Mississippi, mind; just the strangest phone call, with the correct number to what could be one of the last of the rotary-dial phones in existence.

          1. The Oncoming Scorn Silver badge
            Big Brother

            Re: Assume the worst

            "GET ME PENDLETON!!!"

            1. teacherboy
              Thumb Up

              Re: Assume the worst

              Happy memories of Bob Peck in a right pickle! must watch that one again.

      2. Dabooka Silver badge

        Re: Assume the worst

        For the dunces among us, what is meant by an 'atomic operation'?

        Yes I could Google, but we're on the message boards so go straight to source.

        1. Captain Scarlet Silver badge
          Trollface

          Re: Assume the worst

          Its where the computer's CPU plays a game of Hasbro's Operation with the Math Co-Processor.

        2. Imhotep

          Re: Assume the worst

          IIRC, an example when you're talking about a database write: the code is supposed to write a record which contains multiple columns. If the code cannot make entries for each column in the record, it won't do the write - a complete entry or nothing, ensuring you don't write crap records.

        3. Phil O'Sophical Silver badge

          Re: Assume the worst

          Its an operation that will fully complete as one step, where no other operation can be performed during it. Used to synchronize multiple parallel tasks

          Take a simple operation like "a = a + 1" where "A" starts off as 6, so should end up as 7.

          If this were done as

          read a

          add 1 to it

          write it back

          and if there were two tasks which happened to be doing this at the same time, both could read a to get 6 both add 1 to get 7, and then both write it back. The second would overwrite the first and the result would be 7, not the expected 8.

          By using an atomic operation "increment(a)", once the first task has started to work it would have to finish the "add one and store" before the second could read a, so they could not interfere.

          1. J.G.Harston Silver badge

            Re: Assume the worst

            Essentially, the difference between:

            INC (HL)

            and

            LD A,(HL)

            INC A

            LD (HL),A

            The second has two points where something else could get in and operate on (HL).

            (Where (HL) means 'the memory location pointed to by HL'.)

            1. Phil O'Sophical Silver badge

              Re: Assume the worst

              You'd need to check the processor docs, if INC is implemented in microcode it might not be atomic at the level of multiple cores on one chip. Most processors will call out operations that are atomic, often things like inc() or "test and set", but it's always worth checking.

              1. Tomato42 Silver badge
                Boffin

                Re: Assume the worst

                and also the atomicity may be dependent on the size of operands, it may be atomic for 32 bit and 64 bit register, but not for 16 bit or 128 bit register

              2. paulll Bronze badge

                Re: Assume the worst

                Ooh a multi-core Z80. That got the juices going.

            2. red floyd
              Childcatcher

              Re: Assume the worst

              Z80 strikes again!

              1. Paul Herber Silver badge

                South Western Railway

                Is this yet another strike over who operates the doors?

                At least the trains have been upgraded from 8080s.

                Class 286/386/486 locos look so dated now.

                1. Simon Harris Silver badge

                  Re: South Western Railway

                  Trivia: trains with CPU numbers.

                  Apparently the 1990s vintage Class 332s on the Heathrow Express are being replaced in December with Class 387s. Some other train operators already have them.

                  Class 486s were actually built in the 1920s for the London Underground and were last used on the Isle of Wight with 486 numbers between 1967 and 1992, while Class 487s ran on the Waterloo and City line from 1940 til 1993.

                2. Paul Herber Silver badge

                  Re: South Western Railway

                  What have I written that deserves 2 downvotes?

                  1. jake Silver badge
                    Pint

                    Re: South Western Railway

                    "What have I written that deserves 2 downvotes?"

                    In all likelihood, both of the union door-openers that know how to read think you are mocking their highly intellectual career choice. Either laugh it off, or allow it to devastate you as the 'orrible indictment on your character that it obviously is.

                    Or you could just ignore it, relax, and have a homebrew.

                    1. Ken Moorhouse Silver badge

                      Re: South Western Railway...

                      I think I'm right in saying that Paul has connections with the above which union door-openers would be thankful for...

                  2. Dabooka Silver badge
                    Pint

                    Re: South Western Railway

                    Don't worry Paul,

                    I asked a (reasonable) question and got two. It happens all the time on here especially when offering insight or offering an opinion on something someone else disagrees with. Even when factually correct it seems.

                    Have a pint instead.

          2. Dabooka Silver badge
            Pint

            Re: Assume the worst

            Thanks Phil, great explanation and must be clear if I understand it.

        4. Ken Hagan Gold badge

          Re: Assume the worst

          a-tomic = not-divisible (in Greek).

          You will be familiar with how the same word is used with the same meaning in physics and isn't true there either.

          1. ibmalone Silver badge

            Re: Assume the worst

            You do have to try pretty hard to break it in most cases though.

            And then there are those that enthusiastically break themselves.

          2. Doctor Syntax Silver badge

            Re: Assume the worst

            "You will be familiar with how the same word is used with the same meaning in physics and isn't true there either."

            Actually the meaning of atom in physics was the smallest piece you could divide an element of some substance into and with it still being the same thing. You might divide the atom but you then get atoms of something else so the original concept still holds true.

      3. the spectacularly refined chap

        Re: Assume the worst

        Maybe not, since "I threw in code that wrote the variable to two locations" is clearly NOT atomic...

        This immediately strikes me as one of those 'lack of formal education' comments since it appears to misunderstand the very premise of atomiticity. It does not mean the code is simple or occurs in a single cycle, it simply means it can't be separated, i.e. it all runs in a single block of time without interference or interruption. It goes far further than those elementary atomic ops you may see defined in your compiler documentation.

        Lock the bus, mask interrupts, anything else you need to do, and you can have arbitrarily complex code as an atomic op.

        1. Anonymous Coward
          Anonymous Coward

          Re: Assume the worst

          Lock the bus, mask interrupts, anything else you need to do, and you can have arbitrarily complex code as an atomic op.

          Of course, and in the original article the author said he was in a critical section of code, so all he needed was a lock such as a mutex (which is of necessity an atomic op) around that section, instead he chose to do two distinct writes, which isn't atomic.

        2. Loyal Commenter Silver badge

          Re: Assume the worst

          Lock the bus, mask interrupts, anything else you need to do, and you can have arbitrarily complex code as an atomic op.

          Well, that may prevent something else from interrupting your arbitrary code. You still need to ensure that it can't fail half-way through, or if it does, it fails in a way that leaves the state of whatever it was working on unchanged. This is harder than you may think, once you factor in things like accounting for hardware failure (disk crashes, memory failures, etc.) or power outages. There's a point where you have to accept that the universe might hate you today, and your software might do something unexpected as a result. There is no such thing as "unreachable code" - if it's compiled in, it can run, under specific enough circumstances...

    2. A.P. Veening Silver badge

      Re: Assume the worst

      Good work on putting in the check,

      I would have coded that check with three variables and used the value of any two that agreed (and still put in an error message is case of a three way disagreement).

      1. Giovani Tapini Silver badge

        Re: Assume the worst

        You do recall how little RAM there was to store your code+variables at the time? I would suggest this potentially adds a lot of complexity to a non-safety critical solution too.

        I want to know what triggered the thought process that any check at all was necessary though...

        1. jake Silver badge

          Re: Assume the worst

          "what triggered the thought process"

          It was a person coding on a PEE CEE platform, for Windows, in the early '90s. Do the math(s).

          1. J27 Bronze badge

            Re: Assume the worst

            Windows? Nah, sounds like DOS.

            1. gotes

              Re: Assume the worst

              TFA mentions a "Windows dialog box".

            2. jake Silver badge

              Re: Assume the worst

              Considering that in the early '90s Windows was just a shell on top of DOS, I fail to see your point.

              1. gotes

                Re: Assume the worst

                I was using Windows 3.0 in the early 90s, you most definitely could not run a Windows application in DOS.

        2. A.P. Veening Silver badge

          Re: Assume the worst

          You do recall how little RAM there was to store your code+variables at the time?

          You can get it cheap, quick and secure, pick any two of the three. And yes, I am aware of the price of RAM at that time, I still know how to swap the values of two numerical variables without using a third variable.

          1. DavidRa
            Go

            Re: Assume the worst

            That was (and still is) a neat little trick in the languages that allow it. I recall that was the reason that my rubber-banding worked properly (1993 Xterms being what they were) and in near real time - most of the others were about 3x slower than real time and if you followed the absolute dunce-cap algorithm in the provided materials, 9x slower.

            For clarity, when drawing an ellipse with this particular library, you had to nominate the top left and bottom right corners - so if you started in the wrong direction you'd get undefined results or crashes. The provided algorithm was something like:

            if ((x1 < x2) && (y1 > y2)) { swap (y1, y2); }

            if ((x1 > x2) && (y1 < y2)) { swap (x1, x2); }

            if ((x1 > x2) && (y1 > y2)) { swap (x1, x2); swap (y1, y2); }

            if ((x1 > x2) && (y1 > y2)) { }

            And yes, swap() was the 3 variable load/store, as a function. Replace with the passthrough macro version of SWAP, optimise the compare/swap:

            #define SWAP(a,b) (a ^= b ^= a ^= b)

            if (x1 > x2) SWAP (x1, x2);

            if (y1 > y2) SWAP (y1, y2);

            And done.

      2. Anonymous Coward
        Anonymous Coward

        Re: Assume the worst

        "a three way disagreement"

        My wife and I had one of those.

        1. Huw D Silver badge

          Re: Assume the worst

          You lost twice, didn't you? ;)

          1. Will Godfrey Silver badge
            Facepalm

            Re: Assume the worst

            No, the poor guy has a mother-in-law

      3. Nolveys Silver badge

        Re: Assume the worst

        You should then do the operation three times with three variables each for even more concensus.

        1. jake Silver badge

          Re: Assume the worst

          And then close your eyes, click your heels together three times while repeating "there's no place like home" ...

      4. Loyal Commenter Silver badge

        Re: Assume the worst

        I would have coded that check with three variables and used the value of any two that agreed (and still put in an error message is case of a three way disagreement)

        I suggest you read the excellent work by Philip K Dick, "MInority Report". Don't bother with the film though.

    3. billdehaan

      Re: Assume the worst

      Less good work putting your personal landline number in the error message!

      That was absolutely an error. When my group did a similar thing back in 1989, the burned-in-rom telephone number was that of our much-disliked group leader. He was the one who said it was ready for production and couldn't fail, let him deal with the fallout.

  2. jake Silver badge

    True multitasking didn't exist ...

    ... in 1992, when VLB came out? Odd. I'm fairly certain I was running UNIX long before 1992. And MULTICS before that ... and various DEC Monitors about the same time. And S/360. And ...

    1. Tom 7 Silver badge

      Re: True multitasking didn't exist ...

      Multitasking existed in 1613 but race conditions merely meant the computer supervisor went down the row of desks and caned the computer who was a bit behind with their calculations,

      1. jake Silver badge

        Re: True multitasking didn't exist ...

        That's not multitasking. That's parallel computing.

        1. big_D Silver badge

          Re: True multitasking didn't exist ...

          Ah, the forefather of the Inmos Transputer?

        2. Tom 7 Silver badge

          Re: True multitasking didn't exist ...

          Some could have been doing sine and others tangents....

        3. Stevie Silver badge

          Re: True multitasking didn't exist ...

          Not unless they are all scribbling different parts of the same entry in the same ledger it ain't.

      2. LDS Silver badge

        "and caned the computer"

        That's how I still handle developers who forget to be professional. No user facing message should ever be an unprofessional one. Even debug logs has to be professional, because testers do an already complex job, they don't have to parse funny messages too.

        1. Jellied Eel Silver badge

          Re: "and caned the computer"

          Even debug logs has to be professional, because testers do an already complex job, they don't have to parse funny messages too.

          Well, testers do have to parse funny error messages, ie attempt to make sense (and document in test scripts) some error message that may mean something to the developer, but not any mere mortal. I served some time as a tester at Uni, but never again!

          On which point, coursework included designing and writing a traffic light control system on a 68000 board. I had a routine called 'Call ambulance' which looked for any all-green condition. Instructor wasn't happy, but I figured it was perfectly descriptive, and added a 'PANIC' routine to alert an operator.

          1. Stevie Silver badge

            I had a routine called 'Call ambulance'

            Bah!

            As a protest against my full of himself new boss and his idiotic "standards" which only I was told to follow ("as a pilot of the idea") I wrote an entire Cobol program that read as a narrative of an attempt to seduce Debby Harry in the backseat of a car.

            It got verified *9* times (the narrative was a good 'un but totally PG when all was read and typed, more boddice-ripper than porn) and the head of the punch room stood over me flexing her biceps while I ran it to prove it was a real program and not just time-wasting. Only program I ever got back with zero punch transcription errors. I got smirked at by every one of the punch girls too. Result.

            Later, while sharing that story over a pint with some Sperry consultant bods who had let slip they worked at that shop too, one of them exploded that he had worked on that program, assumed it was a joke, added some comments of his own and sent it back to the head of programming - and damn near lost his job.

            Not sorry. It was a simple program. If he was so damn lazy as to not bother desk checking it or, more importantly, not bother checking the schedule for it - it ran weekly per my memory - then he deserved to be dinged.

            1. jake Silver badge

              Re: I had a routine called 'Call ambulance'

              "I wrote an entire Cobol program that read as a narrative of an attempt to seduce Debby Harry in the backseat of a car."

              Thus neatly dating yourself (probably).

              Have I mentioned I like COBOL? I'll leave my opinion of the inimitable Deborah as an exercise for the reader.

          2. swm Silver badge

            Re: "and caned the computer"

            The Dartmouth Timesharing system in its DN-30 disk handling code had the names of all of its routines prefixed by a "K". One of the routines was "KHUNT". Perfectly logical but the name disappeared a year later when the disk handling routines were rewritten - not for prissy reasons - just a different algorithm.

            1. Ken Moorhouse Silver badge

              Re: "KHUNT"

              An anagram of the professor who wrote about such algorithms.

        2. RayG

          Re: "and caned the computer"

          I definitely try to make sure messages offered are professional, because the immutable law of Murphy means they WILL be seen by someone who isn't happy to see them. However, I've found that a lot of people's "professional" error messages are bland techspeak that is totally incomprehensible to users and leads to problems being reported poorly ("It didn't work! I don't know what it said! It just didn't work!"). Hence I've found it more effective (in the case where errors are prompted by stuff that happens outside my code so I can't just fix the actual problem, of course) to make sure each error message says something slightly quirky and distinctive that fixes in users' minds. Then whatever garbled account of a problem filters through, there is something to connect it to the original message.

          I've occasionally wished to accompany each error with a distinctive picture, as I suspect users would remember these rather better and it would make questions a lot easier (not "Did it say there was an error with ID ten T in retroacting the turboencabulator?" but "was there a picture of a sad kitten?"). However I don't often do GUI-intensive work where that would apply, and I usually manage to make things that very rarely err anyway. This is just as well, as memorable errors are less anonymous. I have had a user approach me directly and say "We knew the problem was one of yours, because the message was so polite".

          1. jmch Silver badge

            Re: "and caned the computer"

            "make sure each error message says something slightly quirky and distinctive that fixes in users' minds"

            Divide by cucumber error}

            1. Andy Non Silver badge

              Re: "and caned the computer"

              At least they might remember that, rather than the usual conversation: User "I got an error message". Me "What did it say?". User "I can't remember."

          2. A.P. Veening Silver badge
            Pint

            Re: "and caned the computer"

            I have had a user approach me directly and say "We knew the problem was one of yours, because the message was so polite".

            That deserves a ===>

            1. RayG

              Re: "and caned the computer"

              Very kind of ye! I was pleased, but also realised I'd given myself nowhere to hide...

          3. LDS Silver badge

            Re: "and caned the computer"

            That's why my error messages box (in Windows) always had a "copy to clipboard" button because most users didn't know that Ctrl+C will copy a message box text to the clipboard - when possible, they also had a "send by email" button which would send the error and, again, when possible, diagnostic information to to an external bug tracking system.

            We could have even automated it - but I'm totally against hidden telemetry without user consent.

            Anyway even writing good error messages is a skill. Messages for end users need to be understandable and still convey enough info to understand what went wrong. "Critical error in bucket $127381769AEEA" it's not obviously a good error message, and once the user closed it, impossible to remember.

            The one I received a few days ago in Samsung Mail App "The server is not available" when the server log told me the "app" was sending the user name without domain (which was also the error returned to the app, which decided it was to technical to display it....) was a bit more informative, but the rule is now to think the user as total luser, and just return "Sorry, it didn't work".

            Separating technical information from end user ones is also a good technique - explain the error simply, and then ask to send to support the "tech information" which are displayed below.

            Some users are stupid, many others are not and will collaborate to fix problems if you allow the to help. Tester obviously far more so. If you spend some time to manage error properly, big will be fixed far more quickly.

            1. Terry 6 Silver badge

              Re: "and caned the computer"

              writing good error messages is a skill. which no one at Microsoft seems to have mastered. After decades nothing has improved. They still don't give a user ( or in my experience a pro most of the time) any clue what the f*** to do.

              Particularly relevant to me at the moment since Widows update is refusing to do its job with 1909. Having Googled the error number, tried all the recommended things. Dug out the logs. Found a totally different error number. Rinse and repeat. Tried various other things and got nowhere I've just given up. Who needs it anyway?

              1. Loyal Commenter Silver badge

                Re: "and caned the computer"

                A good error message should have four parts:

                - A meaningful title, i.e. "Could not make fondue"

                - What happened, i.e. "Out of cheese"

                - What the user can do about it, e.g. "Please refill the cheese hopper."

                - Where applicable, technical information for troubleshooting, e.g. "The cheese processor reported error code #47 - OUT OF CHEESE ERROR"

                Where at all possible, the third part should be logged somewhere reachable instead, and the message should contain something like "Please quote log ref #C4EE5E".

                1. Killfalcon Silver badge

                  Re: "and caned the computer"

                  I'm quite fond of the increasingly common MMO practice of using words for their error codes. People can much more easily distinguish a Code Lettuce from a Code Moose. than they can 65413 from 64513.

                2. Terry 6 Silver badge
                  Facepalm

                  Re: "and caned the computer"

                  You mean this wouldn't qualify....?

                  Last failed install attempt on ‎22/‎11/‎2019 - 0x800f081f

              2. RayG

                Re: "and caned the computer"

                I do agree, but I think there's a trap there. If you know the corrective action you can put a branch in your program that tries to take it (and avoid the need for a message), unless it's in some open-ended input the user provides such as a document, in which case it's often SO open-ended that it's hard to provide usefully specific advice. Even if you can provide advice you can bet lots of it will go unheeded and then you'll have to decipher garbled reports of what people's corrective actions were, as well as the actual problem.

                Owning this stuff will never be popular as it takes time and effort and there's no glory or obvious cash in it, but if you need users' confidence for your software to succeed, you can't dodge it. Microsoft don't need your confidence, hence the tone and content of their messages.

            2. Killfalcon Silver badge

              Re: "and caned the computer"

              I've done the automated email thing at work (office automation stuff, so no worries about user telemetry).

              It works great until the email module has an error.

          4. Anonymous Coward
            Anonymous Coward

            Re: "and caned the computer"

            > "We knew the problem was one of yours, because the message was so polite"

            I've had multiple instances of users knowing the error message was mine for the exact opposite reason. The benefit is they they did NOT approach me.

            1. RayG

              Re: "and caned the computer"

              Very wise, but it's too late for me :-)

      3. StargateSg7 Bronze badge

        Re: True multitasking didn't exist ...

        Vax VMS OS on circa 1977/1978 Vax 780 hardware WAS multi-tasking. It's main coder Dave Cutler went on to Microsoft in 1988 to startup the task of writing Windows Server which came out in 1991/1992.

        So multitasking has LONG been in working order without race conditions for quite a long time!

        I think even the 1960's era DEC PDP/11 was properly multitasking. I think I still have one of those in the parent company's inventory kept as a museum piece along with the VAX 780, various Micro-Vaxes and DECstations and a few 1988/1989 era VAX 9000 mainframe series (which are STILL in use TODAY in the year 2019 doing what we call average time-sequence financial trading which is a form of daytrading -- slow machines such as these VAX mainframes are IDEAL for this!)

        And I should note that IBM OS/2 in the early 1990's was ALSO truly multi-tasking! I am STILL running one of my older IBM Model 80 server machines on OS/2 --- I LOVE IT !!! Easy and pretty fast doing my custom spreadsheet calculations day-in-day-out which get turned into northern Canadian predicted-viability Oil & Gas Reservoir bitmaps! MANY TIMES older OSes and Older servers are BETTER SUITED for certain types of tasks BECAUSE they are slower and have much less memory AND certain source code was written for those machines and I don't have the time or inclination to port the code to newer machines!

        .

        1. RancidRodent

          Re: True multitasking didn't exist ...

          "Vax VMS OS on circa 1977/1978 Vax 780 hardware WAS multi-tasking. It's main coder Dave Cutler went on to Microsoft in 1988 to startup the task of writing Windows Server which came out in 1991/1992."

          Lyons Leo MK3 was properly multitasking in 62/62. As for Mr Cutler, NT wasn't all his work despite the myths and legends - MS took a cut of OS/2 at the point of the break up with IBM - which was already a fully-fledged multitasking operating system with virtual memory support before Cutler touched it. Yes he did some great work but he didn't add multitasking or virtual memory - it already did it - I've no doubt he greatly improved it - of course the all IBM rewrite of OS/2 (Warp and Merlin) blew NT out of the water performance wise and required a 5th of the RAM to be productive, the MVS team helped out with the paging algorithms. Sadly for IBM, the falling cost and higher availability of RAM coincided with Warp's release so NT took off when Warp really should have. NT's biggest advantage over Warp was multiple "terminal queues" so misbehaving apps were better isolated from doing damage to user activity. OS/2s only real weakness - a poorly app could lock all "terminal" input/output.

    2. GlenP Silver badge

      Re: True multitasking didn't exist ...

      We wrote a true multi-tasking operating system back in about 1984 so I know they existed. OK, it was a university project but it worked.

      Glen

      1. jake Silver badge

        Re: True multitasking didn't exist ...

        Minix?

        1. ridley

          Re: True multitasking didn't exist ...

          Cough: AmigaOS :Cough

        2. Tom 7 Silver badge

          Re: True multitasking didn't exist ...

          PDP-6 Multics 1964

    3. Anonymous Coward
      Anonymous Coward

      Re: True multitasking didn't exist ...

      True "multitasking"/"multiprocessing" doesn't depend on the OS onlly - it depends on the CPU architecture. It has to be able to really run more than one task/thread/process at the same time. It's in such situations where race conditions can become really dangerous - if proper CPU opcodes aren't used.

      1. Anonymous Coward
        Anonymous Coward

        Re: True multitasking didn't exist ...

        it depends on the CPU architecture. It has to be able to really run more than one task/thread/process at the same time

        I suspect that's what happened in this case...time and hardware moved on, and the hardware that the code was running on became more capable regarding multitasking.

        Years ago I worked on a project for a big piece of software that had lots of things running concurrently. It had been heavily tested on VMs but fell down like a sack of s**t when deployed live. The difference was that in the live environment the servers had multiple physical processors which could truly do things in parallel which significantly increased the risk of two bits of code which didn't play nicely together executing in parallel. The virtual CPUs in our test environment weren't multitasking in the same way so the odds of that error condition ever arising were astronomical....leading us into a false sense of security.

        1. Anonymous Coward
          Anonymous Coward

          Re: True multitasking didn't exist ...

          "It had been heavily tested on VMs but fell down like a sack of s**t when deployed live."

          I figured out a programming error that way once (ok the other way around). It worked in the virtual machine emulation every time. It was slow but it would have provided a way to look at things after the failure. But it never failed.

          Running it live it would sometimes work, and sometimes fail with corrupted data. Oh, and only one input file failed that way. Other input files worked fine.

          Finally after several days of trying to figure it out. The possible (and true) cause came to me as I was drifting off to sleep. The code used triple read buffers. I got up and wrote a note to myself so I wouldn't forget by morning.

          Turned out the bad file had the EOF mark long before the last allocated sector of the file. Lots of extra sectors. When it failed, the read file routine would see the EOF and free the buffers.

          But this was on a mainframe (up to 4 processors and 4 IO processors), and the disk reads were cued up to IO processors that handled the actual disk reads. So in the live runs, sometimes there would be outstanding disk reads waiting to write to the disk buffers that had just been freed. Or maybe the disk reads happened before the memory was reused. But in the virtual machine emulation it always did it the same way which however it was, always worked.

          FWIW, this mainframe (Sperry Univac 1100/80) had at least one atomic instruction. I think it was read modify write but that was long ago and I wasn't having any luck Googling it.

    4. diodesign (Written by Reg staff) Silver badge

      Re: True multitasking didn't exist ...

      We mean for your common or garden PC user. I'll just ditch that part. Don't forget to email corrections@theregister.co.uk if you spot anything weird.

      C.

      1. jake Silver badge

        Re: True multitasking didn't exist ...

        Sorry, Boss. My parser must have glitched; for some reason I thought it was Theo's observation.

        You gotta admit this kind of thing sparks a lively sub-thread, though ;-)

    5. swm Silver badge

      Re: True multitasking didn't exist ...

      Dartmouth time sharing 1963, MIT time sharing 1962. The Phase II time sharing system used 2 processors and did have true simultaneous multitasking in 1970.

      1. RancidRodent

        Re: True multitasking didn't exist ...

        The prototype Mk3 version of the world's first electronic general purpose business computer The British Lyons Leo III had multitasking in 1961 - in production in 62.

  3. Oliver Mayes

    One of our old websites could theoretically have displayed a "Divide by cucumber error" message, but only if a specific variable was neither > 0 or <= 0.

    1. 's water music Silver badge

      vegetable errors

      many years ago I scripted a client migration process in Winbatch (good times). There were a number of failure points that would leave a client disconnected so the script had several checkpoints where it would abort and report why to the user. Knowing, from my previous career progression through helldesk and support teams, that users never report error messages properly I thought I would theme mine with vegetable names in the window titles instead of error numbers. Broccoli was the mots common by a long way but I think there were a couple of others that merited a kbase article of their own. The tickets that came to me almost always included the correct vegetable which made support way easier.

      1. fobobob

        Re: vegetable errors

        Sounds like a good start for a Kernel Picnic.

      2. Ken Moorhouse Silver badge

        Re: vegetable errors

        So presumably you'd get a leek if memory was not returned to the pool at the end of an operation.

        1. Ken Moorhouse Silver badge

          Re: vegetable errors

          And for timeouts a shallot would be appropriate.

          1. dfsmith

            Re: vegetable errors

            A celery fault could be berry serious.

            1. Ken Moorhouse Silver badge

              Re: Those irritating situations where the cursor just keeps going round and round...

              Those would be spinach errors.

              1. Steve K Silver badge

                Re: Those irritating situations where the cursor just keeps going round and round...

                A Carroty error, surely?

    2. Anonymous Coward
      Anonymous Coward

      only if a specific variable was neither > 0 or <= 0

      I think that IEEE floating point allows -0 (negative zero) and IIRC it wasn't bitwise equal to positive zero, so if you were careless with your int/float conversions...

      1. Baldrickk Silver badge

        I somehow doubt that he's manually coding conversions in a web application.

        -0 does indeed have a different pattern, but in a comparison should still evaluate to 0.

        That said, you could always run into NaN, which I think would meet the requirements?

        1. Will Godfrey Silver badge
          Facepalm

          Never provoke a NaN

          My Nan was a sweet little old lady who'd never hurt a fly. Quiet as a mouse, so much of the time you'd forget she was there. However, even in her late 90s she had near total recall of everything we said and did, right back to when we were in nappies. As I said:

          Never Provoke a Nan!

        2. swm Silver badge

          Yep, Java code for isNan(float x) {

          return !(x == x);

          }

    3. Anonymous Coward
      Anonymous Coward

      We got a software drop from a supplier, and when looking through it one of the developers noticed that if a memory allocation failed it called printf("Fuck me, no memory left!\n") and exited.

      He emailed this gem around the team asking "do you think we should perhaps change this?", and got an immediate reply from our boss: "Absolutely. It isn't internationalised."

      1. Anonymous Coward
        Pint

        I'll raise a glass to a boss with a sense of humour.

      2. Anonymous Coward
        Anonymous Coward

        in an API I work on / with on a daily basis

        "Error 999 : Something seriously fucked up"

        usually called when data just written (successfully) to the database doesn't exist when looked up.

        the good news is that I have only had the error appear once in 6 years, when someone decided to pull the database server off the network without warning.

    4. Anonymous Coward
      Anonymous Coward

      I have seen Toast errors in Azure.

      1. Anonymous Coward
        Coat

        Seen or smelled?

        Aren't toast errors usually manifested as smell before they are seen?

        1. tim 13

          Re: Seen or smelled?

          We've had a toast error that tripped a comms room

      2. Steve K Silver badge

        Crumbs!

        Oh crumbs!

  4. Oengus Silver badge

    Managers

    Years ago I was writing a CICS Cobol (remember that...) system at the bank I worked for. I used to insert different messages in "If-then-else" structures that were incomplete so I knew where I had to add code. I was going on two weeks leave so I updated my manager on my progress and told her explicitly that the program was not ready for demonstrating.

    Two weeks later I returned from leave and was called in to the managers office. She started to chew me out over the program I was in the middle of writing. I stopped her and reminded her that I had explicitly told her not to demonstrate it to the users as the results were unpredictable. She said "Unpredictable - that is an understatement". She had disobeyed my instructions and demonstrated it to the users. She said that during the demonstration she had hit one of the incomplete branches and the message "OK Turkey. How in hell did you get here?". My Response was "I told you it wasn't ready to demonstrate". When I looked into the message it was actually a condition that wasn't covered in the specifications. The disappointing thing was she couldn't tell me what she had done to get to that section of the code. It took me ages to pull apart the code to figure out what she had done and go back to the analysts to find out what to do under those conditions...

    1. Anonymous Coward
      Anonymous Coward

      Re: Managers

      "She had disobeyed ignored my instructions and demonstrated it to the users"

      Pretty sure managers cant disobey a subordinates instructions, just know better by virtue of pay level ;)

      1. Tom 7 Silver badge

        Re: Managers

        No, but they can violate the procedures they themselves insisted on. And they disobey their own instructions regularly.

    2. MiguelC Silver badge

      Re: Managers

      So very typical!

      As I said here before, I was tracking a mainframe bug report (20 years ago, yes...) and got a message on my terminal stating that "if you reached this point you're fucked". The original coder was no longer working with us but, unfortunately, we subsequently confirmed his statement...

    3. RancidRodent

      Re: Managers

      "Years ago I was writing a CICS Cobol (remember that...) "

      No need to remember it - it's still going strong - so is your application probably - with a fancy front end plastered over the top of it. CICS is estimated to be providing over 1 million transaction per second globally - to this very day - Google's 60,000 searches per second looks a bit feeble in comparison.

  5. daftdave

    Failure is inevitable

    We had an error message in the bootloader which read:

    "Wrong FAT version - suggest using monitor to reformat disk" - this would show up on screen if the hard drive or its filesystem could not be read for whatever reason. The "monitor" in this case was a serial port console.

    I'm pretty sure the message was only meant for developers, but inevitably with time, machines in the field would display this due to hard drive failure (mainly due to ageing). This would lead to messages on the product forums like

    "It's telling me to format the disk.... using the monitor!!!!!"

    1. Anonymous Coward
      Anonymous Coward

      Re: Failure is inevitable

      "Also, I'm being figure-shamed by your computer!"

      (Beer, coat, friday.)

  6. Tom 7 Silver badge

    I've always been a great believer in universal code and documentation

    largely to prevent code development conflicting with the project plans so my code frequently contains comments marked so they can be scanned by a simple parser and the plans can be easily updated to march reality. Of course this rarely happens satisfactorily and the comments are sometime left in the code and comment like '/**** this library could easily be replaced by stndrsearch.lib but for some reason nameoftwattyignorantmanager wont listen to sense again ****/' get left in.

  7. Amentheist
    Mushroom

    "Have you ever [..]"

    Yes. However mostly the error messages refer to the users' intellectual capacity.

  8. big_D Silver badge

    Comments...

    No error message, but a fellow student got me to debug his CESIL* program for his O-level project. I was annoyed, I wasn't clever enough to do O-level, I was stuck doing CSE, because I was in set 3 for Math and you had to be 1 or 2 to do O-level computing!

    Anyway, this guy was so utterly clueless that I ended up not debugging, but completely re-writing his project, because he got everything wrong. He had no real concept of how a program worked or logic or variables etc. I was so annoyed, I put into the header comments, next to the obiligatory "Author" comment, "Debugged by big_D", very prominently, before handing it back...

    Only the village O-level t**t didn't even look at the code, he just shoved it into his folder and was going to hand it in. I managed to stop him before he actually handed it in, but it was a close run thing!

    Silly error messages? I think we have all done them over the years, but usually just during testing, replacing or removing them before the code goes live - well, hopefully!

    * CESIL (Computer Education in Schools Introductory Language) was a special torture devised for pupils trying to learn programming, thought up by the British school system.

    1. Doctor Syntax Silver badge

      Re: Comments...

      "I managed to stop him before he actually handed it in"

      Why?

      1. big_D Silver badge

        Re: Comments...

        I didn't want to get into trouble and risk my own exam results.

        1. Anonymous Coward
          Anonymous Coward

          Re: Comments...

          Fess up mate- you just didn't want Big D to lose street ( or nerd) cred.

        2. Venerable and Fragrant Wind of Change

          Re: Cyrano...

          Do you have a preposterously big nose? Did you go on to woo a fair maid you loved - on behalf of a friend?

  9. jake Silver badge

    "While a decent code analyser of today would likely have spotted Theo's paranoid message, such toys were unavailable back then."

    Except 1975's lex and yaac, of course.

    1. Oengus Silver badge
      Headmaster

      Shouldn't that be yacc

      1. jake Silver badge
        Pint

        Gac.

        You're right, of course.

        Typoe or brain fart, you decide.

        Hint: I'm an old fart :-)

        1. Venerable and Fragrant Wind of Change

          Re: Gac.

          Oy! That's my byline.

        2. Oengus Silver badge
          Pint

          Re: Gac.

          Hint: I'm an old fart :-)

          I know the feeling... I'll join you in the beer and we can blame inebriation rather than age...

      2. Anonymous Coward
        Anonymous Coward

        Re: Shouldn't that be yacc

        You Always Correct, Commentard. :-)

      3. Tom 7 Silver badge

        how Awkward!

  10. Anonymous Coward
    Anonymous Coward

    Still do it

    All the progrmming I do at this firm is riddled with 'Bang Head On Keyboard' remarks, whatever takes my fancy. Best are the subliminal messages. We have a production line for pc's setup and each had to be network booted and each flashed up [My Name] deserves a good pay rise or [My Name] Is a Hero and so on. Scripted around 10 messages which were randomly displayed to around 1000 computers a day for years. Still here 18 years on with a good salary and everyone respects me. Must have worked

    1. Mike 16 Silver badge

      Re: Subliminal Messages

      What with everything on the Internet today, you should look into

      https://tools.ietf.org/html/rfc1097

      Although that refers to Telnet, perhaps the next HTTP standard could work it in. Probably save a couple meg of JS per page.

  11. ColinPa

    "Error handling to be added"

    I worked on a huge multi release software project. One of the line items in a release was a "5K lines of code" item for a developer. This line item expanded to 20K lines of code, the software was eventually released, and the guy got a big award for his major achievement.

    The problems started when the support people got calls about it not working, or failing to recover after a problem.

    The code had big comments in many place saying "error handling code to be added". The code only handled the golden path!

    In the ensuing witch hunt, it turned out that as well as the lack of error handling, there was no serialization in the code. Testing had only had one or two transactions running at a time on a two core machine. Customers were running on multi core machines, and so there was a higher risk of hitting a serialization problem The code as written ran very fast, once the serialization and error handling were added, it was significantly slower.

    The irony is that most of the code was never executed, as the specification of an interface was badly worded. We found this out when running all of the tests, and the coverage tools showed big areas of the code was not executed. The service people gradually took out unused code and no one noticed.

  12. Digiwake

    Goblins

    I've written a number of little utility apps over the years and always end up peppering them with light-hearted error messages for impossible failure conditions. One has been in use for over 23 years now and took 16 of those years to first exhort anyone to flee for the lifeboats and 19 to ask them to check behind the filing cabinet for goblins. It's clearly becoming unreliable.

    1. Anonymous Coward
      Anonymous Coward

      Re: lifeboats and goblins

      In a fit of H&S gone mad, I wonder about whether it would always seem so lighthearted if the "lifeboat" utility ever hit it's impossible condition when installed on a boat-based computer; and how the same happening to the "goblins" utility would seem if it were being used in an office suffering an invasion of ... err .. goblins. :-)

      1. David 132 Silver badge
        Coat

        Re: lifeboats and goblins

        and how the same happening to the "goblins" utility would seem if it were being used in an office suffering an invasion of ... err .. goblins. :-)

        Don’t know, but it sounds like an Elfin Safety violation to me.

  13. Admiral Grace Hopper

    "Run to the hills"

    Way back when IDMS(X) database development was my new jam, I wrote a suite of programmes to manage the files during a plex shuffle (run duplex, run simplex on either plex, backup the quiescent plex, that sort of thing) Being well-schooled in the art of defensive programming I trapped every error I could think of and just in case none of them had tripped things up, put in a catch all that started, "If you see this error message, run to the hills! There is someone roaming the data hall murdering the disks, they'll be coming for you next - for the love of God flee and take your loved ones with you, they may come for you all!"

    It wasn't picked up at code review and I didn't think about it for a good 10 years before a colleague arrived at my desk clutching a piece of piano-ruled fanfold asking if he should run to the hills. Bad sector on the disk, apparently.

  14. chuBb.

    Once demoing to the marketing dept....

    I managed to forget a closing " and echoed a bunch of source out with a multi line comment at the bottom of the screed was words to this effect

    /*

    And thus ends the arse backwards changes demanded by the bullshitmongers

    at the last minute despite the spec being signed off months ago, we were forced to add this 2 days

    from launch

    blame that oily twat <name-of-particuarly-odeous-glitter-roller> for this one

    good luck, better code follows this abomination

    */

    Some what of a bollock drop....

    1. ArrZarr Silver badge
      Angel

      Re: Once demoing to the marketing dept....

      Amen.

      Seriously, that comment could well be the Lord's prayer of developers.

  15. macjules Silver badge

    Where were you 20 years ago?

    This time 20 years ago? 22nd November 1999? Sitting in a briefing room in King Charles Street demonstrating to a number of civil servants that the "Millennium Bug" was not going to affect them at all, that every single computer had been checked and that there was no possibility of anyone losing data.

    Sadly they had already engaged a "Millennium Bug Proofing" contractor, at vast budgetary expense (and out of MY budget thank you very much) to carry out a complete audit and who 1) failed to actually check any computers at all and then 2) reported that in their considered opinion there was no need to worry.

    1. eionmac

      Re: Where were you 20 years ago?

      Ah! King Charles street with the very old furniture .

  16. Anonymous Coward
    Anonymous Coward

    Don't you open that trapdoor...

    Way back when, I worked for a company which had a codebase which had been growing "organically" for a decade or two. There were plenty of choice nuggets to be found tucked away in various source files, and I saved a few for posterity...

    /*

    * Halp, I'm being held hostage inside a software factory where I'm made to write the following shite

    */

    // I've reverted this shit back to using legacy code

    // If you change it back, I'll kill you in the face

    // Function : DoSomethingt

    // A.K.A : do_something

    // Purpose : To stop me ever having to type this farty

    // : little bit of boiler plate code again :-)

    // thank goodness you're here, bizarrely circumlocutory error handling mechanism!

    //now fix the dates cos some muppet is bound to put in the 30th Feb

    if(...) {

    die("You really shouldn't be running this script for a date in the future.\n" .

    "Believe me, no good will come of it.\n");

    }

    - function fucked_if_i_know(...)

    + function logError(...)

  17. KittenHuffer Silver badge

    Not an actual error condition ....

    .... but I do remember once writing a VERY complex and finicky bit of Excel VBA code for an internal spreadsheet. After getting it working just right I added a comment to it to "Do not fsck with this code unless you really understand it cos it will stop working pretty much as soon as you look at it" (or something along those lines)! No problem cos it was internal and all the users knew me and would listen to my advise.

    Several months later I got a slap on the wrist after my boss decided to hand the spreadsheet out to a customer, without saying anything to me, and they went into the code to see how it worked!

    1. Doctor Syntax Silver badge

      Re: Not an actual error condition ....

      About 2 weeks from go live I was appraised of a requirement that "everybody knew" about pricing, parts and whatnot. It required some hasty grafting in of tricky exploded parts list code which worked but I really never wanted to touch again. After I'd moved on and my replacement was body-shopped in he received dire threats from the product manager as to what would happen to him if he ever touched it. It eventually proved robust enough to be migrated a couple of times to new environments so it probably was OK...

      ...unlike the uncommented and incomprehensible code I inherited from my new boss at the next job which took a page and a half to work out what day of week it was and failed as soon as it hit New Year (a long way earlier than 2000). Replaced it by taking a date as day integer from a library function and doing MOD 7.

  18. Steve Graham

    I wrote the code running on forex telecoms consoles, and I had a "maintenance mode" which was called up by an obscure key sequence. At the top of the main maintenance menu, I'd programmed a random, irreverent one-liner to be selected from a short list. (I only had 128kb of EPROM for the whole suite.)

    Well, obviously, one of the dealers carefully watched as a tech called up "maintenance mode" to fix something on his console, and then the magic sequence was passed round the dealing floor with great amusement.

    They made me take it out from the next release.

  19. DuncanLarge Silver badge

    Landlines

    Yes I still have one.

    Most do if they have home broadband, just they dont bother plugging in a phone.

    I use mine as a home based 2FA for emergency account recovery and if I need to a call a company I do so on the home line so that they can feel free to cold call that rather than my mobile. Unfortunately some have managed to grab my mobile.

    There is nothing like having a real BT corded phone ringing a real bell, even if its some berk on the other end trying to fix my PC.

    1. Anonymous Coward
      Anonymous Coward

      Re: Landlines

      I have DSL home broadband - and no home phone (anymore). If you try calling the old number it'll say it's disconnected.

    2. eionmac

      Re: Landlines

      Answering cold calls in Latin or Lallans discombobulates them. They then cut off. Once I had an erudite Asian with better Latin!

      1. jake Silver badge

        Re: Landlines

        For junk telephone calls, I just ask 'em if their mommy knows what they do for a living, and if she's proud of them. Sometimes the swearing from the other end is quite gratifying.

  20. vulture65537

    > warning for anyone ever tempted to insert witty error messages into their code

    sudo has an option for "insults" (strange sayings emitted when you enter a wrong password). I maintained sudo for a while in a company which meant download/compile/package when there was a new version. There were a few people so alarmed by the "insults" that they made helpdesk calls to people who didn't know what they were and didn't know how to find out about them. In later releases I made sure the insults were turned off.

    examples here: https://grayson.sh/blogs/viewing-and-creating-custom-insults-for-sudo

    1. Anonymous South African Coward Silver badge

      upvoted for the sudo insults.

      Muhuhahaha. >clickety<>click<

    2. John Brown (no body) Silver badge

      "There were a few people so alarmed by the "insults" that they made helpdesk calls to people who didn't know what they were and didn't know how to find out about them."

      And these are people who were allowed to use sudo?

      1. It's just me
        Linux

        You do know sudo can be used to run processes as users other then root? These are exactly the type of people who should be restricted by a very tight sudo policy.

      2. vulture65537

        Yes they were.

  21. Andytug Bronze badge

    Good old Novell networks...

    Not really an error code, but similar effect.....

    The admin console of Novell Networks allowed for the sending of IM's to people. Didn't get used very often, except for a couple of the PFYs to annoy each other. One day this was occurring, so one PFY logged off to (he thought) put a stop to it.

    Unfortunately the IMs are based on user IDs assigned at login, and when someone logs off that ID is often immediately assigned to the next user that logs in, if it's within a few seconds.

    So ……..that was why a senior manager called up to ask why his PC has a message in the middle of the screen saying "STOP IT!!!!".

    Could have been a lot worse though!

  22. Boris the Cockroach Silver badge

    I

    Put a handy little function into one of my programs that if ctrl and right mouse button were pressed and the mouse wheel spun, then the application background would change from a basic dull blank, to a picture of a large hunting spider.

    4 months later we found out who used to sit at their PC all day just pressing stuff at random.....because they had a spider phobia too....

    Wheres the clean undies needed icon?

  23. Anonymous Coward
    Anonymous Coward

    source comments

    I used to insert useful and funny comments in my source code ...

    One particular Perl tool was having a specific function named "Go_to_bed_heu_l_pyt". This function was just sleeping

    , pending anything happening. This was in memory of a famous joke about this specific office user (pyt) who would routinely

    yawn very loudly at 2:00pm, just after lunch.

    10 years later, being long departed from the company, one dude who had to go into the code told me he almost pissed on

    himself laughing at this ...

    Good times.

  24. Imhotep

    Rainbow Unicorns

    I call BS. A user that read an error message and acted on what it said? Inconceivable!

  25. mtp

    Error message

    I once wrote a X,Y stage controller with the error message "Insufficient user IQ" if it was asked to do something blatantly stupid that would damage the hardware.

    Also had "Insufficient coffee - user halted" as a timeout message.

    This was just for use inside the lab so I could get away with it.

    Another long time lurker that eventually paid of was

    reading = 0xffff; // With a nice chianti

    That caused a laugh about a year later when the person next to me was adding some new features.

  26. mtp
    Happy

    Jerkoff compatible firmware

    I worked on a piston pump that could get jammed at the end of travel. The solution was to briefly go to maximum power and do a short move back into the free area. The comment on the power setting line was "atomic batteries to power" (old batman reference). The really fun bit was that I referred to this as the jerkoff function and this leaked out to support. I had people phoning me and asking if their version of firmware supported jerkoff.

  27. holmegm Bronze badge

    I've written plenty of *comments* which say "this should never happen ..."

    1. Venerable and Fragrant Wind of Change

      Haven't we all?

      I've even put it into error messages. "*** BUG xxxxx: this cannot happen". True at the time of coding it; not necessarily true in the face of future modifications.

      It's useful, too. One case in a big open-source project came back to a user forum with a user who happily had a good attitude to it all. As anticipated, an update had indeed happened that created a new code path. From memory, that was an error-handling function, that handled every plausible case in a case switch, so when someone introduced a new error code it was handled by reporting the BUG.

  28. DJV Silver badge

    Re: writing a variable twice.

    Not quite the same but it reminds me when I once had a Commodore 500. No, I DON'T mean an Amiga 500 - this 500 was a "never officially released" computer from around 1982 that did manage to get loose to the tune of a few hundred units several years later. I'd picked one up for something like £25 around 1986. It had the same VIC chip that the Commodore 64 used.

    It also had an horrendously slow screen update and scroll speed. One day, not too long after owning it, I managed to track down the reason why. Every time it wrote a value to either the screen or the colour memory it would then execute a loop that read the value back from that memory and compared it to what it had written out in the first place - it would only exit the loop once the values matched. As the screen write went through a RAM vector it was possible to bypass the checking loop to speed things up considerably, though it did make me wonder at the state of the hardware in the first place that required such a weird checking loop bodge to be added in the first place!

    There's more on this beast and its family here: http://www.6502.org/users/sjgray/computer/cbm2/

    1. ricardian

      Re: writing a variable twice.

      For a brief period we used Commodore Pet machines and used Raeto West's invaluable book to set up the 6502 machine code. Fortunately our leaders then procured the very first IBM PCs

      1. DJV Silver badge

        Re: writing a variable twice.

        Still got my copy of that book - it was a veritable bible of absolute wonders!

      2. jake Silver badge

        Re: writing a variable twice.

        Hey! Some of us actually liked 6502 assembler! (The PET, on the other hand, should never have been used outside a learning environment ... learning "this thing is a piece of shit", that is.)

        "Fortunately our leaders then procured the very first IBM PCs"

        For debatable values of "fortunately" ...

    2. RancidRodent

      Re: writing a variable twice.

      Aghhh - 6502 - you wrote more lines of code saving registers than doing any useful work - bloody awful CPUs!

      1. Sam Liddicott

        Re: writing a variable twice.

        Until you learned (which I didn't until decades later) that you could treat page 0 as being an array of 256 registers.

  29. Rtbcomp

    INP Error - System Halted

    I used to generate "INP Error - System Halted" 4 months after any program I wrote was installed. INP standing for "Invoice Not Paid".

    Once the customer paid I'd call "to install a patch" to disable this feature.

    Fortunately all invoices got paid and the error never occurred.

    1. Venerable and Fragrant Wind of Change

      Re: INP Error - System Halted

      Many years ago, I was negotiating my departure from a company, while also working on preparing a system for them to demo at an important expo.

      I added an easter egg to that. Would only activate on the date() of the expo, and would display an embarrassing message. Took it out when our negotiation reached a satisfactory outcome.

    2. Doctor Syntax Silver badge

      Re: INP Error - System Halted

      SunAccount had a function that started printing out messages to users in advance of their maintenance payment becoming due. As we were screen-scraping over telnet (yes it was a long time ago) from another system to look up accounts this wasn't welcome. We eventually worked out how to look up the ISAM files directly.

  30. lowjik

    Get us out of here Chewie

    I think I have posted this before but maybe not here

    After some hours of toiling in the bowels of an ancient bespoke PHP CMS, I was greeted with this particular comment. After exclaiming "WTF is this?" quite loudly in the middle of the office (oops) our glorious leader at the time replied (rather triumphantly) "oh yeah, that was me!"

    Turns out he could detect but not recover from an intermittent error so ... just redirect back to ourselves and hope it doesn't happen again .....FFS

  31. Henry Wertz 1 Gold badge

    Guru meditation error

    I thought the Amiga Guru meditation error was nice, so I put that into the gift card balance check for a site I worked on. The card processor used JSON (if I recall correctly), and return reasonable text error messages. So I had it print a custom message for invalid card number (it would also lock the page out for 5 or 10 minutes if they put 2 or 3 bad numbers in), and custom message for one or two other "normal" conditions; otherwise it printed "Guru Meditation Error" and directly printed whatever error message they sent, and then would suggest trying back in a few minutes. Not really a funny story about this, just a shout out for the guru meditation error 8-)

  32. StephenTompsett

    ICL Algo 68

    I seem to remember that an old ICL Algol 68 compiler could produce a message "Impossible Happened", that could be worked around by adding a blank card to the stack of cards..

  33. Herby

    For some reason this reminds me of...

    Making the first line of my C code say:

    //C.SYSIN DD *

    And that DOES go back a ways!

    1. I Am Spartacus

      Re: For some reason this reminds me of...

      WOW! Memories of JES2 and HASP.

      Where did it all go wrong?

      ABEND 42

    2. I Am Spartacus

      Re: For some reason this reminds me of...

      JES 2 and HASP

      Somewhere in the depths of JES2 is a fix with my name commented against it.

      All I can say is ABEND - Abnormal Execution End.

      1. jake Silver badge

        Re: For some reason this reminds me of...

        "All I can say is ABEND"

        Did you properly fill out your SYSABEND and SYSDUMP data definition cards? Sounds like you need to allocate more direct access space. Increase the SPACE parameter.

  34. Anonymous Coward
    Anonymous Coward

    The engines canna take it

    Way back in the 90s, when I was coding in RPG400 on an AS400, error messages were stored in OS Message Files, indexed by a code and contained a short description, long description, and recommended preventative action text.

    Our naming standard was <project code><4 digit number>, and eventually for the MCC system, I found I could craft message MCC1701. I found this too difficult to resist, and created system message MCC1701: "The engines canna take it" with a somewhat longer description in a mangled Scots dialect. Recommended action was "Reverse the polarity of the dilithium matrix".

    Since nothing (supposedly) would trigger this message, it stayed in there a surprisingly long time before being discovered, and eliminated (presumably with photon torpedoes).

  35. Doctor Syntax Silver badge

    Back in CP/M days we had MicroSoft FORTRAN. It included source of some libraries. I found a not very encouraging comment from one developer to another to the effect of "I can't get this to work. Can you?".

    1. Simon Harris Silver badge

      One piece of code I worked on had a comment from a previous developer to the effect:

      "I have no idea what this does, but it said to do it in the datasheet"

  36. This post has been deleted by its author

  37. irrelevant

    Even Today

    Just a few days ago I got a "this should not be possible" error message, in the app from a large multi-national fast food chain.

    https://twitter.com/irrelevant_com/status/1195827345745154049

    1. tim 13

      Re: Even Today

      Have you tried turning it off and on again?

  38. Kev99

    Many years ago I was teaching myself Basic using a TI-99/4. I wrote a little program that asked the user to answer a simple question. No matter the answer the program returned a more nasty message each time. After four tries, the program displayed a message along the lines of "You're too dumb to use a computer. I'm going home." and with that the computer shut down. Amazing how many people really thought they had fouled up.

  39. Anonymous Coward
    Anonymous Coward

    "Where were you 20 years ago? "

    on the bottom rungs and until recently still was.

    Dont assume you can work your way up even if you are fking amazing at your job.

    Demand promotion / pay rise and/or leave!

  40. PeterO

    Old Unix kernels never die !

    Back in the days of BSD4.3 Unix I was a post-grad student and I built a kernel for a VAX11/750 to try and debug poor NFS performance between the VAX and a IBM PC/AT that had an Enthernet card and ran NFS client software. Several years after I had graduated I got an email from the then sysadmin asking if I knew anything about all the debuging messages with my user name in them that had appeared on the console printer overnight ? And yes it was a proper printing terminal.

    Seems my kernel had never been replaced with the original after I fixed the NFS issue in the PC software !

  41. Anonymous Coward
    Anonymous Coward

    Divide by cucumber

    Error, reboot universe and restart...

    Oops, this should not have happened...

    Here be dragons!

    Out of cheese error...

    This is BETA code for a reason...

    Have all featured in my code at some point. Appropriate acknowledgement to Sir P'terry

    If you manage to kill one of the VLA modelling FPGAs on one of our pro sound cards you'll get "ce n'est pas une pipe" in reference to the pipeline spill about to take out the driver.

  42. Stuart Castle

    One of our users was using an internally designed hosted web based system one day, when they got the message "Get back, thickyhead". As it was an in joke between us technicians at the time (can't remember the reason we came up with that phrase any more though), I recognised the phrase. I spoke to the designer, who explained that he'd put the error in, and it actually signified that 5 other things that absolutely should not have failed together, did. He fixed the various problems, and changed the error message to something a little more sensible.

  43. Anonymous Coward
    Anonymous Coward

    Unix Comments

    I used to work on a Unix from Supersoft (I think). It had loads of various comments such as after some rather complex casting (all in one line) "You are not meant to understand this", and after a rather nasty and complex launch from the bootstrap to the kernel (we had little memory in those days so had to give back as much as possible) the comment something like "Here we go... arghh!"

  44. caffiend

    Profanity

    Many years ago, I was the principal software engineer on a project, where we were pushed for a BETA release of our product for fortune 100 customer to take advantage of a bleeding edge new feature. Unfortunately, if you performed certain operations in exactly the wrong™ way, in exactly the right order, there was still a bug which left some droppings behind in the database when an object was deleted, which meant that the system would not function correctly due to unfulfilled foreign key constants.

    As a work-around, to correct the corrupt data whilst the sales team promoted the software, I added a command line switch to our database configuration utility which found these rogue records and cleaned it up. This command line switch was named "dbCustomFieldUnFuckify"

    One day, several years later, I got a phone call from a panicked top-tier support engineer, who couldn't for the life of him fix their issue, however noted that they were running a "weird" version, that was never documented.

    After hearing the site name, I immediately knew what had happened, (and how to fix it) however by this stage, was on multi-party conference call with several project directors, C Level executives and other stakeholders who were NOT going to hang up until the problem was restored.

    I faced a problem, in this politically world. After explaining that production had come to a halt, and that our company would face liquidated damages which sounded like they amounted to my annual salary every microsecond.

    I immediately reassured all on the call that there was a quick and simple solution, however asked in the most PC manner, just how PC everyone on this call was... After hearing back how committed to political correctness they all were, I asked if i could have some time alone with the support technician. To which the CIO responded, there's nothing you can say to him that you can't say to us. I am after all an engineer also.

    So I bit the bullet, giving character by character instructions to the support technician. By doing this (and despite the command being case insensitive, including many case designations), I hoped nobody would notice... Then finally, someone did. and they said the words out loud. By this stage, the system had sprung back to life, and everything was working again.

    I very quickly invented a meeting I was late for, and left the support tech to deal with the PC related consequences.

  45. fajensen Silver badge

    Ach! Scheisse!!

    On a Siemens production system, I have seen the error: “Nun bist Alles in die hosen gelaufen!”

  46. Anonymous Coward
    Anonymous Coward

    Trap Input Exceptions

    Even in the most minor/trivial programmes you still need to trap dodgy user input.

    Some years ago, I was asked to make a small app to calculate the body surface area of a patient. It was something to do with calculating doses for chemotherapy.

    The formula is simple enough - Area in m2 = square root of ((height in cm times weight in KG)/3600)

    The error trapping for it however was not and contained such messages as "someone that height and weight would be a very heavy pancake", "the treatment room is not high enough for this patient" and "Please look at the BMI for this patient, as values this high could indicate other problems".

    (Yes, I gave the care staff the BMI as an error check for them.)

    The lower limit for height was 25cm and the upper was 1,000, the weight was 1kg to 1,000.

POST COMMENT House rules

Not a member of The Register? Create a new account here.

  • Enter your comment

  • Add an icon

Anonymous cowards cannot choose their icon

Biting the hand that feeds IT © 1998–2019