Sorry, I lost track of the original bug.  :)  So your original report
shows what I'd expect given your narrative:

Somehow, rsyslog is spinning off its input threads while its parent
process is alive.  The parent process sticks around until it itself dies
(a maximum of 5 mins due to the sleep(300) && exit(1) logic).  Or,
sometimes it can be induced to quit after one of its threads gets CPU
time (e.g. when kmsg is blocking on a read and gets some input).

So, based on your pstree, I'd say we are definitely hitting the read()
loop.  But I'm still confused about why the parent process remains
alive.  By the time rsyslog spins off input threads, it has sent a
kill() to its parent (thus allowing the init script to continue).  The
bug seems to be that in one situation the parent ignores the signal, in
the other, the parent waits to process the signal until a thread of a
child is unblocked.  Ideally in both, the parent would immediately
process the signal and anybody blocking on a read() would just get
EINTR.  I'd love to be able to consistently reproduce this.

I'm hesitant to work around this by changing the imklog plugin to be
nonblocking, as this seems to be a more generic bug that could be
triggered by any plugin.

-- 
hanging during start
https://bugs.launchpad.net/bugs/423943
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to