Index: trunk/Ohana/src/opihi/pcontrol/CheckSystem.c
===================================================================
--- trunk/Ohana/src/opihi/pcontrol/CheckSystem.c	(revision 17475)
+++ trunk/Ohana/src/opihi/pcontrol/CheckSystem.c	(revision 17476)
@@ -264,18 +264,33 @@
   struct timeval start, stop;
   int i, Nobject;
-  Stack *stack;
-  Host  *host;
-  float dtime;
-
-  /* Loop through objects on the stack, no more than once. see note above */
-  stack = GetHostStack (PCONTROL_HOST_RESP);
-  Nobject = stack[0].Nobject;
-
-  /* always allow at least one test */
-  gettimeofday (&start, (void *) NULL);
-  dtime = 0.0;
-  for (i = 0; (i < Nobject) && (dtime < MaxDelay); i++) {
-    host = PullStackByLocation (stack, STACK_TOP);
-    if (host == NULL) break;
+  Stack *hoststack;
+  Stack *jobstack;
+  Host *host;
+  Job *job;
+  float dtime;
+
+  /* Loop through objects on the stack, no more than once. see note above */
+  hoststack = GetHostStack (PCONTROL_HOST_RESP);
+  jobstack = GetJobStack (PCONTROL_JOB_RESP);
+  Nobject = hoststack[0].Nobject;
+
+  /* always allow at least one test */
+  gettimeofday (&start, (void *) NULL);
+  dtime = 0.0;
+  for (i = 0; (i < Nobject) && (dtime < MaxDelay); i++) {
+    LockStack (jobstack);
+    host = PullStackByLocation (hoststack, STACK_TOP);
+    if (host == NULL) {
+	UnlockStack (jobstack);
+	break;
+    }
+
+    // if the host has a job, we need to pull the job from its stack
+    job = (Job *) host[0].job;
+    if (job != NULL) {
+	RemoveStackByID (jobstack, job[0].JobID);
+    }
+    UnlockStack (jobstack);
+
     CheckRespHost (host);
     gettimeofday (&stop, (void *) NULL);
