Heh. This bug changed from a mysterious problem with different versions of flac into a much simpler one when writing up the report.
I have a file that flac -t says is ok, but when I try to decode it, it says
01 - Track 1.flac: ERROR while decoding data
state = FLAC__STREAM_DECODER_READ_FRAME
I have finally discovered that this is because I'm out of disk space. This is probably a common enough issue when dealing with big audio files that it warrants a more specific error message. (strace shows write() returning ENOSPC.)