delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/1997/07/21/16:43:39

From: newsham AT aloha DOT net (Tim Newsham)
Subject: fatal race condition
21 Jul 1997 16:43:39 -0700 :
Approved: cygnus DOT gnu-win32 AT cygnus DOT com
Distribution: cygnus
Message-ID: <199707212247.MAA21599.cygnus.gnu-win32@haleakala.aloha.net>
Mime-Version: 1.0
Original-To: gnu-win32 AT cygnus DOT com
X-Mailer: ELM [version 2.4 PL24 PGP3 *ALPHA*]
Original-Sender: owner-gnu-win32 AT cygnus DOT com

Hi,,

   There's a race condition between fork and signals.  This program
demonstrates the problem.

                                          Tim N.


--- forkbug.c ---

/*
 * forkbug.c
 *	Demonstrate bug in cygwin fork and signal code
 *
 * This code demonstrates a race condition between the signal code
 * and the fork code in cygwin.  When run this program will lock
 * up all cygwin processes.  The problem occurs when a signal
 * is delivered to a process when it is forking.  This seems
 * to corrupt the process' state which later causes the system
 * to hang when the process exits.
 */

#include <sys/types.h>
#include <signal.h>

int child;

void
handler(int sig)
{
    /* send signal to child, child should be in fork() */
    kill(child, SIGINT);
}

main()
{
    int res;

    child = fork();
    if(child == 0) {
        /* child -
         * sleep, then signal parent, then fork
         * parent will signal us while we're forking
         */
        sleep(1);
        kill(getppid(), SIGINT);
        res = fork();
        printf("done fork, child %d, pid %d, parent %d\n", 
            res, getpid(), getppid());
        exit(0);
    } else {
        /* parent -
         * sleep waiting for signal
         */
        signal(SIGINT, handler);
        sleep(20);
        exit(0);
    }
}
-
For help on using this list (especially unsubscribing), send a message to
"gnu-win32-request AT cygnus DOT com" with one line of text: "help".

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019