MPI_Send and MPI_Recv are not sending concurrent data from replica_sender -> compute_receiver and replica_sender -> replica_receiver. So in case of compute_sender failure err_handler is not getting invoked and some other rank do the MPI_Comm_shrink from which replica_sender is automatically neglected.
This isn't the way it should work.