Index: ompi/mca/coll/basic/coll_basic_allgather.c
===================================================================
--- ompi/mca/coll/basic/coll_basic_allgather.c	(revision 17814)
+++ ompi/mca/coll/basic/coll_basic_allgather.c	(working copy)
@@ -149,7 +149,7 @@
         }

         /* Do a send-recv between the two root procs. to avoid deadlock */
-        err = MCA_PML_CALL(isend(sbuf, scount, sdtype, 0,
+        err = MCA_PML_CALL(isend(sbuf, scount, sdtype, root,
                                  MCA_COLL_BASE_TAG_ALLGATHER,
                                  MCA_PML_BASE_SEND_STANDARD,
                                  comm, &reqs[rsize]));
@@ -157,7 +157,7 @@
             return err;
         }

-        err = MCA_PML_CALL(irecv(rbuf, rcount, rdtype, 0,
+        err = MCA_PML_CALL(irecv(rbuf, rcount, rdtype, root,
                                  MCA_COLL_BASE_TAG_ALLGATHER, comm,
                                  &reqs[0]));
         if (OMPI_SUCCESS != err) {
@@ -186,14 +186,14 @@
             return err;
         }

-        err = MCA_PML_CALL(isend(rbuf, rsize * rcount, rdtype, 0,
+        err = MCA_PML_CALL(isend(rbuf, rsize * scount, sdtype, root,
                                  MCA_COLL_BASE_TAG_ALLGATHER,
                                  MCA_PML_BASE_SEND_STANDARD, comm, &req));
         if (OMPI_SUCCESS != err) {
             goto exit;
         }

-        err = MCA_PML_CALL(recv(tmpbuf, size * scount, sdtype, 0,
+        err = MCA_PML_CALL(recv(tmpbuf, size * rcount, rdtype, root,
                                 MCA_COLL_BASE_TAG_ALLGATHER, comm,
                                 MPI_STATUS_IGNORE));
         if (OMPI_SUCCESS != err) {
