When MP sends are largish, they are broken down into smaller packets.
If multiple threads are sending to the same destination and to the same tag, MP has a mechanism to block subsequent sends to the same destination and tag, until the first send is complete, but allowing other sends to interleave.
However, it isn't working as designed (due to a small bug), consequently multiple sends to the same target / same tag, can cause "MultiPacketHandler: protocol error" errors to be seen on receipt at the destination.
There are not many implementations that communicate in this way, but a recent new one (in 7.x) in the new KJ does and can hit this error.
Another is lookup join broadcast, involving channels. But in that case, it has a mutex that explicitly avoids the issue, which I believe is unnecessary once this bug is fixed.