diff --git a/src/ior.c b/src/ior.c index 57f385d..5e343d1 100755 --- a/src/ior.c +++ b/src/ior.c @@ -1946,6 +1946,13 @@ static IOR_offset_t WriteOrRead(IOR_param_t *test, IOR_results_t *results, hitStonewall = ((test->deadlineForStonewalling != 0 && (GetTimeStamp() - startForStonewall) > test->deadlineForStonewalling)) || (test->stoneWallingWearOutIterations != 0 && pairCnt == test->stoneWallingWearOutIterations) ; + + if ( test->collective && test->deadlineForStonewalling ) { + // if collective-mode, you'll get a HANG, if some rank 'accidentally' leave this loop + // it absolutely must be an 'all or none': + MPI_CHECK(MPI_Bcast(&hitStonewall, 1, MPI_INT, 0, MPI_COMM_WORLD), "hitStonewall broadcast failed"); + } + } if (test->stoneWallingWearOut){ if (verbose >= VERBOSE_1){