It's a particularly busy week for me: on top of a few looming deadlines, I'll be at Business of Software 2008 in Boston. So, I figured it'd be the perfect opportunity to revisit some classics.

The Sorcerer's Apprentice was originally published on January 23rd, 2007.

I don't need The Sorcerer's help, Rod Taylor scoffed to himself, I've watched him debug time and time again; it doesn't look that hard!

In those days, debugging mainframe applications was not a trivial task. There were no such things as error logs, trace listeners, or any of those other luxuries that modern software developers have become accustomed to. All one had was the Core Dump, a byte-for-byte copy of the system memory, and getting that Core Dump wasn't easy. That's why only the gray-bearded gurus like The Sorcerer were called upon for such a task.

Rod had been chasing a tricky little bug for months, the "S106 ABEND in COBOLII module IGY882." If you know what that means, then you have my condolences, for you too must be student of the dark art of The Mainframe. That particular error is a system error ("System 106" to be specific) and signifies that there was an error (an "ABnormal END") loading the IGY882 module. It was that special type of bug that could only be trapped with a Core Dump.

The Sorcerer had already retired for the evening, which was why Rod had taken it upon himself to lay a Core Dump trap. He cautiously ventured down to the basement where The Mainframe lurked and entered its inner sanctum. Rod took a seat at the beat up stool sitting in front of the terminal, grabbed The Sorcerer's leather-bound notebook of mainframe commands, and flipped to the SLIP command:

Photograph by Rod Taylor

The "SLIP" command triggers a Core Dump every time a particular process completes and requires a similar command to turn it off. Note the comma right before the END. The little comma, the insy-teeny insignificant little comma. Don't forget it, or the command traps Everything. And for a mainframe running everything, Everything is a lot of things.

That aforementioned warning was not in The Sorcerer's book of potent spells; it simply stated the syntax and explained what each argument did. I'll let you guess who forgot the comma.

Milliseconds after issuing the command, a message appeared on the terminal, something along the lines of "SLIP TRAP PROCESS PN008C." And then another message. And another. And yet another. Rod realized exactly what he had done: every process was issuing a Core Dump.

Because Rod was using the command-line terminal, each of these messages blocked whatever command he tried to type. Just before he could finish entering the SLIP-disable command, another message would wipe it out. Rod furiously tapped the keys time and time again, trying to type the command in and hit ENTER before a new message appeared. After several tries, he finally managed to get it in:


Rod felt relieved; he made a little mess, but was able to clean it up before The Sorcerer would ever find out. Or did he? Look closely, have you spotted it? The comma ... the teensy, insignificant little comma? Rod had set another Core Dump trap.

At that point, the basement was full of mops and buckets, and Rod was sloshing around in an ocean of trouble. The poor mainframe, as powerful as it was, struggled mightily to dump the memory of every running process two times over. And on top of that, a new message started to appear: "SYS1.SVCDUMP IS FULL." There was no way Rod could type in anything to The Mainframe.

With things so desperate, Rod had no choice but to summon The Sorcerer back to work. As The Mainframe crashed and grinded to a halt, Rod nervously awaited his mentor's return. New and more critical system errors were cropping up by the minute.

In what seemed like hours, The Sorcerer arrived in the basement and rushed over to the mainframe. Without saying a word, he looked at Rod, shook his head in disappointment, and sprinkled the necessary potions on The Mainframe. And like that, all the SLIP traps were swept away.

Needless to say, it was a very long time before Rod ever sat at The Mainframe again.

[Advertisement] BuildMaster allows you to create a self-service release management platform that allows different teams to manage their applications. Explore how!