Attempts to pack an empty std::vector result in undefined behavior.
This:
msgpack::sbuffer msgBuf;
std::vector<char> data(0);
msgpack::pack(msgBuf, data);
ultimately calls data.front():
//vector_char.hpp:54
o.pack_bin_body(&v.front(), size);
which is only valid on a vector of nonzero length.