@Theo: I vote for what (I think) lots of people are saying: if the file system delays writing of data to improve performance, it should delay renames and truncates as well so you don't get *complete* data loss in the event of a crash... Why have a journaled file system if it allows you to lose both the new *and* the old data on a crash rather than just the new data that couldn't be written in time?
It's true that this situation won't happen if the system never crashes, and it's great that this is true of your system - but in that case, why not just use ext2?
If ext3 also allows this, I'd say there's a problem with ext3 too.
Incidentally, I just ended up with a ton of trashed object files due to a kernel panic in the middle of a build. But I wouldn't say gcc is a crappy application!
PS. Other than this bug, ext4 rocks.