Index: trunk/Ohana/src/opihi/pcontrol/CheckBusyJob.c
===================================================================
--- trunk/Ohana/src/opihi/pcontrol/CheckBusyJob.c	(revision 20047)
+++ trunk/Ohana/src/opihi/pcontrol/CheckBusyJob.c	(revision 20059)
@@ -57,4 +57,5 @@
   buffer = &host[0].comms_buffer;
   job = (Job *) host[0].job;
+  ASSERT (host == (Host *) job[0].host, "invalid host");
 
   /** host is up, need to parse message **/
@@ -87,5 +88,5 @@
     return (TRUE);
   }
-
+  ASSERT (outstate != PCONTROL_JOB_DONE, "impossible outstate for job");
 
   /* parse the exit status and sizes of output buffers */
@@ -97,4 +98,7 @@
   sscanf (p, "%*s %d", &job[0].stderr.size);
 
+  ASSERT (job[0].stdout.size > 0, "job has no output?");
+  ASSERT (job[0].stderr.size > 0, "job has no output?");
+
   // XXX runaway job if output too large?
   if (job[0].stdout.size > 0x1000000) abort();
@@ -105,4 +109,5 @@
   // don't unlink job and host yet
   PutHost (host, PCONTROL_HOST_BUSY, STACK_BOTTOM);
+  ASSERT (job[0].host, "host not set for job");
   PutJobSetState (job, PCONTROL_JOB_DONE, STACK_BOTTOM, outstate);
   gettimeofday (&job[0].stop, NULL);
Index: trunk/Ohana/src/opihi/pcontrol/CheckDoneJob.c
===================================================================
--- trunk/Ohana/src/opihi/pcontrol/CheckDoneJob.c	(revision 20047)
+++ trunk/Ohana/src/opihi/pcontrol/CheckDoneJob.c	(revision 20059)
@@ -36,4 +36,5 @@
   if ((status1 == PCLIENT_HUNG) || (status2 == PCLIENT_HUNG)) {
     PutHost (host, PCONTROL_HOST_BUSY, STACK_BOTTOM);
+    ASSERT (job[0].host, "host not set for job");
     PutJob (job, PCONTROL_JOB_DONE, STACK_BOTTOM);
     return (FALSE);
@@ -45,4 +46,7 @@
   host[0].job = NULL;
   PutHost (host, PCONTROL_HOST_DONE, STACK_BOTTOM);
+
+  ASSERT ((job[0].state == PCONTROL_JOB_EXIT) || (job[0].state == PCONTROL_JOB_CRASH), "unexpected job state");
+
   PutJob (job, job[0].state, STACK_BOTTOM);
 
