в чем ее суть
в том, что процесс с rank == 0 посылает сообщение самому себе, и это становится для него неожиданностью.
как с ней бороться
как вариаент -- не посылать сообщение самому себе из процесса с rank == 0. Например так:
if(rank == 0){
for(size_t i = 1; i < size; i++){
надо будет, конечно, пересмотреть все места где работа разделяется на
size
частей, и скорректировать для
size - 1
.