Writing

Feed Software, technology, sysadmin war stories, and more.

Tuesday, September 27, 2011

My first race condition: breaking our first CD player

I seem to have a knack for discovering race conditions or other corner cases in bits of technology. This is usually software, but not always. My first race condition discovery seems to have been in a piece of hardware.

Back in the mid-80s, Pioneer came out with a CD player which was a 6-disc changer. This was a rather expensive toy for our family, and it was brand new. It stored discs in a magazine, and had a big tempting [EJECT] button. Pushing that button yielded a satisfying *click* and then the magazine would pop out an inch or so.

If the magazine wasn't in the device yet, it would put up a little error, doing the best it could with its 7-segment display: "dISC".

For some reason, I started thinking about this: if it's out, you get the error. If it's in, it pops it out. At what point does it change over? How does it know?

I decided to find out the only way I knew how: by testing it. First, I ejected the magazine. Thunk. Okay. Then I pushed eject. dISC. Okay. So I started pushing the magazine back in slowly with one hand while pushing eject with the other.

dISC.

dISC.

dISC.

Then... uh oh. There was a horrible whirring sound. It had started trying to fetch a disc but it wasn't actually in yet! I tried to move it and it wouldn't move. Oh no. I had just killed my family's expensive toy.

We did manage to get it down to a shop which was able to fix it, but it set the stage for discovering design issues in all sorts of devices. Once you find out that things might be exploited if you pay enough attention and try seemingly innocent button presses, your world changes forever.