bug fix: bookmark goes beyond read barrier

RPC marshaling is done with a buffer. IO threads reads from
head of the buffer, and worker threads append reply message
to end of the buffer. To reduce lock contension between IO
threads and worker threads, the buffer provides a snapshot
of current tail position (read barrier). IO thread may read
till this point without holding any locks.

In order to add size info to RPC packets, we have to write a
placeholder at the begining of a packet, and update it when
message body is fully written and the size is determined.
Issue #3 happens when read barrier goes behind a placeholder,
which means a not-ready-yet segment is exposed to IO threads.

This commit should fix issue #3 by disallowing the behavior
mentioned above.