--- slirp/misc.c 2007-08-27 10:30:20.000000000 +0200 +++ slirp/misc.c.new 2007-08-27 10:29:50.000000000 +0200 @@ -313,6 +313,7 @@ int opt; int master; char *argv[256]; + int mask; #if 0 char buff[256]; #endif @@ -346,8 +347,10 @@ } } + mask = sigsetmask(~0); switch(fork()) { case -1: + sigsetmask(mask); lprint("Error: fork failed: %s\n", strerror(errno)); close(s); if (do_pty == 2) @@ -426,6 +429,7 @@ exit(1); default: + sigsetmask(mask); if (do_pty == 2) { close(s); so->s = master;