One of the interesting bugs I dealt with on the Xbox 360 wasn't very exciting from a "how found" perspective, but rather from the duration it was open and the edit history of it. In the very beginning of development for the console I was working on testing the Win32 File IO APIs, unfortunately, the CancelIo function wasn't implemented in the initial port from Xbox1 (as this method was added after the original console shipped so it wasn't a part of the original Operating System). At the end of March, 2004 I opened a work item tracking bug for the API.
Bug XXXX: CancelIo needs to be implemented
3/30/2004 10:12 AM Opened by josh (Bug xxxx)
Bug to track the progress of CancelIo()
4/6/2004 1:45 PM Edited by developer 1
Pushing file system work out to late summer.
10/22/2004 11:41 AM Edited by developer 1
Guess what... punting again.
A whole stream of punts then follow (most without comments) done by either the developer or the War Team. The ones with comments document the plight of the developer who is punting the bug himself so it doesn't show up on the War Team's bug query. Then there are times when War Team caught him and punted anyway. But around June, things got serious again:
6/7/2005 12:09 PM Edited by test manager
if we have to have this, do the work.
6/28/2005 11:16 AM Resolved as Won't Fix by developer 1
Just not going to be able to do this.
6/29/2005 4:19 PM Activated by josh
7/23/2005 3:33 PM Assigned by developer 1 to program manager 1
Dumping this on you for now.
Then, six months later in January (which is after the Xbox 360 launch in November of 2005), an email is spun up between the developer, two program managers and myself, where the need for this API is being justified. The paraphrased conversation goes something like this:
From: program manager 2
Sent: Tuesday, January 24, 2006 11:19 PM
Subject: Bug xxxx: CancelIo needs to be implemented
Bug makes for an interesting and humorous read, but it’s not clear to me what the ramifications of not having it are nor what the priority and timing should be.
From: program manager 1
Sent: Wed 1/25/2006 9:45 AM
It would bring us closer to parity with xbox. josh can outline the scenarios in which he thinks we need it.
Sent: Wednesday, January 25, 2006 9:58 AM
Having it allows game and system app developers to do some cleanup before something major happens (unloading sys app, game changing levels, rebooting into another executable, etc.)
Its the kind of thing we should have
The email contents are then added to the bug on February 1st:
2/1/2006 9:42 AM Edited by program manager 2
2/2/2006 12:21 PM Resolved as Won't Fix by program manager 2
4/19/2006 12:30 PM Activated by developer support
Not fixing the issue has become a big issue for some developers, who are keen to optimize streaming perf.
Then there is another stream of punts (again, most without comments) done by the War Team, where the bug is moved to different milestones and passed around to various owners. In April, the original developer takes back control of the bug:
4/23/2007 1:58 PM Assigned by developer 1 to developer 1
4/25/2007 4:58 PM Resolved as Fixed by developer 1
Way back in Xbox 1 days, I removed large chunks of the I/O manager to simplify, simplify, simplify. One of the chunks I removed was related to I/O request cancellation. I lamely thought that game developers didn’t need to do this. After the Xbox 1 kernel shipped, it was effectively frozen, so I couldn’t add new features like I can now. A request for CancelIo came along and I implemented it entirely in a title library by poking into the IDE driver’s data structures. That was thrown away for the 360 port, but there was too much other work to do to get proper cancellation back in the kernel. I’ve finally fixed the missing cancel APIs.
4/25/2007 4:58 PM Edited by developer 1
Has it really been three years?
I guess if there is a moral to the story it would be around persistence, some bugs are worth keeping alive and fighting for.
Do you have a bug whose story you love to tell? Let me know!