diff --git a/NEWS b/NEWS
index 2798114f2e66441918daa22cf4c5929e327e6f4d..daa416ea83f7fb8ffbfa56523969fdabc383646e 100644
--- a/NEWS
+++ b/NEWS
@@ -234,6 +234,7 @@ documents those changes that are of interest to users and administrators.
     task/affinity and task/cgroup plugins used together.
  -- Fix version issue when packing GRES information between 2 different versions
     of Slurm.
+ -- Fix for srun hanging with OpenMPI and PMIx
 
 * Changes in Slurm 15.08.10
 ===========================
diff --git a/src/common/log.c b/src/common/log.c
index 035105a0e39580d192115fe94dc53b794a8abb50..abaaed80b2d33507a79b1ca0981ab720b65ee1f8 100644
--- a/src/common/log.c
+++ b/src/common/log.c
@@ -265,7 +265,9 @@ static int _fd_writeable(int fd)
 	 * gone, but getting 0 back from a nonblocking read means just that.
 	 */
 	if ((ufds.revents & POLLHUP) || fstat(fd, &stat_buf) ||
-	    (S_ISSOCK(stat_buf.st_mode) && (recv(fd, &temp, 1, 0) == 0)))
+	    ((S_ISSOCK(stat_buf.st_mode) &&
+	     (rc = recv(fd, &temp, 1, MSG_DONTWAIT) <= 0) &&
+	     (rc == 0 || (errno != EAGAIN)))))
 		return -1;
 	else if ((ufds.revents & POLLNVAL)
 		 || (ufds.revents & POLLERR)