It just so happened that it had a vtbl pointer in it in the case where I left in WITH_VTABLE, which was educational, but shows exactly why we should only serialize PODs (because pointers have no meaning after serialization).
But what if I were serializing over a pipe and the box on the other side were also a 32-bit Ubuntu box with the same executable? I'm guessing that it would still fail because that 8c68 0804 is a pointer to some vtable in the code segment, which could be different even on different runs on the same machine? So that information would be useless.