Hi Piotr,
I was facing the same issue, and the issue is caused by Schmidl-Cox sometimes detecting the packet boundaries a little late. This cannot really be helped, as channel noise may force the correlator to detect a peak/plateau later than it should. I have found a couple of ways to overcome this problem:
a) After every packet, send a stream of maybe 10 "0"s. This ensures that even if one packet is detected a symbol late, the subsequent packet has enough room to be detected. The way to implement this is by having another tagged stream of "0"s, the tag being packet_length. At the transmitter side, pass the symbols from the TX block into one input of a tagged-stream-mux, and the tagged stream of "0"s into the other input of the tagged stream mux.
b) In the header-payload demux, 'consume' a few symbols lesser than you need to. That way, you won't accidentally eat up the peak trigger from the next packet. As was discussed in a different thread, this is an unclean solution -- a hack!
Hope that helps, and happy hacking!
Best regards,
Aditya