patch 7.4.1824
Problem:    When a job is no longer referenced and does not have an exit
            callback the process may hang around in defunc state. (Nicola)
Solution:   Call job_status() if the job is running and won't get freed
            because it might still be useful.
diff --git a/src/channel.c b/src/channel.c
index 444599c..e9a44e6 100644
--- a/src/channel.c
+++ b/src/channel.c
@@ -4144,7 +4144,7 @@
 	     * recurse into Lists, Dictionaries etc. */
 	    job_free_contents(job);
 	    did_free = TRUE;
-    }
+	}
     return did_free;
 }
 
@@ -4234,7 +4234,7 @@
 }
 
 /*
- * Called once in a while: check if any jobs with an "exit_cb" have ended.
+ * Called once in a while: check if any jobs that seem useful have ended.
  */
     void
 job_check_ended(void)
@@ -4252,7 +4252,7 @@
 	for (job = first_job; job != NULL; job = next)
 	{
 	    next = job->jv_next;
-	    if (job->jv_status == JOB_STARTED && job->jv_exit_cb != NULL)
+	    if (job->jv_status == JOB_STARTED && job_still_useful(job))
 		job_status(job); /* may free "job" */
 	}
     }