I think I found a bug in lockcontention3.c: Line 126, MPI_Win_create creates a window of size RMA_SIZE (2048 bytes). Then, in case 9 of RMATest (line 249): MPI_Put( source, longcount, MPI_INT, master, OFFSET_1, longcount, MPI_INT, win ); longcount is 512 OFFSET_1 is 7 longcount * sizeof(int) + OFFSET_1 is > 2048, and we have a buffer overrun. I think on some platforms this test case will still work since the memory we are talking about is less than a page. I didn’t check the other tests for the same problem yet. Here’s a fix: diff --git a/test/mpi/rma/lockcontention3.c b/test/mpi/rma/lockcontention3.c index d70e26c..f42ff62 100644 --- a/test/mpi/rma/lockcontention3.c +++ b/test/mpi/rma/lockcontention3.c @@ -123,7 +123,7 @@ int main( int argc, char *argv[] ) srcbuf = malloc(RMA_SIZE*sizeof(*srcbuf)); assert(srcbuf); - MPI_Win_create( rmabuffer, bufsize, sizeof(int), MPI_INFO_NULL, + MPI_Win_create( rmabuffer, bufsize*sizeof(int), sizeof(int), MPI_INFO_NULL, MPI_COMM_WORLD, &win ); /* Run a sequence of tests */
participants (1)
-
Archer, Charles J