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?


Reply via email to