Go (as of 1.9 at least) reports os.Stdin as an io.Seeker, however when receiving stdin as a pipe, any seek attempt later on will fail. In msgp's case this breaks when valid input is being piped in.
I've whipped up an extra check that tries to detect this situation and fallback to non-io.Seeker appropriately.
patch-stdin-seeker-workaround.txt