New year, new bug – rivalry between devs led to a deep-code disaster
How badly do you want your name in the About box?
Who, me? Welcome, gentle reader, and rejoice, for with the new year comes a new instalment of Who, Me? in which Reg readers recount tales of tech trouble for your edification.
This particular Monday meet a programmer we'll Regomize as "Jack" who had a rival we'll call "Irving." The two of them were programmers at a small concern that made business software for the then-popular Amiga platform. That in itself should give you some idea of the time frame in which our tragedy takes place.
At the core of their rivalry was their flagship product – a productivity application. Irving had been the principal developer of version 1 of the program, but had moved to wider responsibilities in the organization (such as it was – there were no "big" Amiga developers). Jack, therefore, did the lion's share of the work on version 2.
That work, incidentally, included rewriting a lot of Irving's old C code in faster Assembly language. Like the Ship of Theseus, not much of what Irving had created remained in the new version.
Nonetheless, Irving felt that, as the originator of the product, his name should go first in the About box for version 2. Jack, for his part, felt that it was OK to give some credit to Irving, but version 2 had been his baby and he wanted top billing.
To cut a longish story shortish, Irving was buds with the guys who founded the business, so he won.
- PLACEHOLDER ONLY Someone please write witty headline here
- Enterprising techie took the bumpy road to replacing vintage hardware
- Sysadmin's favorite collection of infallible utilities failed … foully
- IT sent the intern to sort out the nasty VP who was too important to bother with backups
Version 2 came out toward the end of the year to much acclaim – with Irving's name first in the credits.
Then came January, and staff at the software mill were greeted upon their return from holidays with irate messages from unhappy users. The program, which had been working fine a few weeks before, simply would not work.
Strangely enough, it worked for some users, but for many others it was offering nothing but Guru Meditation (if you know, you know).
Remember of course that this was a productivity application, so there were actual businesses that were relying on it. Those customers were not amused, so Jack and Irving's bosses were equally irate.
When the bug was discovered, it turned out to be an instruction with an odd memory address. Users with newer machines – like the Amiga 2000 – were not having problems because the 68020 processor could take an error like that in it's stride. But anyone with an older 68000-based Amiga inevitably crashed.
Just what was this poorly formed instruction, and why was it not picked up in the process of debugging?
Well, you've probably guessed that Jack, in a petty moment, had hidden a little routine deep in the code – in Assembly, so the C compiler didn't notice it – that would swap the names around in the About box. And in order to avoid anyone seeing it before or even on launch day, he'd set it to execute on the first day of the new year.
As a developer, Jack obviously had an Amiga 2000, so it ran just fine when he tested it. Oops.
Sadly, Jack's tenure at the small development concern he'd sabotaged did not survive the incident. But an important lesson was learned: always test your code on the lowest-spec machine your users are going to have.
Has hubris ever brought your grand schemes undone? Have you ever found yourself in a battle of wits with an Irving? Or a Jack? Whether you won or lost, tell us about it in an email to Who, Me? and we'll share it on a future Monday. ®