------- Forwarded Message

From: Nicholas Nevin -SMCC - High Performance Computing <nevin@caja.East.Sun.COM>
Subject: Re: MPI Test Suite 
To: lusk@mcs.anl.gov

> That would be great, if it isn't too inconvenient. 
> Of course we would like to
> think that we have found all the bugs, but anyone who actually claims such a
> thing doesn't actually do software....

Amen to that. Here are the patches. The SCCS logs may help show what we 
thought the problem was. If you need any help interpreting them let me know.

Regards, Nick.

P.S. The patches where made relative to .../MPITEST/Test/


- --Murder_of_Crows_507_000
Content-Type: TEXT/plain; name=diffs; charset=us-ascii; x-unix-mode=0664
Content-Description: diffs
Content-MD5: fFDRSpVxIGGyqOVNqJ91qw==


- ------- node.c -------
*** /tmp/dyFzS__	Thu May 21 16:08:58 1998
- --- ./c/collective/functional/MPI_collective_message/node.c	Fri Apr 10 11:45:23 1998
***************
*** 45,51 ****
  #include "mpitest_cfg.h"
  #include "mpitest.h"
  
! #define MPITEST_SEND_LENGTH 4096
  
  /*-----------------------------------------------------------------------------
  Pre-collective operation:
- --- 45,51 ----
  #include "mpitest_cfg.h"
  #include "mpitest.h"
  
! #define MPITEST_SEND_LENGTH 1024
  
  /*-----------------------------------------------------------------------------
  Pre-collective operation:
***************
*** 132,143 ****
  	stat;
  
      fail = 0;
- -     send_buffer[0] = tag;
- -     recv_buffer[0] = 0;
      if (partner != MPI_UNDEFINED)
      {
  	if (side == 1)
  	{
              ierr = MPI_Recv(recv_buffer, MPITEST_SEND_LENGTH, MPI_INT, partner,
  			    tag, MPI_COMM_WORLD, &stat);
      	    if (ierr != MPI_SUCCESS)
- --- 132,144 ----
  	stat;
  
      fail = 0;
      if (partner != MPI_UNDEFINED)
      {
  	if (side == 1)
  	{
+     	    send_buffer[0] = tag;
+     	    recv_buffer[0] = 0;
+ 
              ierr = MPI_Recv(recv_buffer, MPITEST_SEND_LENGTH, MPI_INT, partner,
  			    tag, MPI_COMM_WORLD, &stat);
      	    if (ierr != MPI_SUCCESS)
***************
*** 220,225 ****
- --- 221,227 ----
  	*result_dsplsary,
  	 send_buf[MPITEST_SEND_LENGTH],
  	 recv_buf[MPITEST_SEND_LENGTH];
+     void *ubval;
  
      char
  	  info_buf[256],/* buffer for passing mesages to MPITEST  */
***************
*** 266,272 ****
  	partner = MPITEST_me - 1;
      side = MPITEST_me%2;
  
!     ierr = MPI_Attr_get(MPI_COMM_WORLD, MPI_TAG_UB, &value, &ub);
  
      /*
       * Allocate memory for the various collective structures
- --- 268,275 ----
  	partner = MPITEST_me - 1;
      side = MPITEST_me%2;
  
!     ierr = MPI_Attr_get(MPI_COMM_WORLD, MPI_TAG_UB, &ubval, &ub);
!     ub = *((int *) ubval);
  
      /*
       * Allocate memory for the various collective structures

- ------- node.c -------
*** /tmp/d0TG55Q	Thu May 21 16:08:59 1998
- --- ./c/datatype/functional/MPI_Pack_basic_type/node.c	Fri Feb 27 10:55:42 1998
***************
*** 102,108 ****
       value;             /*  dataTemplate for initializing buffers             */
  
     char *in_buffer, *packed_buffer, *buf_ptr;  /* message buffer              */
- - 
     char
       info_buf[256],     /*  buffer for passing mesages to MPITEST             */
       testname[128];     /*  the name of this test                             */
- --- 102,107 ----
***************
*** 335,341 ****
  		  }
  
  		  /* Also initialize the unused data buffer as well */
! 		  for (i = length * extent; i < max_length + MPITEST_ADD_BUFSIZE; i++) {
  		     in_buffer[i] = -1 * MPITEST_current_rank;
  		  }
  	       }
- --- 334,341 ----
  		  }
  
  		  /* Also initialize the unused data buffer as well */
! 		  for (i = (length - 1) * extent + acc;
! 		       i < max_length + MPITEST_ADD_BUFSIZE; i++) {
  		     in_buffer[i] = -1 * MPITEST_current_rank;
  		  }
  	       }
***************
*** 373,381 ****
  
  		  position = 0;
  
- - 		  buf_ptr = in_buffer;
- - 
  		  for (i = 0; i < length; i++) {
  		     for (type_count = 0; type_count < basic_types; type_count++) {
  			test_type = MPITEST_get_datatype(type_count);
  
- --- 373,380 ----
  
  		  position = 0;
  
  		  for (i = 0; i < length; i++) {
+ 		      buf_ptr = in_buffer + i * extent;
  		     for (type_count = 0; type_count < basic_types; type_count++) {
  			test_type = MPITEST_get_datatype(type_count);
  
***************
*** 524,529 ****
- --- 523,529 ----
  		  position = 0;
  		  buf_ptr = in_buffer;
  		  for (i = 0; i < length; i++) {
+ 		     buf_ptr = in_buffer + i * extent;
  		     for (type_count = 0; type_count < basic_types; type_count++) {
  			test_type = MPITEST_get_datatype(type_count);
  			

- ------- node.c -------
*** /tmp/d.HDjq_	Thu May 21 16:08:59 1998
- --- ./c/datatype/functional/MPI_Pack_user_type/node.c	Fri Feb 27 12:28:32 1998
***************
*** 312,318 ****
  			  length_count, comm_count, length, test_nump, comm_type, extent, root);
  		  MPITEST_message(MPITEST_INFO1, info_buf);
  	       }
! 	       
  	       /* Initialize send & recv buffer */
  	       if (MPITEST_current_rank != root) {
  		  for (i = 0; i < max_length + MPITEST_ADD_BUFSIZE; i++) {
- --- 312,321 ----
  			  length_count, comm_count, length, test_nump, comm_type, extent, root);
  		  MPITEST_message(MPITEST_INFO1, info_buf);
  	       }
! 
! 	       memset(in_buffer, -1 * MPITEST_current_rank,
! 		       max_length + MPITEST_ADD_BUFSIZE);
! 
  	       /* Initialize send & recv buffer */
  	       if (MPITEST_current_rank != root) {
  		  for (i = 0; i < max_length + MPITEST_ADD_BUFSIZE; i++) {
***************
*** 335,345 ****
  			acc += type_sizes[j];
  		     }
  		  }
- - 
- - 		  /* Also initialize the unused data buffer as well */
- - 		  for (i = length * extent; i < max_length + MPITEST_ADD_BUFSIZE; i++) {
- - 		     in_buffer[i] = -1 * MPITEST_current_rank;
- - 		  }
  	       }
  
  	       loop_cnt++;
- --- 338,343 ----
***************
*** 400,406 ****
  		     MPITEST_message(MPITEST_INFO2, info_buf);
  		  }
  #endif
! 		  /* Sending packed message size to receiver */
  
  		  sprintf(info_buf, "Sending message size from source: %d to %d, tag: %d", root, dest, tag + 1);
  		  MPITEST_message(MPITEST_INFO1, info_buf);
- --- 398,413 ----
  		     MPITEST_message(MPITEST_INFO2, info_buf);
  		  }
  #endif
! #ifdef MPITEST_DISP_BUF
! 		  sprintf(info_buf, "Displaying PACKED Sender's data buffer:");
! 		  MPITEST_message(MPITEST_INFO2, info_buf);
! 
! 		  for (i = 0; i < pack_size + MPITEST_ADD_BUFSIZE; i++) {
! 		     sprintf(info_buf, "buffer[%d] = %d", i, packed_buffer[i]);
! 		     MPITEST_message(MPITEST_INFO2, info_buf);
! 		  }
! #endif
! 		/* Sending packed message size to receiver */
  
  		  sprintf(info_buf, "Sending message size from source: %d to %d, tag: %d", root, dest, tag + 1);
  		  MPITEST_message(MPITEST_INFO1, info_buf);
***************
*** 448,454 ****
  		  sprintf(info_buf, "Receiving PACKED data from source: %d to %d, tag: %d", root, dest, tag);
  		  MPITEST_message(MPITEST_INFO1, info_buf);
  
! 		  ierr = MPI_Recv(packed_buffer, position, newtype,
  				  root, tag, comm, &status);
  		  if (ierr != MPI_SUCCESS) {
  		     fail++;
- --- 455,461 ----
  		  sprintf(info_buf, "Receiving PACKED data from source: %d to %d, tag: %d", root, dest, tag);
  		  MPITEST_message(MPITEST_INFO1, info_buf);
  
! 		  ierr = MPI_Recv(packed_buffer, position, MPI_PACKED,
  				  root, tag, comm, &status);
  		  if (ierr != MPI_SUCCESS) {
  		     fail++;

- ------- node.c -------
*** /tmp/dot6Qm_	Thu May 21 16:08:59 1998
- --- ./c/datatype/functional/MPI_Type_free_pending_msg/node.c	Thu Apr  9 14:20:31 1998
***************
*** 573,578 ****
- --- 573,599 ----
  		  }
  	       }
  
+ /*
+  * Need to call MPI_Wait() for the matching MPI_Isend() on the root.  This needs to
+  * be done prior to freeing the buffer.  Otherwise, this test is erroneous as the
+  * buffer can be freed prior to the data being sent.  (Don't laugh, it happend using
+  * the TCP PM).  This test was relying on the last MPI_Barrier() to progress the
+  * MPI_Isend().  I would imagine there is a memory leak also since the send requests
+  * would never be freed.
+  * 3/27/98 rolfv
+  */
+ 	       if (MPITEST_current_rank == root) {
+ 		   sprintf(info_buf, "Waiting for the MPI_Isend() to complete\n");
+ 		   MPITEST_message(MPITEST_INFO2, info_buf);
+ 		   ierr = MPI_Wait(&request, &status);
+ 		   if (ierr != MPI_SUCCESS) {
+ 		       sprintf(info_buf, "MPI_Wait() returned %d", ierr);
+ 		       MPITEST_message(MPITEST_NONFATAL, info_buf);
+ 		       MPI_Error_string(ierr, &info_buf[0], &size);
+ 		       MPITEST_message(MPITEST_FATAL, info_buf);
+ 		   }
+ 	       }
+ 
  	       free(buffer);
  
  #ifdef MPITEST_SYNC

- ------- node.c -------
*** /tmp/d0ChZGk	Thu May 21 16:08:59 1998
- --- ./c/grp_ctxt_comm/functional/MPI_Group_difference1/node.c	Fri Apr 10 08:18:24 1998
***************
*** 119,127 ****
  	    }       /* Error Test  */
  	    loop_cnt++;
  
- - 
- - 
- - 
  	    /* difference with itself */
  	    ierr = MPI_Group_difference (group, group, &group2);
  	    if (ierr != MPI_SUCCESS)
- --- 119,124 ----
***************
*** 134,140 ****
  	    }       /* Error Test  */
  	    loop_cnt++;
  
! 	    if (group2 != MPI_GROUP_EMPTY)
  	    {
  		fail++;
  		sprintf(info_buf, "MPI_Group_difference(group, group) did not return MPI_GROUP_EMPTY (comm_index %d)", comm_index);
- --- 131,147 ----
  	    }       /* Error Test  */
  	    loop_cnt++;
  
! 	    ierr = MPI_Group_compare(group2, MPI_GROUP_EMPTY, &result);
! 	    if (ierr != MPI_SUCCESS)
! 	    {
! 		sprintf(info_buf, "Non-zero return code (%d) from MPI_Group_difference(group, group)  (comm_index %d)", ierr, comm_index);
! 		MPITEST_message(MPITEST_NONFATAL, info_buf);
! 		MPI_Error_string(ierr, &info_buf[0], &size);
! 		MPITEST_message(MPITEST_NONFATAL, info_buf);
! 		fail++;
! 	    }       /* Error Test  */
! 
! 	    if (result != MPI_IDENT)
  	    {
  		fail++;
  		sprintf(info_buf, "MPI_Group_difference(group, group) did not return MPI_GROUP_EMPTY (comm_index %d)", comm_index);
***************
*** 143,151 ****
  	    }
  	    loop_cnt++;
  
- - 
- - 
- - 
  	    /* difference with GROUP_EMPTY */
  	    ierr = MPI_Group_difference (MPI_GROUP_EMPTY, group, &group2);
  	    if (ierr != MPI_SUCCESS)
- --- 150,155 ----
***************
*** 158,164 ****
  	    }       /* Error Test  */
  	    loop_cnt++;
  
! 	    if (group2 != MPI_GROUP_EMPTY)
  	    {
  		fail++;
  		sprintf(info_buf, "MPI_Group_difference(EMPTY, group) did not return MPI_GROUP_EMPTY (comm_index %d)", comm_index);
- --- 162,178 ----
  	    }       /* Error Test  */
  	    loop_cnt++;
  
! 	    ierr = MPI_Group_compare(group2, MPI_GROUP_EMPTY, &result);
! 	    if (ierr != MPI_SUCCESS)
! 	    {
! 		sprintf(info_buf, "Non-zero return code (%d) from MPI_Group_difference(EMPTY, group)  (comm_index %d)", ierr, comm_index);
! 		MPITEST_message(MPITEST_NONFATAL, info_buf);
! 		MPI_Error_string(ierr, &info_buf[0], &size);
! 		MPITEST_message(MPITEST_NONFATAL, info_buf);
! 		fail++;
! 	    }       /* Error Test  */
! 
! 	    if (result != MPI_IDENT)
  	    {
  		fail++;
  		sprintf(info_buf, "MPI_Group_difference(EMPTY, group) did not return MPI_GROUP_EMPTY (comm_index %d)", comm_index);
***************
*** 168,174 ****
  	    loop_cnt++;
  
  
- - 
  	    /* reverse difference with GROUP_EMPTY */
  	    ierr = MPI_Group_difference (group, MPI_GROUP_EMPTY, &group2);
  	    if (ierr != MPI_SUCCESS)
- --- 182,187 ----
***************
*** 236,242 ****
  	    }       /* Error Test  */
  	    loop_cnt++;
  
! 	    if (group2 != MPI_GROUP_EMPTY)
  	    {
  		fail++;
  		sprintf(info_buf, "MPI_Group_difference(group, world) did not return MPI_GROUP_EMPTY (comm_index %d)", comm_index);
- --- 249,265 ----
  	    }       /* Error Test  */
  	    loop_cnt++;
  
! 	    ierr = MPI_Group_compare(group2, MPI_GROUP_EMPTY, &result);
! 	    if (ierr != MPI_SUCCESS)
! 	    {
! 		sprintf(info_buf, "Non-zero return code (%d) from MPI_Group_difference(group, world)  (comm_index %d)", ierr, comm_index);
! 		MPITEST_message(MPITEST_NONFATAL, info_buf);
! 		MPI_Error_string(ierr, &info_buf[0], &size);
! 		MPITEST_message(MPITEST_NONFATAL, info_buf);
! 		fail++;
! 	    }       /* Error Test  */
! 
! 	    if (result != MPI_IDENT)
  	    {
  		fail++;
  		sprintf(info_buf, "MPI_Group_difference(group, world) did not return MPI_GROUP_EMPTY (comm_index %d)", comm_index);

- ------- node.c -------
*** /tmp/dcU07i_	Thu May 21 16:08:59 1998
- --- ./c/grp_ctxt_comm/functional/MPI_Group_excl1/node.c	Fri Apr 10 08:11:52 1998
***************
*** 362,368 ****
      }       /* Error Test  */
      loop_cnt++;
  
!     if (group != MPI_GROUP_EMPTY)
      {
  	sprintf(info_buf, "MPI_Group_excl of size 0 did not return MPI_GROUP_EMPTY)");
  	MPITEST_message(MPITEST_NONFATAL, info_buf);
- --- 362,369 ----
      }       /* Error Test  */
      loop_cnt++;
  
!     MPI_Group_compare(group, MPI_GROUP_EMPTY, &result);
!     if (result != MPI_IDENT)
      {
  	sprintf(info_buf, "MPI_Group_excl of size 0 did not return MPI_GROUP_EMPTY)");
  	MPITEST_message(MPITEST_NONFATAL, info_buf);

- ------- node.c -------
*** /tmp/d00ITzf	Thu May 21 16:08:59 1998
- --- ./c/grp_ctxt_comm/functional/MPI_Group_incl1/node.c	Fri Apr 10 08:13:55 1998
***************
*** 352,358 ****
      }       /* Error Test  */
      loop_cnt++;
  
!     if (group != MPI_GROUP_EMPTY)
      {
  	sprintf(info_buf, "MPI_Group_incl of size 0 did not return MPI_GROUP_EMPTY)");
  	MPITEST_message(MPITEST_NONFATAL, info_buf);
- --- 352,359 ----
      }       /* Error Test  */
      loop_cnt++;
  
!     MPI_Group_compare(group, MPI_GROUP_EMPTY, &result);
!     if (result != MPI_IDENT)
      {
  	sprintf(info_buf, "MPI_Group_incl of size 0 did not return MPI_GROUP_EMPTY)");
  	MPITEST_message(MPITEST_NONFATAL, info_buf);

- ------- node.c -------
*** /tmp/dQ5wpd_	Thu May 21 16:08:59 1998
- --- ./c/grp_ctxt_comm/functional/MPI_Group_intersection1/node.c	Fri Apr 10 08:18:50 1998
***************
*** 178,184 ****
  	    }       /* Error Test  */
  	    loop_cnt++;
  
! 	    if (group2 != MPI_GROUP_EMPTY)
  	    {
  		fail++;
  		sprintf(info_buf, "MPI_Group_intersection(EMPTY, group) did not return empty group (comm_index %d)", comm_index);
- --- 178,194 ----
  	    }       /* Error Test  */
  	    loop_cnt++;
  
! 	    ierr = MPI_Group_compare(MPI_GROUP_EMPTY, group2, &result);
! 	    if (ierr != MPI_SUCCESS)
! 	    {
! 		sprintf(info_buf, "Non-zero return code (%d) from MPI_Group_compare(empty, group)  (comm_index %d)", ierr, comm_index);
! 		MPITEST_message(MPITEST_NONFATAL, info_buf);
! 		MPI_Error_string(ierr, &info_buf[0], &size);
! 		MPITEST_message(MPITEST_NONFATAL, info_buf);
! 		fail++;
! 	    }       /* Error Test  */
! 
! 	    if (result != MPI_IDENT) 
  	    {
  		fail++;
  		sprintf(info_buf, "MPI_Group_intersection(EMPTY, group) did not return empty group (comm_index %d)", comm_index);
***************
*** 186,194 ****
  		MPI_Error_string(ierr, &info_buf[0], &size);
  	    }
  
- - 
- - 
- - 
  	    /* reverse intersection with GROUP_EMPTY */
  	    ierr = MPI_Group_intersection (group, MPI_GROUP_EMPTY, &group2);
  	    if (ierr != MPI_SUCCESS)
- --- 196,201 ----
***************
*** 201,215 ****
  	    }       /* Error Test  */
  	    loop_cnt++;
  
! 	    if (group2 != MPI_GROUP_EMPTY)
  	    {
  		fail++;
  		sprintf(info_buf, "MPI_Group_intersection(group, empty) did not return empty group (comm_index %d)", comm_index);
  		MPITEST_message(MPITEST_NONFATAL, info_buf);
  		MPI_Error_string(ierr, &info_buf[0], &size);
  	    }
- - 
- - 
  
  	    /* Get a group for the MPI_COMM_WORLD */
  	    ierr = MPI_Comm_group(comm, &groupworld);
- --- 208,230 ----
  	    }       /* Error Test  */
  	    loop_cnt++;
  
! 	    ierr = MPI_Group_compare(group2, MPI_GROUP_EMPTY, &result);
! 	    if (ierr != MPI_SUCCESS)
! 	    {
! 		sprintf(info_buf, "Non-zero return code (%d) from MPI_Group_compare(group, empty)  (comm_index %d)", ierr, comm_index);
! 		MPITEST_message(MPITEST_NONFATAL, info_buf);
! 		MPI_Error_string(ierr, &info_buf[0], &size);
! 		MPITEST_message(MPITEST_NONFATAL, info_buf);
! 		fail++;
! 	    }       /* Error Test  */
! 
! 	    if (result != MPI_IDENT) 
  	    {
  		fail++;
  		sprintf(info_buf, "MPI_Group_intersection(group, empty) did not return empty group (comm_index %d)", comm_index);
  		MPITEST_message(MPITEST_NONFATAL, info_buf);
  		MPI_Error_string(ierr, &info_buf[0], &size);
  	    }
  
  	    /* Get a group for the MPI_COMM_WORLD */
  	    ierr = MPI_Comm_group(comm, &groupworld);

- ------- node.c -------
*** /tmp/d0quMgb	Thu May 21 16:08:59 1998
- --- ./c/grp_ctxt_comm/functional/MPI_Group_range_excl1/node.c	Fri Apr 10 08:19:59 1998
***************
*** 368,374 ****
      }       /* Error Test  */
      loop_cnt++;
  
!     if (group != MPI_GROUP_EMPTY)
      {
  	sprintf(info_buf, "MPI_Group_range_excl of size 0 did not return MPI_GROUP_EMPTY)");
  	MPITEST_message(MPITEST_NONFATAL, info_buf);
- --- 368,375 ----
      }       /* Error Test  */
      loop_cnt++;
  
!     MPI_Group_compare(group, MPI_GROUP_EMPTY, &result);
!     if (result != MPI_IDENT)
      {
  	sprintf(info_buf, "MPI_Group_range_excl of size 0 did not return MPI_GROUP_EMPTY)");
  	MPITEST_message(MPITEST_NONFATAL, info_buf);

- ------- node.c -------
*** /tmp/dEipWZ_	Thu May 21 16:08:59 1998
- --- ./c/grp_ctxt_comm/functional/MPI_Group_range_incl1/node.c	Fri Apr 10 08:15:34 1998
***************
*** 356,362 ****
      }       /* Error Test  */
      loop_cnt++;
  
!     if (group != MPI_GROUP_EMPTY)
      {
  	sprintf(info_buf, "MPI_Group_range_incl of size 0 did not return MPI_GROUP_EMPTY)");
  	MPITEST_message(MPITEST_NONFATAL, info_buf);
- --- 356,363 ----
      }       /* Error Test  */
      loop_cnt++;
  
!     MPI_Group_compare(group, MPI_GROUP_EMPTY, &result);
!     if (result != MPI_IDENT)
      {
  	sprintf(info_buf, "MPI_Group_range_incl of size 0 did not return MPI_GROUP_EMPTY)");
  	MPITEST_message(MPITEST_NONFATAL, info_buf);

- ------- node.c -------
*** /tmp/d0eVGNX	Thu May 21 16:08:59 1998
- --- ./c/nonblocking/functional/MPI_Waitany/node.c	Wed Apr  1 09:24:54 1998
***************
*** 104,109 ****
- --- 104,117 ----
          bsend_buff[NUMMESG * (8*NUMELM + MPI_BSEND_OVERHEAD + 100)];
      /*-----------------------  MPI Initialization  --------------------------*/
  
+ /*
+  * Zero the status arrays. This works around the bogus testing of unset
+  * statuses later in this test. This is not a real fix but doing it right
+  * is too much effort. -njn.
+  */
+     memset(send_stat, 0, 4*NUMMESG*sizeof(MPI_Status));
+     memset(recv_stat, 0, 4*NUMMESG*sizeof(MPI_Status));
+ 
      /*
       * *  Initialize the MPI environment and test environment.
       */

- ------- node.c -------
*** /tmp/dvVKhE_	Thu May 21 16:09:00 1998
- --- ./c/nonblocking/functional/rings/node.c	Tue Mar 24 09:29:12 1998
***************
*** 447,453 ****
  void 
  get_cmd_opt(int argc, char *argv[])
  {
!    int i;
  
     while (i < argc) {
        if (!strcmp(argv[i], "-b")) {
- --- 447,453 ----
  void 
  get_cmd_opt(int argc, char *argv[])
  {
!    int i = 0;
  
     while (i < argc) {
        if (!strcmp(argv[i], "-b")) {

- ------- node.c -------
*** /tmp/d9WO_y_	Thu May 21 16:09:00 1998
- --- ./c/persist_request/functional/MPI_Request_free_p/node.c	Thu Apr 16 12:33:56 1998
***************
*** 507,517 ****
  
      }
  
! 
!     /* Detach the buffer, and free the dynamic memory */
!     berr = MPI_Buffer_detach(&buff, &bsize);
!     free(buff);
! 
  
      /* report overall results  */
  
- --- 507,517 ----
  
      }
  
!     if (MPITEST_me == 0) {
!         /* Detach the buffer, and free the dynamic memory */
!         berr = MPI_Buffer_detach(&buff, &bsize);
!         free(buff);
!     }
  
      /* report overall results  */
  

- ------- node.c -------
*** /tmp/d0ZJrrv	Thu May 21 16:09:00 1998
- --- ./c/topo/functional/MPI_Cart_shift_nonperiodic/node.c	Fri Apr  3 13:48:31 1998
***************
*** 291,298 ****
  
  	    for (m = 0; m < ndims; m++)
  	      test_coords[m] = coords[m];
! 	    test_coords[j] = exp_sorc;
! 	    MPI_Cart_rank(comm_cart, test_coords, &sorc_rank);
  	    if (sorc_rank != sorc)
  	    {
  	      sprintf(info_buf, "Source (%d/%d)  expected coord/rank (%d/%d)    Actual %d", j, k, exp_sorc, sorc_rank, sorc);
- --- 291,302 ----
  
  	    for (m = 0; m < ndims; m++)
  	      test_coords[m] = coords[m];
! 	    if (exp_sorc == MPI_PROC_NULL) {
! 		sorc_rank = MPI_PROC_NULL;
! 	    } else {
! 		test_coords[j] = exp_sorc;
! 	        MPI_Cart_rank(comm_cart, test_coords, &sorc_rank);
! 	    }
  	    if (sorc_rank != sorc)
  	    {
  	      sprintf(info_buf, "Source (%d/%d)  expected coord/rank (%d/%d)    Actual %d", j, k, exp_sorc, sorc_rank, sorc);
***************
*** 324,331 ****
  
  	    for (m = 0; m < ndims; m++)
  	      test_coords[m] = coords[m];
! 	    test_coords[j] = exp_dest;
! 	    MPI_Cart_rank(comm_cart, test_coords, &dest_rank);
  	    if (dest_rank != dest)
  	    {
  	      sprintf(info_buf, "Dest (%d/%d)  expected coord/rank (%d/%d)    Actual %d", j, k, exp_dest, dest_rank, dest);
- --- 328,339 ----
  
  	    for (m = 0; m < ndims; m++)
  	      test_coords[m] = coords[m];
! 	    if (exp_dest == MPI_PROC_NULL) {
! 		dest_rank = MPI_PROC_NULL;
! 	    } else {
! 	        test_coords[j] = exp_dest;
! 	        MPI_Cart_rank(comm_cart, test_coords, &dest_rank);
! 	    }
  	    if (dest_rank != dest)
  	    {
  	      sprintf(info_buf, "Dest (%d/%d)  expected coord/rank (%d/%d)    Actual %d", j, k, exp_dest, dest_rank, dest);

- ------- node.F -------
*** /tmp/dz6Iit_	Thu May 21 16:09:00 1998
- --- ./fortran/blocking/functional/MPI_Bsend_ator/node.F	Wed Apr  8 13:37:15 1998
***************
*** 514,527 ****
  C
  C               Detach buffer for BSEND
  C
!                   CALL MPI_BUFFER_DETACH(BSEND_BUFF, BUFFSIZE, IERR)
!                   IF (IERR .NE. 0) THEN
!                     INFOBUF=' '
!                     WRITE(INFOBUF,99) 'MPI_BUFFER_DETACH() returned',
       $                        IERR
!                     CALL MPITEST_MESSAGE(MPITEST_FATAL, INFOBUF)
!                   END IF
! 
                  CALL MPI_BARRIER(BARRIER_COMM, IERR)
                  IF (IERR .NE. MPI_SUCCESS) THEN
                    INFOBUF=' '
- --- 514,531 ----
  C
  C               Detach buffer for BSEND
  C
!                 IF ((INTER_FLAG .EQV. .FALSE.) .OR.
!      $              ((INTER_FLAG .EQV. .TRUE.) .AND.
!      $               (MPITEST_INTER .EQ. SEND_GROUP))) THEN
!                    CALL MPI_BUFFER_DETACH(BSEND_BUFF, BUFFSIZE, IERR)
!                    IF (IERR .NE. 0) THEN
!                       INFOBUF=' '
!                       WRITE(INFOBUF,99) 'MPI_BUFFER_DETACH() returned',
       $                        IERR
!                       CALL MPITEST_MESSAGE(MPITEST_FATAL, INFOBUF)
!                    END IF
!                 END IF
!                 
                  CALL MPI_BARRIER(BARRIER_COMM, IERR)
                  IF (IERR .NE. MPI_SUCCESS) THEN
                    INFOBUF=' '

- ------- node.F -------
*** /tmp/d0NwkYr	Thu May 21 16:09:00 1998
- --- ./fortran/datatype/functional/MPI_Type_contiguous_idispls/node.F	Fri Apr 10 10:42:29 1998
***************
*** 319,325 ****
       $                     INFOBUF)
                       END IF
  
!                      IF (EXTENT * LENGTH .GT. MAX_BUFF_SIZE) THEN
                          WRITE(INFOBUF, 120) 'Skipping length = ',
       $                     LENGTH,
       $                     ' (type extent * length = ', EXTENT, ' * ',
- --- 319,325 ----
       $                     INFOBUF)
                       END IF
  
!                      IF (EXTENT .GT. MAX_BUFF_SIZE / LENGTH) THEN
                          WRITE(INFOBUF, 120) 'Skipping length = ',
       $                     LENGTH,
       $                     ' (type extent * length = ', EXTENT, ' * ',

- ------- node.F -------
*** /tmp/dnjBPp_	Thu May 21 16:09:00 1998
- --- ./fortran/datatype/functional/MPI_Type_hindexed_types/node.F	Mon Apr 13 10:47:13 1998
***************
*** 95,101 ****
        INTEGER MPITEST_ADD_BUFSIZE
        PARAMETER (MPITEST_ADD_BUFSIZE = 20)
  
!       MPITEST_AINT DISPLS(MPITEST_CFGSIZ), DISPLS1(MPITEST_CFGSIZ)
  
        INTEGER COMM, STATUS(MPI_STATUS_SIZE)
  
- --- 95,101 ----
        INTEGER MPITEST_ADD_BUFSIZE
        PARAMETER (MPITEST_ADD_BUFSIZE = 20)
  
!       MPITEST_AINT DISPLS(MAX_BUFF_SIZE), DISPLS1(MAX_BUFF_SIZE)
  
        INTEGER COMM, STATUS(MPI_STATUS_SIZE)
  
***************
*** 107,113 ****
  
        INTEGER OLDTYPE, NEWTYPE, TYPES(MPITEST_CFGSIZ)
  
!       INTEGER BLKLENS(MPITEST_CFGSIZ), BLKLENS1(MPITEST_CFGSIZ)
  
        INTEGER TYPE_SIZES(MPITEST_CFGSIZ)
  
- --- 107,113 ----
  
        INTEGER OLDTYPE, NEWTYPE, TYPES(MPITEST_CFGSIZ)
  
!       INTEGER BLKLENS(MAX_BUFF_SIZE), BLKLENS1(MAX_BUFF_SIZE)
  
        INTEGER TYPE_SIZES(MPITEST_CFGSIZ)
  
***************
*** 321,327 ****
                          CALL MPITEST_MESSAGE(MPITEST_INFO1,
       $                     INFOBUF)
                       END IF
!                   ELSE IF (EXTENT * LENGTH .GT. MAX_BUFF_SIZE) THEN
                       WRITE(INFOBUF, 120) 'Skipping length = ',
       $                  LENGTH,
       $                  ' (type extent * length = ', EXTENT, ' * ',
- --- 321,327 ----
                          CALL MPITEST_MESSAGE(MPITEST_INFO1,
       $                     INFOBUF)
                       END IF
!                   ELSE IF (EXTENT .GT. MAX_BUFF_SIZE / LENGTH) THEN
                       WRITE(INFOBUF, 120) 'Skipping length = ',
       $                  LENGTH,
       $                  ' (type extent * length = ', EXTENT, ' * ',

- ------- node.F -------
*** /tmp/d0BXeFn	Thu May 21 16:09:00 1998
- --- ./fortran/datatype/functional/MPI_Type_hvector_stride/node.F	Mon Apr 13 11:14:41 1998
***************
*** 336,342 ****
                    ELSE
  C                    Make sure there is enough space in the buffer
  C
!                      IF ((EXTENT + LENGTH) * LENGTH .GT. MAX_BUFF_SIZE)
       $                  THEN
                          WRITE(INFOBUF, 120) 'Skipping length = ',
       $                     LENGTH,
- --- 336,342 ----
                    ELSE
  C                    Make sure there is enough space in the buffer
  C
!                      IF ((EXTENT + LENGTH) .GT. MAX_BUFF_SIZE / LENGTH)
       $                  THEN
                          WRITE(INFOBUF, 120) 'Skipping length = ',
       $                     LENGTH,
***************
*** 399,412 ****
  C                          Initialize send & recv buffer
  C
                             IF (MPITEST_CURRENT_RANK .NE. ROOT) THEN
!                               DO 650 I = 1, LENGTH * LENGTH * EXTENT +
       $                           MPITEST_ADD_BUFSIZE, 1
                                   BUFFER(I:I) = 'B'
   650                          CONTINUE
                             ELSE
  C                             Root's rank
  C
!                               DO 660 I = 1, LENGTH * LENGTH * EXTENT +
       $                           MPITEST_ADD_BUFSIZE, 1
                                   BUFFER(I:I) = 'A'
   660                          CONTINUE
- --- 399,412 ----
  C                          Initialize send & recv buffer
  C
                             IF (MPITEST_CURRENT_RANK .NE. ROOT) THEN
!                               DO 650 I = 1, LENGTH * (LENGTH+EXTENT) +
       $                           MPITEST_ADD_BUFSIZE, 1
                                   BUFFER(I:I) = 'B'
   650                          CONTINUE
                             ELSE
  C                             Root's rank
  C
!                               DO 660 I = 1, LENGTH * (LENGTH+EXTENT) +
       $                           MPITEST_ADD_BUFSIZE, 1
                                   BUFFER(I:I) = 'A'
   660                          CONTINUE

- ------- node.F -------
*** /tmp/dbK56l_	Thu May 21 16:09:00 1998
- --- ./fortran/datatype/functional/MPI_Type_indexed_types/node.F	Mon Apr 13 10:41:58 1998
***************
*** 95,102 ****
        INTEGER MPITEST_ADD_BUFSIZE
        PARAMETER (MPITEST_ADD_BUFSIZE = 20)
  
!       MPITEST_AINT DISPLS(MPITEST_CFGSIZ)
!       INTEGER DISPLS1(MPITEST_CFGSIZ)
  
        INTEGER COMM, STATUS(MPI_STATUS_SIZE)
  
- --- 95,102 ----
        INTEGER MPITEST_ADD_BUFSIZE
        PARAMETER (MPITEST_ADD_BUFSIZE = 20)
  
!       MPITEST_AINT DISPLS(MAX_BUFF_SIZE)
!       INTEGER DISPLS1(MAX_BUFF_SIZE)
  
        INTEGER COMM, STATUS(MPI_STATUS_SIZE)
  
***************
*** 108,114 ****
  
        INTEGER OLDTYPE, NEWTYPE, TYPES(MPITEST_CFGSIZ)
  
!       INTEGER BLKLENS(MPITEST_CFGSIZ), BLKLENS1(MPITEST_CFGSIZ)
  
        INTEGER TYPE_SIZES(MPITEST_CFGSIZ)
  
- --- 108,114 ----
  
        INTEGER OLDTYPE, NEWTYPE, TYPES(MPITEST_CFGSIZ)
  
!       INTEGER BLKLENS(MAX_BUFF_SIZE), BLKLENS1(MAX_BUFF_SIZE)
  
        INTEGER TYPE_SIZES(MPITEST_CFGSIZ)
  
***************
*** 321,327 ****
                          CALL MPITEST_MESSAGE(MPITEST_INFO1,
       $                     INFOBUF)
                       END IF
!                   ELSE IF (EXTENT * LENGTH .GT. MAX_BUFF_SIZE) THEN
                       WRITE(INFOBUF, 120) 'Skipping length = ',
       $                  LENGTH,
       $                  ' (type extent * length = ', EXTENT, ' * ',
- --- 321,327 ----
                          CALL MPITEST_MESSAGE(MPITEST_INFO1,
       $                     INFOBUF)
                       END IF
!                   ELSE IF (EXTENT .GT. MAX_BUFF_SIZE / LENGTH) THEN
                       WRITE(INFOBUF, 120) 'Skipping length = ',
       $                  LENGTH,
       $                  ' (type extent * length = ', EXTENT, ' * ',

- ------- node.F -------
*** /tmp/d0sK9QS	Thu May 21 16:09:01 1998
- --- ./fortran/grp_ctxt_comm/functional/MPI_Group_difference1/node.F	Thu Apr  9 11:31:05 1998
***************
*** 188,194 ****
  C
  C     Check the result
  C
!         IF(GROUP2 .NE. MPI_GROUP_EMPTY) THEN
            WRITE(INFOBUF,101) 
       $      'MPI_GROUP_DIFFERENCE(GROUP,GROUP) did not return' ,
       $      'MPI_GROUP_EMPTY)  ( COMM_INDEX )',   COMM_INDEX, ')'
- --- 188,195 ----
  C
  C     Check the result
  C
! 	CALL MPI_GROUP_COMPARE(GROUP2, MPI_GROUP_EMPTY, RESULT, IERR)
!         IF(RESULT .NE. MPI_IDENT) THEN
            WRITE(INFOBUF,101) 
       $      'MPI_GROUP_DIFFERENCE(GROUP,GROUP) did not return' ,
       $      'MPI_GROUP_EMPTY)  ( COMM_INDEX )',   COMM_INDEX, ')'
***************
*** 218,224 ****
  C
  C     Check the result
  C
!         IF(GROUP2 .NE. MPI_GROUP_EMPTY) THEN
            WRITE(INFOBUF,101) 
       $      'MPI_GROUP_DIFFERENCE(EMPTY,GROUP) did not return' ,
       $      'MPI_GROUP_EMPTY) ( COMM_INDEX )', COMM_INDEX,
- --- 219,226 ----
  C
  C     Check the result
  C
!         CALL MPI_GROUP_COMPARE(GROUP2, MPI_GROUP_EMPTY, RESULT, IERR)
!         IF(RESULT .NE. MPI_IDENT) THEN
            WRITE(INFOBUF,101) 
       $      'MPI_GROUP_DIFFERENCE(EMPTY,GROUP) did not return' ,
       $      'MPI_GROUP_EMPTY) ( COMM_INDEX )', COMM_INDEX,
***************
*** 332,338 ****
  C
  C     Check the result
  C
!         IF(GROUP2 .NE. MPI_GROUP_EMPTY) THEN
            WRITE(INFOBUF,101) 
       $      'MPI_GROUP_DIFFERENCE(GROUP, WORLD) did not return' ,
       $      'MPI_GROUP_EMPTY) ( COMM_INDEX )',   COMM_INDEX,
- --- 334,341 ----
  C
  C     Check the result
  C
!         CALL MPI_GROUP_COMPARE(GROUP2, MPI_GROUP_EMPTY, RESULT, IERR)
!         IF(RESULT .NE. MPI_IDENT) THEN
            WRITE(INFOBUF,101) 
       $      'MPI_GROUP_DIFFERENCE(GROUP, WORLD) did not return' ,
       $      'MPI_GROUP_EMPTY) ( COMM_INDEX )',   COMM_INDEX,

- ------- node.F -------
*** /tmp/d0zXqBv	Thu May 21 16:09:01 1998
- --- ./fortran/grp_ctxt_comm/functional/MPI_Group_excl1/node.F	Thu Apr  9 11:34:11 1998
***************
*** 461,467 ****
          END IF
          LOOP_COUNT = LOOP_COUNT + 1
  C
!         IF(GROUP .NE. MPI_GROUP_EMPTY) THEN
            WRITE(INFOBUF,101) 
       $      'After MPI_GROUP_EXCL of size 0 did not return ',
       $      'MPI_GROUP_EMPTY'
- --- 461,468 ----
          END IF
          LOOP_COUNT = LOOP_COUNT + 1
  C
! 	CALL MPI_GROUP_COMPARE(GROUP, MPI_GROUP_EMPTY, RESULT, IERR)
!         IF(RESULT .NE. MPI_IDENT) THEN
            WRITE(INFOBUF,101) 
       $      'After MPI_GROUP_EXCL of size 0 did not return ',
       $      'MPI_GROUP_EMPTY'

- ------- node.F -------
*** /tmp/dNLH2t_	Thu May 21 16:09:01 1998
- --- ./fortran/grp_ctxt_comm/functional/MPI_Group_incl1/node.F	Thu Apr  9 13:49:17 1998
***************
*** 463,469 ****
          END IF
          LOOP_COUNT = LOOP_COUNT + 1
  
!         IF(GROUP .NE. MPI_GROUP_EMPTY) THEN
            WRITE(INFOBUF,101) 
       $      'After MPI_GROUP_INCL of size 0 did not return ',
       $      'MPI_GROUP_EMPTY'
- --- 463,470 ----
          END IF
          LOOP_COUNT = LOOP_COUNT + 1
  
!         CALL MPI_GROUP_COMPARE(GROUP, MPI_GROUP_EMPTY, RESULT, IERR)
!         IF(RESULT .NE. MPI_IDENT) THEN
            WRITE(INFOBUF,101) 
       $      'After MPI_GROUP_INCL of size 0 did not return ',
       $      'MPI_GROUP_EMPTY'

- ------- node.F -------
*** /tmp/d0n8kuq	Thu May 21 16:09:01 1998
- --- ./fortran/grp_ctxt_comm/functional/MPI_Group_intersection1/node.F	Thu Apr  9 14:23:08 1998
***************
*** 256,262 ****
  C
  C     Check the result
  C
!         IF(GROUP2 .NE. MPI_GROUP_EMPTY) THEN
            WRITE(INFOBUF,101) 
       $      'MPI_GROUP_INTERSECTION(EMPTY,GROUP) did not return' ,
       $      'MPI_GROUP_EMPTY) ( COMM_INDEX )', COMM_INDEX,
- --- 256,263 ----
  C
  C     Check the result
  C
!         CALL MPI_GROUP_COMPARE(GROUP2, MPI_GROUP_EMPTY, RESULT, IERR)
!         IF(RESULT .NE. MPI_IDENT) THEN
            WRITE(INFOBUF,101) 
       $      'MPI_GROUP_INTERSECTION(EMPTY,GROUP) did not return' ,
       $      'MPI_GROUP_EMPTY) ( COMM_INDEX )', COMM_INDEX,
***************
*** 288,294 ****
  C
  C     Check the result
  C
!         IF(GROUP2 .NE. MPI_GROUP_EMPTY) THEN
            WRITE(INFOBUF,101) 
       $      'MPI_GROUP_INTERSECTION(GROUP, EMPTY) did not return' ,
       $      'MPI_GROUP_EMPTY)  ( COMM_INDEX )',   COMM_INDEX, ')'
- --- 289,296 ----
  C
  C     Check the result
  C
!         CALL MPI_GROUP_COMPARE(GROUP2, MPI_GROUP_EMPTY, RESULT, IERR)
!         IF(RESULT .NE. MPI_IDENT) THEN
            WRITE(INFOBUF,101) 
       $      'MPI_GROUP_INTERSECTION(GROUP, EMPTY) did not return' ,
       $      'MPI_GROUP_EMPTY)  ( COMM_INDEX )',   COMM_INDEX, ')'

- ------- node.F -------
*** /tmp/dByAlo_	Thu May 21 16:09:01 1998
- --- ./fortran/grp_ctxt_comm/functional/MPI_Group_intersection2/node.F	Thu Apr  9 14:08:53 1998
***************
*** 149,156 ****
  C Create two groups
  C
          RANKS(0,0) = MPITEST_NUMP - 1
!         RANKS(0,1) = 0
!         RANKS(0,2) = 1
  C
          CALL MPI_GROUP_EXCL(GROUPWORLD, 
       $                      3, 
- --- 149,156 ----
  C Create two groups
  C
          RANKS(0,0) = MPITEST_NUMP - 1
!         RANKS(1,0) = 0
!         RANKS(2,0) = 1
  C
          CALL MPI_GROUP_EXCL(GROUPWORLD, 
       $                      3, 

- ------- node.F -------
*** /tmp/d0bldbm	Thu May 21 16:09:01 1998
- --- ./fortran/grp_ctxt_comm/functional/MPI_Group_range_excl1/node.F	Thu Apr  9 14:11:12 1998
***************
*** 482,488 ****
          END IF
          LOOP_COUNT = LOOP_COUNT + 1
  C
!         IF(GROUP .NE. MPI_GROUP_EMPTY) THEN
            WRITE(INFOBUF,101) 
       $      'After MPI_GROUP_EXCL of size 0 did not return ',
       $      'MPI_GROUP_EMPTY'
- --- 482,489 ----
          END IF
          LOOP_COUNT = LOOP_COUNT + 1
  C
!         CALL MPI_GROUP_COMPARE(GROUP, MPI_GROUP_EMPTY, RESULT, IERR)
!         IF(RESULT .NE. MPI_IDENT) THEN
            WRITE(INFOBUF,101) 
       $      'After MPI_GROUP_EXCL of size 0 did not return ',
       $      'MPI_GROUP_EMPTY'

- ------- node.F -------
*** /tmp/d_Z4Sk_	Thu May 21 16:09:01 1998
- --- ./fortran/grp_ctxt_comm/functional/MPI_Group_range_incl1/node.F	Thu Apr  9 14:12:20 1998
***************
*** 472,478 ****
        END IF
        LOOP_COUNT = LOOP_COUNT + 1
  C
!         IF(GROUP .NE. MPI_GROUP_EMPTY) THEN
            WRITE(INFOBUF,101) 
       $      'After MPI_GROUP_INCL of size 0 did not return ',
       $      'MPI_GROUP_EMPTY'
- --- 472,479 ----
        END IF
        LOOP_COUNT = LOOP_COUNT + 1
  C
!         CALL MPI_GROUP_COMPARE(GROUP, MPI_GROUP_EMPTY, RESULT, IERR)
!         IF(RESULT .NE. MPI_IDENT) THEN
            WRITE(INFOBUF,101) 
       $      'After MPI_GROUP_INCL of size 0 did not return ',
       $      'MPI_GROUP_EMPTY'

- ------- node.F -------
*** /tmp/d0PMXIi	Thu May 21 16:09:01 1998
- --- ./fortran/grp_ctxt_comm/functional/MPI_Intercomm_create2/node.F	Thu Apr  9 11:44:54 1998
***************
*** 112,119 ****
        INTEGER    COMMINTER
        INTEGER    COMM2
  C                               for split communicator
- -       INTEGER    KEY
- - C                               MPI_Key
        INTEGER    COMMSIZE
  C                               communicator size
        INTEGER    EXTRA
- --- 112,117 ----
***************
*** 598,617 ****
  C                Node defined in current communicator
   4000 CONTINUE
  C                End communicator loop
- - C
- - C  Free the Keyval
- - C
- -       CALL   MPI_KEYVAL_FREE(KEY, IERR)
- -       IF (IERR .NE. MPI_SUCCESS) THEN
- -         FAIL = FAIL + 1
- -         WRITE(INFOBUF,102) 'Non-Zero return code (', IERR, 
- -      $    ')  From:  MPI_Keyval_free'
- -         CALL MPITEST_MESSAGE(MPITEST_NONFATAL, INFOBUF)
- -         ERRORSTRING = ' '
- -         CALL MPI_ERROR_STRING(IERR, ERRORSTRING, SIZE, ERR)
- -         WRITE(INFOBUF,100) ERRORSTRING
- -         CALL MPITEST_MESSAGE(MPITEST_NONFATAL, INFOBUF)
- -       END IF
  C
  C     Report overall results
  C
- --- 596,601 ----

- ------- node.F -------
*** /tmp/dp9.9g_	Thu May 21 16:09:01 1998
- --- ./fortran/grp_ctxt_comm/functional/MPI_Keyval3/node.F	Mon Apr 27 14:38:05 1998
***************
*** 101,106 ****
- --- 101,109 ----
  C                               for keyval creation/use
        EXTERNAL   COPY_FUNCTION
        EXTERNAL   DELETE_FUNCTION
+ 
+       INTEGER    EXTRAS(1)
+       COMMON     EXTRAS
  C-----------------------------------------------------------------------------
   98   FORMAT(A,A )
   99   FORMAT(A,INT_FMT)
***************
*** 133,139 ****
        FAIL = 0
        LOOP_COUNT = 0
        VERIFY = 0
!       EXTRA = 0
  C
  C-------------------------  Create a Keyval  ----------------------------
  C
- --- 136,143 ----
        FAIL = 0
        LOOP_COUNT = 0
        VERIFY = 0
!       EXTRA = 1
!       EXTRAs(EXTRA) = 0
  C
  C-------------------------  Create a Keyval  ----------------------------
  C
***************
*** 265,271 ****
  C
  C  Delete the Attribute
  C
!       EXTRA = 2
        CALL MPI_ATTR_DELETE(COMM1,
       $                     KEY, 
       $                     IERR)
- --- 269,275 ----
  C
  C  Delete the Attribute
  C
!       EXTRAS(EXTRA) = 2
        CALL MPI_ATTR_DELETE(COMM1,
       $                     KEY, 
       $                     IERR)
***************
*** 364,371 ****
        INTEGER  ATTRIBUTE_VAL
        INTEGER  EXTRA_STATE
        INTEGER  IERR
  C
!       IF(EXTRA_STATE .EQ. 0) THEN
          IERR = MPI_ERR_OTHER
        ELSE
  	IERR = MPI_SUCCESS
- --- 368,377 ----
        INTEGER  ATTRIBUTE_VAL
        INTEGER  EXTRA_STATE
        INTEGER  IERR
+       INTEGER  EXTRAS(1)
+       COMMON   EXTRAS
  C
!       IF(EXTRAS(EXTRA_STATE) .EQ. 0) THEN
          IERR = MPI_ERR_OTHER
        ELSE
  	IERR = MPI_SUCCESS

- ------- node.F -------
*** /tmp/d0DzQ_e	Thu May 21 16:09:01 1998
- --- ./fortran/misc/functional/MPI_pdefs/node.F	Wed Apr  8 13:18:28 1998
***************
*** 576,584 ****
          PASS = PASS + 1
        END IF
  
!       ERR = MPI_TAG_UB
!       IF (ERR .LT. 32767) THEN
!         WRITE (INFOBUF,101) 'MPI_TAG_UB =', MPI_TAG_UB,
       $      ' SHOULD BE >32767'
          CALL MPITEST_MESSAGE(MPITEST_NONFATAL, INFOBUF)
          FAIL = FAIL + 1
- --- 576,584 ----
          PASS = PASS + 1
        END IF
  
!       CALL MPI_ATTR_GET(MPI_COMM_WORLD, MPI_TAG_UB, ATTR1, ERR, IERROR)
!       IF (ATTR1 .LT. 32767) THEN
!         WRITE (INFOBUF,101) 'MPI_TAG_UB =', ATTR1,
       $      ' SHOULD BE >32767'
          CALL MPITEST_MESSAGE(MPITEST_NONFATAL, INFOBUF)
          FAIL = FAIL + 1

- ------- node.F -------
*** /tmp/ddmtrb_	Thu May 21 16:09:01 1998
- --- ./fortran/nonblocking/functional/rings/node.F	Mon Apr 13 13:27:05 1998
***************
*** 114,120 ****
        INTEGER RING, CNT, MAX_LEN, FAILED
        INTEGER NUM_RINGS
  
!       INTEGER J, K, MPI_REQUEST, MPI_STATUS(MAX_STATUS_ROW), MPI_COUNT
        INTEGER FROMNODE, RECV_LEN, RECV_TYPE, SND_LEN, IERR
  
        CHARACTER*(IOSIZE) INFOBUF
- --- 114,120 ----
        INTEGER RING, CNT, MAX_LEN, FAILED
        INTEGER NUM_RINGS
  
!       INTEGER J, K, MPI_REQUEST, MPI_STATUS(MPI_STATUS_SIZE), MPI_COUNT
        INTEGER FROMNODE, RECV_LEN, RECV_TYPE, SND_LEN, IERR
  
        CHARACTER*(IOSIZE) INFOBUF
***************
*** 293,299 ****
  
        CHARACTER*(IOSIZE) INFOBUF
  
!       INTEGER MPI_STATUS(MAX_STATUS_ROW), MPI_REQUEST
        INTEGER MPI_COUNT
  
        INTEGER NUM_RINGS, MAX_LOOPS
- --- 293,299 ----
  
        CHARACTER*(IOSIZE) INFOBUF
  
!       INTEGER MPI_STATUS(MPI_STATUS_SIZE), MPI_REQUEST
        INTEGER MPI_COUNT
  
        INTEGER NUM_RINGS, MAX_LOOPS

- ------- node.F -------
*** /tmp/d01aKiZ	Thu May 21 16:09:02 1998
- --- ./fortran/topo/functional/MPI_Cart_shift_nonperiodic/node.F	Fri Apr 10 09:20:51 1998
***************
*** 402,421 ****
        TEST_COORDS(M) = COORDS(M)
    520 CONTINUE
        TEST_COORDS(J) = EXP_SORC
!       CALL MPI_CART_RANK(COMM_CART,
!      $                   TEST_COORDS,
!      $                   SORC_RANK,
!      $                   IERR)
!       IF (IERR .NE. MPI_SUCCESS) THEN
!         FAIL = FAIL + 1
!         CALL MPI_ERROR_CLASS(IERR, ERRORCLASS, ERR)
!         WRITE(INFOBUF,102) 'MPI_CART_RANK  ERROR (', IERR, 
!      $       ')    ERRORCLASS = ', ERRORCLASS
!         CALL MPITEST_MESSAGE(MPITEST_NONFATAL, INFOBUF)
!         ERRORSTRING = ' '
!         CALL MPI_ERROR_STRING(IERR, ERRORSTRING, SIZE, ERR)
!         WRITE(INFOBUF,100) ERRORSTRING
!         CALL MPITEST_MESSAGE(MPITEST_FATAL, INFOBUF)
        END IF
          IF(SORC_RANK .NE. SORC) THEN
          WRITE(INFOBUF,102) 
- --- 402,425 ----
        TEST_COORDS(M) = COORDS(M)
    520 CONTINUE
        TEST_COORDS(J) = EXP_SORC
!       IF (EXP_SORC .EQ. MPI_PROC_NULL) THEN
!          SORC_RANK = MPI_PROC_NULL
!       ELSE
!          CALL MPI_CART_RANK(COMM_CART,
!      $        	            TEST_COORDS,
!      $                      SORC_RANK,
!      $                      IERR)
!          IF (IERR .NE. MPI_SUCCESS) THEN
!             FAIL = FAIL + 1
!             CALL MPI_ERROR_CLASS(IERR, ERRORCLASS, ERR)
!             WRITE(INFOBUF,102) 'MPI_CART_RANK  ERROR (', IERR, 
!      $           ')    ERRORCLASS = ', ERRORCLASS
!             CALL MPITEST_MESSAGE(MPITEST_NONFATAL, INFOBUF)
!             ERRORSTRING = ' '
!             CALL MPI_ERROR_STRING(IERR, ERRORSTRING, SIZE, ERR)
!             WRITE(INFOBUF,100) ERRORSTRING
!             CALL MPITEST_MESSAGE(MPITEST_FATAL, INFOBUF)
!          END IF
        END IF
          IF(SORC_RANK .NE. SORC) THEN
          WRITE(INFOBUF,102) 
***************
*** 447,466 ****
          TEST_COORDS(M) = COORDS(M)
   540  CONTINUE
        TEST_COORDS(J) = EXP_DEST
!       CALL MPI_CART_RANK(COMM_CART,
       $                   TEST_COORDS,
       $                   DEST_RANK,
       $                   IERR)
!       IF (IERR .NE. MPI_SUCCESS) THEN
!         FAIL = FAIL + 1
!         CALL MPI_ERROR_CLASS(IERR, ERRORCLASS, ERR)
!         WRITE(INFOBUF,102) 'MPI_CART_RANK  ERROR (', IERR, 
!      $       ')    ERRORCLASS = ', ERRORCLASS
!         CALL MPITEST_MESSAGE(MPITEST_NONFATAL, INFOBUF)
!         ERRORSTRING = ' '
!         CALL MPI_ERROR_STRING(IERR, ERRORSTRING, SIZE, ERR)
!         WRITE(INFOBUF,100) ERRORSTRING
!         CALL MPITEST_MESSAGE(MPITEST_FATAL, INFOBUF)
        END IF
          IF(DEST_RANK .NE. DEST) THEN
            WRITE(INFOBUF,102) 
- --- 451,474 ----
          TEST_COORDS(M) = COORDS(M)
   540  CONTINUE
        TEST_COORDS(J) = EXP_DEST
!       IF (EXP_DEST .EQ. MPI_PROC_NULL) THEN
!          DEST_RANK = MPI_PROC_NULL
!       ELSE
!          CALL MPI_CART_RANK(COMM_CART,
       $                   TEST_COORDS,
       $                   DEST_RANK,
       $                   IERR)
!          IF (IERR .NE. MPI_SUCCESS) THEN
!             FAIL = FAIL + 1
!             CALL MPI_ERROR_CLASS(IERR, ERRORCLASS, ERR)
!             WRITE(INFOBUF,102) 'MPI_CART_RANK  ERROR (', IERR, 
!      $           ')    ERRORCLASS = ', ERRORCLASS
!             CALL MPITEST_MESSAGE(MPITEST_NONFATAL, INFOBUF)
!             ERRORSTRING = ' '
!             CALL MPI_ERROR_STRING(IERR, ERRORSTRING, SIZE, ERR)
!             WRITE(INFOBUF,100) ERRORSTRING
!             CALL MPITEST_MESSAGE(MPITEST_FATAL, INFOBUF)
!          END IF
        END IF
          IF(DEST_RANK .NE. DEST) THEN
            WRITE(INFOBUF,102) 

- --Murder_of_Crows_507_000
Content-Type: TEXT/plain; name=logs; charset=us-ascii; x-unix-mode=0664
Content-Description: logs
Content-MD5: Pkt6l+2oGjIxhboWC6A6Og==


./c/collective/functional/MPI_collective_message/SCCS/s.node.c:

D 1.3	98/04/10 11:45:22 nevin	4 3	00003/00002/00799
Attribute value must be a void * not an int. This makes a 
big difference in LP64.

D 1.2	98/02/08 12:46:25 nevin	3 1	00005/00003/00796
Don't re-init receive buffer when waiting on irecv. Use shorter message. Set tag properly.

D 1.1	97/07/08 09:55:12 dkerr	1 0	00799/00000/00000
date and time created 97/07/08 09:55:12 by dkerr

./c/datatype/functional/MPI_Pack_basic_type/SCCS/s.node.c:

D 1.2	98/02/27 10:55:39 nevin	3 1	00004/00004/00671
The packing and unpacking didn't correctly account for the 
extent of the structure.


D 1.1	97/07/08 09:57:03 dkerr	1 0	00675/00000/00000
date and time created 97/07/08 09:57:03 by dkerr

./c/datatype/functional/MPI_Pack_user_type/SCCS/s.node.c:

D 1.2	98/02/27 12:28:31 nevin	3 1	00015/00008/00638
Must receive as type MPI_PACKED since the received buffer is subsequently 
explicitly MPI_Unpack'ed.


D 1.1	97/07/08 09:57:15 dkerr	1 0	00646/00000/00000
date and time created 97/07/08 09:57:15 by dkerr

./c/datatype/functional/MPI_Type_free_pending_msg/SCCS/s.node.c:

D 1.2	98/03/27 09:12:03 rolfv	3 1	00021/00000/00610
The buffer used in the MPI_Isend() call
was beeing freed prior to the data being
sent.  This caused problems with the TCP
PM when using rendezvous protocol.  An 
MPI_Wait() was added to the code prior
to freeing the send buffer.

D 1.1	97/07/08 09:57:28 dkerr	1 0	00610/00000/00000
date and time created 97/07/08 09:57:28 by dkerr

./c/grp_ctxt_comm/functional/MPI_Group_difference1/SCCS/s.node.c:

D 1.2	98/04/10 08:18:21 nevin	3 1	00033/00010/00281
Use MPI_Group_compare to compare group with empty group.

D 1.1	97/07/08 10:01:59 dkerr	1 0	00291/00000/00000
date and time created 97/07/08 10:01:59 by dkerr

./c/grp_ctxt_comm/functional/MPI_Group_excl1/SCCS/s.node.c:

D 1.2	98/04/10 08:11:48 nevin	3 1	00002/00001/00548
Use MPI_Group_compare to compare group with empty group.


D 1.1	97/07/08 10:02:05 dkerr	1 0	00549/00000/00000
date and time created 97/07/08 10:02:05 by dkerr

./c/grp_ctxt_comm/functional/MPI_Group_incl1/SCCS/s.node.c:

D 1.2	98/04/10 08:13:52 nevin	3 1	00002/00001/00434
Use MPI_Group_compare to compare group with empty group.


D 1.1	97/07/08 10:02:09 dkerr	1 0	00435/00000/00000
date and time created 97/07/08 10:02:09 by dkerr

./c/grp_ctxt_comm/functional/MPI_Group_intersection1/SCCS/s.node.c:

D 1.2	98/04/10 08:18:46 nevin	3 1	00022/00007/00351
Use MPI_Group_compare to compare group with empty group.

D 1.1	97/07/08 10:02:12 dkerr	1 0	00358/00000/00000
date and time created 97/07/08 10:02:12 by dkerr

./c/grp_ctxt_comm/functional/MPI_Group_range_excl1/SCCS/s.node.c:

D 1.2	98/04/10 08:19:55 nevin	3 1	00002/00001/00552
Use MPI_Group_compare to compare group with empty group.

D 1.1	97/07/08 10:02:17 dkerr	1 0	00553/00000/00000
date and time created 97/07/08 10:02:17 by dkerr

./c/grp_ctxt_comm/functional/MPI_Group_range_incl1/SCCS/s.node.c:

D 1.2	98/04/10 08:15:30 nevin	3 1	00002/00001/00436
Use MPI_Group_compare to compare group with empty group.


D 1.1	97/07/08 10:02:23 dkerr	1 0	00437/00000/00000
date and time created 97/07/08 10:02:23 by dkerr

./c/nonblocking/functional/MPI_Waitany/SCCS/s.node.c:

D 1.2	98/04/01 09:24:53 nevin	3 1	00008/00000/00558
Workaround for bogus testing of non-set statuses, i.e. those corresponding to inactive requests.

D 1.1	97/07/08 10:05:32 dkerr	1 0	00558/00000/00000
date and time created 97/07/08 10:05:32 by dkerr

./c/nonblocking/functional/rings/SCCS/s.node.c:

D 1.2	98/03/24 09:29:11 nevin	3 1	00001/00001/00888
Initialize index variable i.

D 1.1	97/07/08 10:05:35 dkerr	1 0	00889/00000/00000
date and time created 97/07/08 10:05:35 by dkerr

./c/persist_request/functional/MPI_Request_free_p/SCCS/s.node.c:

D 1.2	98/04/16 12:33:57 nevin	3 1	00005/00005/00519
Only process which attached buffer can detach it.

D 1.1	97/07/08 10:07:19 dkerr	1 0	00524/00000/00000
date and time created 97/07/08 10:07:19 by dkerr

./c/topo/functional/MPI_Cart_shift_nonperiodic/SCCS/s.node.c:

D 1.2	98/04/03 13:41:02 nevin	4 1	00012/00004/00387
Test erroneously called MPI_Cart_rank with an out of range coord.
In a non-periodic dimension this is erroneous. Hammerhead (and MPICH) do 
not return an error (this is wrong in my opinion) in this case but return 
rank = MPI_PROC_NULL.

D 1.1	97/07/08 10:11:45 dkerr	1 0	00391/00000/00000
date and time created 97/07/08 10:11:45 by dkerr

./fortran/blocking/functional/MPI_Bsend_ator/SCCS/s.node.F:

D 1.2	98/04/08 13:37:14 nevin	3 1	00011/00007/00570
Only detach a buffer if we attached one.

D 1.1	97/07/07 17:57:44 dkerr	1 0	00577/00000/00000
- - The intial checkin of the Intel Test Suite plus some changes made by Nick Nevin.

./fortran/datatype/functional/MPI_Type_contiguous_idispls/SCCS/s.node.F:

D 1.2	98/04/10 10:42:29 nevin	3 1	00001/00001/00765
Alter length test to avoid overflow when EXTENT and LENGTH are large.

D 1.1	97/07/08 10:19:27 dkerr	1 0	00766/00000/00000
date and time created 97/07/08 10:19:27 by dkerr

./fortran/datatype/functional/MPI_Type_hindexed_types/SCCS/s.node.F:

D 1.2	98/04/13 10:47:11 nevin	3 1	00003/00003/00744
Increase displs and blklens array sizes to avoid overruns.


D 1.1	97/07/08 10:19:45 dkerr	1 0	00747/00000/00000
date and time created 97/07/08 10:19:45 by dkerr

./fortran/datatype/functional/MPI_Type_hvector_stride/SCCS/s.node.F:

D 1.2	98/04/13 11:14:38 nevin	3 1	00003/00003/00762
Fix initialize loop to not overrun the data array bounds.


D 1.1	97/07/08 10:19:51 dkerr	1 0	00765/00000/00000
date and time created 97/07/08 10:19:51 by dkerr

./fortran/datatype/functional/MPI_Type_indexed_types/SCCS/s.node.F:

D 1.2	98/04/13 10:41:55 nevin	3 1	00004/00004/00743
Some arrays were to short and data was being overwritten.


D 1.1	97/07/08 10:20:01 dkerr	1 0	00747/00000/00000
date and time created 97/07/08 10:20:01 by dkerr

./fortran/grp_ctxt_comm/functional/MPI_Group_difference1/SCCS/s.node.F:

D 1.2	98/04/09 11:31:04 nevin	3 1	00006/00003/00386
Must use MPI_GROUP_COMPARE to compare groups.

D 1.1	97/07/08 10:25:04 dkerr	1 0	00389/00000/00000
date and time created 97/07/08 10:25:04 by dkerr

./fortran/grp_ctxt_comm/functional/MPI_Group_excl1/SCCS/s.node.F:

D 1.2	98/04/09 11:34:11 nevin	3 1	00002/00001/00675
Must use MPI_GROUP_COMPARE to compare groups.

D 1.1	97/07/08 10:25:10 dkerr	1 0	00676/00000/00000
date and time created 97/07/08 10:25:10 by dkerr

./fortran/grp_ctxt_comm/functional/MPI_Group_incl1/SCCS/s.node.F:

D 1.2	98/04/09 13:49:15 nevin	3 1	00002/00001/00561
Must use MPI_GROUP_COMPARE to compare group with MPI_GROUP_EMPTY.


D 1.1	97/07/08 10:25:13 dkerr	1 0	00562/00000/00000
date and time created 97/07/08 10:25:13 by dkerr

./fortran/grp_ctxt_comm/functional/MPI_Group_intersection1/SCCS/s.node.F:

D 1.2	98/04/09 14:23:05 nevin	3 1	00004/00002/00491
Must use MPI_GROUP_COMPARE to compare group with MPI_GROUP_EMPTY.


D 1.1	97/07/08 10:25:17 dkerr	1 0	00493/00000/00000
date and time created 97/07/08 10:25:17 by dkerr

./fortran/grp_ctxt_comm/functional/MPI_Group_intersection2/SCCS/s.node.F:

D 1.2	98/04/09 14:08:51 nevin	3 1	00002/00002/00397
Ranks must be in 1-D array for MPI_GROUP_EXCL. Fake it by using first column.


D 1.1	97/07/08 10:25:18 dkerr	1 0	00399/00000/00000
date and time created 97/07/08 10:25:18 by dkerr

./fortran/grp_ctxt_comm/functional/MPI_Group_range_excl1/SCCS/s.node.F:

D 1.2	98/04/09 14:11:10 nevin	3 1	00002/00001/00696
Must use MPI_GROUP_COMPARE to compare group with MPI_GROUP_EMPTY.


D 1.1	97/07/08 10:25:22 dkerr	1 0	00697/00000/00000
date and time created 97/07/08 10:25:22 by dkerr

./fortran/grp_ctxt_comm/functional/MPI_Group_range_incl1/SCCS/s.node.F:

D 1.2	98/04/09 14:12:18 nevin	3 1	00002/00001/00564
Must use MPI_GROUP_COMPARE to compare group with MPI_GROUP_EMPTY.


D 1.1	97/07/08 10:25:28 dkerr	1 0	00565/00000/00000
date and time created 97/07/08 10:25:28 by dkerr

./fortran/grp_ctxt_comm/functional/MPI_Intercomm_create2/SCCS/s.node.F:

D 1.2	98/04/09 11:44:54 nevin	3 1	00000/00016/00606
Remove freeing of key which was never created.

D 1.1	97/07/08 10:25:43 dkerr	1 0	00622/00000/00000
date and time created 97/07/08 10:25:43 by dkerr

./fortran/grp_ctxt_comm/functional/MPI_Keyval3/SCCS/s.node.F:

D 1.2	98/04/27 14:38:05 nevin	3 1	00009/00003/00373
Extra value is passed by value not by reference.

D 1.1	97/07/08 10:25:55 dkerr	1 0	00376/00000/00000
date and time created 97/07/08 10:25:55 by dkerr

./fortran/misc/functional/MPI_pdefs/SCCS/s.node.F:

D 1.2	98/04/08 13:18:28 nevin	3 1	00003/00003/00806
MPI_TAG_UB is the key not the attribute value

D 1.1	97/07/08 10:26:00 dkerr	1 0	00809/00000/00000
date and time created 97/07/08 10:26:00 by dkerr

./fortran/nonblocking/functional/rings/SCCS/s.node.F:

D 1.2	98/04/13 13:27:05 nevin	3 1	00002/00002/00394
Fix incorrect declaration of status.

D 1.1	97/07/08 10:28:32 dkerr	1 0	00396/00000/00000
date and time created 97/07/08 10:28:32 by dkerr

./fortran/topo/functional/MPI_Cart_shift_nonperiodic/SCCS/s.node.F:

D 1.2	98/04/10 09:20:48 nevin	3 1	00033/00025/00494
Test erroneously called MPI_Cart_rank with an out of range coord.
In a non-periodic dimension this is erroneous. Hammerhead (and MPICH) do 
not return an error (this is wrong in my opinion) in this case but return 
rank = MPI_PROC_NULL.


D 1.1	97/07/08 10:34:47 dkerr	1 0	00519/00000/00000
date and time created 97/07/08 10:34:47 by dkerr

- --Murder_of_Crows_507_000--


------- End of Forwarded Message