On Sat, Feb 15, 2014 at 10:17:38AM -0800, SW wrote:

> Feb 15 17:20:40 mail postfix/smtpd[27935]:
>       disconnect from m12-184.163.com[220.181.12.184]
> Feb 15 17:22:20 mail postfix/master[1555]:
>       panic: master_reap: unknown pid: 27935
> 
> So it looks like there was a delay of 1m40s between the disconnect and
> delay.

That's the 100s max_idle timer.  So the process exited for real at
that time.  It must have been deleted from master's process list
earlier.  Were there any other log entries from master(8) between
the two events?

Perhaps WIFSTOPPED() conjecture is correct.  In which case Postfix
needs a test for this.  Something like:

--- src/master/master_spawn.c
+++ src/master/master_spawn.c
@@ -311,6 +311,9 @@ void    master_reap_child(void)
            && WTERMSIG(status) == MASTER_KILL_SIGNAL)
 
        if (!NORMAL_EXIT_STATUS(status)) {
+           /* Debugged processes may be reported to master(8) as stopped */
+           if (WIFSTOPPED(status))
+               continue;
            if (WIFEXITED(status))
                msg_warn("process %s pid %d exit status %d",
                         serv->path, pid, WEXITSTATUS(status));

-- 
        Viktor.

Reply via email to