ISP!

I think I know what's wrong... I'll be right back... Yup... It's this problem...
http://code.google.com/p/arduino/issues/detail?id=730

avrdude: Send: 0 [30] [20] <-- signon
avrdude: Send: 0 [30] [20] <-- signon
avrdude: Send: 0 [30] [20] <-- signon
avrdude: Recv: . [14] <-- ready (reply to signon #1 or #2)
avrdude: Recv: . [10] <-- ready (reply to signon #1 or #2)

avrdude: Send: A [41] . [80] [20] <-- send me hardware version
avrdude: Recv: . [14] <-- ready (reply to signon #2 or #3) (Oops! Reply is to the wrong message!)
avrdude: Recv: . [10] <-- ready (reply to signon #2 or #3) (Oops! Reply is to the wrong message!)

avrdude: Recv: . [14] <-- my hardware version is...
avrdude: Send: A [41] . [81] [20] <-- send me software version (major)
avrdude: Recv: . [02] <-- 2 (Oops! We are way out of synchronization at this point!)
avrdude: Send: A [41] . [82] [20] <-- send me software version (minor)
avrdude: Recv: . [10] <-- got it? (At this point, we're never going to recover.)

I really do not like the proposed solution. I believe it "dead-locks" the ISP sketch. It looks like the board has to be reset (restart the sketch) after each use. Would you mind if we work on a better solution?