Almost certainly a race condition, when I look at the offending code.
I never saw this on an iMac, but with a multi-core Mac Pro I get it every single time. An annoyance, for sure.
I'll try to look at this one this week-end.
Ok, try this patch (for Arduino-0015):http://clevermonkey.org/arduino/Sizer-patch.zip
How you patch an installed Arduino IDE is platform dependent. I can't figure out how to tweak the classpath on OS X, but I suspect it involves hacking the Info.plist in the .app. If someone figures this out, please reply back with instructions.
Windows users can probably unzip this into the directory (you may have to create it) referred to in the run.bat (this same directory is also known to the Arduino.exe.)
I don't know where you put it for Linux.
In a nutshell: unzip this file into a location that is before any of the Arduinbo jarfiles on the CLASSPATH, making sure to preserve the path. Restart Arduino.
I'll post the code back to the right place once I convince myself my approach is sane. I'm essentially using Thread.join() to force the IDE to wait for the stdout/stderr threads to be setup until trying to start the avr-size process. Under the right circumstances the MessageSiphon threads would not even be near complete by the time the avr-exit command has exited.
We really ought to switch to Java 5 and ProcessBuilder for this