Sometimes the smallest coding mistakes create the biggest headaches. Dave Plummer, the legendary Microsoft engineer who gave us Windows Task Manager and ported the beloved Space Cadet Pinball to Windows NT, recently came clean about his most embarrassing programming blunder. His Windows Pinball CPU bug turned a simple game into a resource-hungry monster that could eat an entire processor core.
The Innocent Beginning of a CPU-Crushing Bug
Back in the 1990s, Plummer was tasked with porting the original Space Cadet Pinball from its assembly code origins to Windows NT. He converted chunks of assembly into C and built a game engine to handle video and sound. Everything seemed fine on his MIPS R4000 machine running at a modest 200 MHz.
“If I was having a good day, it would run at 60 to 90 frames per second,” Plummer recalled on his Dave’s Attic YouTube channel. “And I figured that’s plenty for a game like that.”
The problem? His game engine had a critical flaw – it would draw frames as fast as the hardware could handle, with no speed limiter in place.
When Hardware Evolution Made Everything Worse
Fast forward a few years, and computer processors had become significantly more powerful. What started as a harmless oversight turned into a performance nightmare. The Windows Pinball CPU bug meant the game was now consuming an entire CPU core just to play a simple pinball game.
“Fast forward a couple of years later, somebody notices that on multi-core machines, it’s using an entire core to play Pinball at all times,” Plummer laughed during his confession. “It was still drawing as fast as it could, but it was now drawing at like, 5,000 frames per second, because machines were much much faster than they used to be.”
Raymond Chen Saves the Day
Enter Raymond Chen, another Microsoft veteran who became the hero of this story. Chen tracked down the source of the problem and discovered that Pinball had no frame rate limiter – it was simply rendering frames as fast as the hardware allowed.
When Chen enabled debug code to display the frame rate, he found three asterisks instead of numbers. The computers had become so fast that the frame rate exceeded three digits.
Chen’s solution was elegant: add a frame rate limiter capped at 100 frames per second. The result was dramatic – CPU usage dropped to approximately one percent.
“My proudest moment in Windows development,” Chen said during an interview on Dave’s Garage channel, “was I fixed Pinball so you could kick off a build and play Pinball at the same time.”
The Culture of Perfection at Microsoft
Plummer categorizes this Windows Pinball CPU bug as the worst Windows bug he ever shipped. But what makes this story even more interesting is how Microsoft’s culture treated programming mistakes back then.
“If you had a bug that actually made it into the product and required work in a Service Pack, that was never a laughing matter,” Plummer explained. “That was kind of a shameful thing.”
The pressure was intense. Daily build breaks could result in harsh criticism from Windows legend Dave Cutler, who would suggest that whoever checked in problematic code might have been drinking on the job.
“It was all fun and games until you shipped it. And then it was really serious,” Plummer remembered.
Lessons from a Classic Programming Mistake
This story perfectly illustrates how programming bugs can evolve over time. What worked fine on slower hardware became a significant problem as technology advanced. The Windows Pinball CPU bug serves as a reminder that performance optimization isn’t just about making things faster – sometimes it’s about preventing them from running too fast.
Modern game developers routinely implement frame rate limiting and V-sync to prevent similar issues. But back in the 1990s, when processors were measured in single-digit gigahertz, it was easier to overlook such concerns.
Why This Bug Matters Today
While Plummer and Chen can laugh about the Pinball incident now, it highlights important principles that still apply to modern software development:
- Always implement resource limits – Even simple applications should have safeguards against runaway resource consumption
- Test on various hardware configurations – What works on development machines might behave differently on user systems
- Monitor performance metrics – Tools like Windows Task Manager (ironically, another Plummer creation) help identify resource-hungry applications
- Plan for hardware evolution – Code that seems efficient today might become problematic as hardware capabilities change
Frequently Asked Questions
Who is Dave Plummer and what did he create at Microsoft?
Dave Plummer is a former Microsoft software engineer famous for creating Windows Task Manager, adding ZIP file support to Windows, and porting Space Cadet Pinball to Windows NT. He worked on multiple Windows versions including Windows 95, NT, and XP.
What exactly was wrong with the Windows Pinball game?
The game engine had no frame rate limiter, causing it to render frames as fast as the hardware could handle. On newer, faster computers, this meant the game ran at over 5,000 frames per second while consuming an entire CPU core.
How was the Windows Pinball CPU bug fixed?
Microsoft engineer Raymond Chen identified the problem and added a frame rate limiter that capped the game at 100 frames per second. This reduced CPU usage from nearly 100% to approximately 1%.
Why didn’t this bug appear on older computers?
The bug existed from the beginning, but older computers weren’t powerful enough to reveal the problem. Plummer developed the game on a 200 MHz MIPS R4000 processor, where the unlimited frame rate resulted in a reasonable 60-90 fps.
Is this considered Dave Plummer’s worst programming mistake?
According to Plummer himself, yes. He calls the Windows Pinball CPU bug the worst Windows bug he ever shipped, though he notes that Microsoft’s culture at the time made any production bug a serious matter.
What happened to Space Cadet Pinball in later Windows versions?
Space Cadet Pinball was last included in Windows XP. Microsoft removed it from Vista and later versions, partly due to the complications involved in porting 32-bit code to 64-bit architecture.
Does Dave Plummer still work at Microsoft?
No, Dave Plummer retired from Microsoft and now runs a popular YouTube channel called “Dave’s Garage” where he shares programming stories and technical insights. He’s also written a book about autism and his career experiences.
The Lasting Legacy of a Simple Mistake
The Windows Pinball CPU bug story reminds us that even experienced programmers make mistakes that can have unexpected consequences years later. What makes this tale special isn’t just the technical details, but how it shows the human side of software development.
Plummer’s willingness to share this embarrassing moment publicly demonstrates the kind of transparency that helps other developers learn from past mistakes. In an era where software quality is more critical than ever, stories like this serve as valuable lessons about the importance of thorough testing, resource management, and planning for future hardware capabilities.
The next time you see a game or application consuming too much CPU, remember Dave Plummer’s Pinball bug. Sometimes the biggest performance problems come from the smallest oversights – and the best solutions often involve simply knowing when to slow things down.