diff --git a/Makefile b/Makefile
index 3e565b4f80ca315d22428230d0501921f0ceea5e..64b311ffb9b4759f5c1553b3d7f20aca8702221b 100644
--- a/Makefile
+++ b/Makefile
@@ -1,4 +1,4 @@
-#CFLAGS = -g -O0 -Wall  -fsanitize=address -fno-omit-frame-pointer -fsanitize=undefined
+#CFLAGS = -g -O0 -Wall -Iinfinity/include -fsanitize=address -fno-omit-frame-pointer -fsanitize=undefined
 CFLAGS = -g -O0 -Wall -Iinfinity/include
 
 
diff --git a/swiftmpirdmastepsim.c b/swiftmpirdmastepsim.c
index 7855a48d330e6d51d7558a107e9461b114927fea..bd91778013f17923564d7ba9e74cb0d863bcab08 100644
--- a/swiftmpirdmastepsim.c
+++ b/swiftmpirdmastepsim.c
@@ -83,7 +83,8 @@ static int volatile todo_send = 0;
 
 /* The local receive queue. */
 static struct mpiuse_log_entry **volatile recv_queue;
-static int volatile nr_recv[16] = {0};  // XXX needs to be dynamic
+static int volatile nr_recv = 0;
+static int volatile nr_recvs[16] = {0};  // XXX needs to be dynamic
 
 /* Starting up the server ends. */
 static int volatile starting[16] = {1};  // XXX needs to be dynamic...
@@ -254,7 +255,7 @@ static void *recv_thread(void *arg) {
   message("Accepting incoming connections on %d", BASE_PORT + rank);
 
   /* No. of receives to process. */
-  int todo_recv = nr_recv[rank];
+  int todo_recv = nr_recvs[rank];
 
   /* We loop while new requests are being send and we still have messages
    * to receive. */
@@ -273,15 +274,15 @@ static void *recv_thread(void *arg) {
 
     /* Now find the associated log. */
     int found = 0;
-    for (int k = 0; k < nr_recv[rank]; k++) {
+    for (int k = 0; k < nr_recv; k++) {
       struct mpiuse_log_entry *log = recv_queue[k];
       if (log != NULL && !log->done && log->otherrank == rank &&
           log->subtype == subtype && log->size == size && log->tag == tag) {
         found = 1;
 
-        // if (verbose)
-        message("receive message subtype %d from %d on %d", log->subtype, rank,
-                myrank);
+        if (verbose)
+          message("receive message subtype %d from %d on %d", log->subtype, rank,
+                  myrank);
 
         /* Check data sent data is unchanged and received data is as
          * expected. */
@@ -297,8 +298,9 @@ static void *recv_thread(void *arg) {
       }
     }
     if (!found) {
-      error("No matching receive on connections to %d (%d of %d todo)",
-            BASE_PORT + rank, todo_recv, nr_recv[rank]);
+      error("No matching receive on connections to %d (%d of %d todo:"
+            " rank = %d otherrank = %d subtype = %d size = %zd tag = %d)",
+            BASE_PORT + rank, todo_recv, nr_recvs[rank], myrank, rank, subtype, size, tag);
     }
 
     //  Ready for next use of buffer?
@@ -338,7 +340,7 @@ static size_t pick_logs() {
   nr_send = 0;
   recv_queue = (struct mpiuse_log_entry **)calloc(
       nlogs, sizeof(struct mpiuse_log_entry *));
-  int all_nr_recv = 0;
+  nr_recv = 0;
 
   for (size_t k = 0; k < nlogs; k++) {
     struct mpiuse_log_entry *log = mpiuse_get_log(k);
@@ -350,8 +352,8 @@ static size_t pick_logs() {
           send_queue[nr_send] = log;
           nr_send++;
         } else if (log->type == task_type_recv) {
-          recv_queue[all_nr_recv] = log;
-          all_nr_recv++;
+          recv_queue[nr_recv] = log;
+          nr_recv++;
         } else {
           error("task type '%d' is not a known send or recv task", log->type);
         }
@@ -363,19 +365,19 @@ static size_t pick_logs() {
   }
 
   /* Now we need to count the numbers of messages to send per rank. */
-  for (int k = 0; k < nr_ranks; k++) nr_recv[k] = 0;
-  for (int k = 0; k < all_nr_recv; k++) {
+  for (int k = 0; k < nr_ranks; k++) nr_recvs[k] = 0;
+  for (int k = 0; k < nr_recv; k++) {
     struct mpiuse_log_entry *log = recv_queue[k];
-    nr_recv[log->otherrank]++;
+    nr_recvs[log->otherrank]++;
   }
 
   /* Sort into increasing tag. */
-  qsort(recv_queue, all_nr_recv, sizeof(struct mpiuse_log_entry *), cmp_logs);
+  qsort(recv_queue, nr_recv, sizeof(struct mpiuse_log_entry *), cmp_logs);
   qsort(send_queue, nr_send, sizeof(struct mpiuse_log_entry *), cmp_logs);
 
   if (verbose) {
-    message("maxsize = %zd, nr_send = %d, all_nr_recv = %d", maxsize, nr_send,
-            all_nr_recv);
+    message("maxsize = %zd, nr_send = %d, nr_recv = %d", maxsize, nr_send,
+            nr_recv);
   }
 
   return maxsize;