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
_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to