A 1970s magic trick: Take a card, any card, out of the deck and watch the IBM System/370 plunge into a death spiral
Who is the debugger that took down my mainframe?
Who, Me? Take a step back half a century with a cautionary tale of mainframes, student enthusiasm, and a shrinking deck of cards. Welcome to Who, Me?
This week's confession comes from "Jeremy", who was studying Computer Science at a major US university in the mid-1970s.
In those halcyon days before computers were as ubiquitous as they are today, doing Computer Science homework could be a bit of a challenge.
Not so for Register reader Jeremy. He'd scored a job at the Business School's computer lab, which had its own Remote Job Entry (RJE) node for the campus IBM System/370. Not only could he do his homework while earning a crust, he could also bump up the priority of his job from the RJE console if the queue was looking lengthy.
For every disastrous rebrand, there is an IT person trying to steer away from the precipiceREAD MORE
For the uninitiated, the IBM System/370 range was first announced in 1970 and endured for a decade before being replaced by a succession of compatible hardware during the 1980s ahead of the arrival of the System/390 of the 1990s.
Back in the 1970s, however, Jeremy was learning the art of IBM 370 assembly language programming.
"One challenging project," he explained, "involved scanning an input dataset looking for a specific set of conditions, and then forking a new process when the conditions were fulfilled."
Unsurprisingly, the program didn't work first time and, lacking the modern fripperies of today's coders, Jeremy had to work through the problem in a distressingly manual fashion. "I began to troubleshoot by removing statements one by one from the card deck (it was the '70s) and resubmitting the job to the main data center."
He reckoned he was closing in on the bug when the mainframe fell over.
"This happened every few weeks," he said, "so I just hung out by the RJE console until it came back up.
"The terminal chattered to life and then, 30 seconds later, died again."
Jeremy called up the operators to ask what the problem was. Homework needed to be done. The answer was that nobody knew, but people were trying to get to the bottom of it.
He tried to run his program a few more times, but was met with an equal lack of success. Shift finished, he headed back to the dorm, "figuring I'd continue working on my program in the morning."
The morning did not bring with it further debugging. Instead, Jeremy was marched to his boss's office and instructed to remain standing in order to take a Force 9 bollocking.
"The data center's director had called," he remembered, "and wanted my head mounted on a pike, my corpse fired, and what did I have to say for myself?"
The mainframe team had spent long hours picking through the remains of IBM's hardware and deduced that someone had injected a super-efficient bit of assembly that ran a do-while-forever loop. So many jobs had been forked that the mainframe's queue had filled up and the System/370 collapsed into a gibbering heap.
The act of removing all those cards from the deck had inadvertently created a monster.
It took copious grovelling and the showing of the pulled cards before Jeremy's boss would believe that the mistake had not been deliberate sabotage. Then he had to repeat the act of contrition once more under the gimlet gaze of the angry data center director.
"I did manage to keep my job. That time, at least," he said.
"Ah to be young and foolish again, instead of just foolish."
Ever whittled down your code until all that remained were the comments? Or enraged a data center director with an ill-considered set of commands? Confess all to the understanding vultures of Who, Me? ®