diff -up mksh/jobs.c.waitfail mksh/jobs.c --- mksh/jobs.c.waitfail 2017-08-09 10:06:36.500591694 +0200 +++ mksh/jobs.c 2017-08-09 10:08:34.325534710 +0200 @@ -1009,8 +1009,14 @@ j_notify(void) } for (j = job_list; j; j = tmp) { tmp = j->next; - if (j->flags & JF_REMOVE) - remove_job(j, "notify"); + if (j->flags & JF_REMOVE) { + if (j == async_job || (j->flags & JF_KNOWN)) { + j->flags = (j->flags & ~JF_REMOVE) | JF_ZOMBIE; + j->job = -1; + nzombie++; + } else + remove_job(j, "notify"); + } } shf_flush(shl_out); #ifndef MKSH_NOPROSPECTOFWORK