Deadlock in init

Seth Bollinger seth.boll at gmail.com
Thu Nov 20 23:37:16 UTC 2014


Hello All,

We recently ran into a deadlock in init.  The window is small, but I
figured I would post to the list anyway.

There are syslog messages in the signal handler for reboot and shutdown.
Internally this function grabs a lock.  If the main loop is trying to grab
this lock at exactly the same time (also posting a syslog message), then a
deadlock is possible.

Here's a small example program that should demonstrate the issue.

#include <stdio.h>
#include <stdlib.h>
#include <syslog.h>
#include <signal.h>

void handler(int sig)
{
        syslog(LOG_INFO, "handler");
}

void main(int argc, char **argv)
{
        signal(SIGUSR1, handler);

        while (1)
        {
                syslog(LOG_INFO, "main");
        }
}

while [ true ]; do kill -USR1 PID; done

Thanks,

Seth
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/busybox/attachments/20141120/f408e44f/attachment.html>


More information about the busybox mailing list