Pondering the interleave between logging and error reporting led me to an interleave between error reporting and itself.
vreport() prints a single line to stderr in several parts: * Timestamp (if enabled) * Guest name (if enabled) * Program name * Location (if there is one) * Message type * Message text * Newline Stdio guarantees that each part comes out as a whole even when other threads print to the same FILE at the same time. But another thread's print output can still squeeze in between parts. Unlikely, but possible. To avoid it, we'd need to guard vreport()'s printing with flockfile() ... funlockfile(). Thoughts?