This is fixed in upstream zsh version 5.4 and newer. It's almost a one-liner; does it belong in debian/patches for the stretch release?
Here's the upstream commit: commit 12d950ba0cc345d047c94c9d94325dbfe47fc79d Author: Barton E. Schaefer <schae...@zsh.org> Date: Thu Feb 23 16:19:07 2017 -0800 40624: conditionally handle WIFCONTINUED to properly set SP_RUNNING process status diff --git a/ChangeLog b/ChangeLog index d3ce452bc..8a0e059a2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2017-02-23 Barton E. Schaefer <schae...@zsh.org> + + * 40624 (cf. Danek Duvall, 40563): Src/signals.c: conditionally + handle WIFCONTINUED to properly set SP_RUNNING process status + 2017-02-23 Jun-ichi Takimoto <takimot...@kba.biglobe.ne.jp> * 40604: configure.ac, Src/watch.c: revert to the old method if diff --git a/Src/signals.c b/Src/signals.c index a7176771a..68a7ae34d 100644 --- a/Src/signals.c +++ b/Src/signals.c @@ -522,6 +522,11 @@ wait_for_processes(void) #if defined(HAVE_WAIT3) && defined(HAVE_GETRUSAGE) struct timezone dummy_tz; gettimeofday(&pn->endtime, &dummy_tz); +#ifdef WIFCONTINUED + if (WIFCONTINUED(status)) + pn->status = SP_RUNNING; + else +#endif pn->status = status; pn->ti = ru; #else