Simultaneously sending and receiving overlapping arrays is undefined MPI behaviour. When arrays should be swapped, one must instead use a buffer, or the less efficient Sendrecv_replace method.
Any function doing direct statevector or buffer swaps (e.g. oneQubitDepolarising()) must be refactored to use safe non-overlapping buffers.