From: Kurt Zeilenga Date: Thu, 24 Dec 1998 19:03:42 +0000 (+0000) Subject: Use fork1() instead of fork(). May reduce problems under Solaris THR. X-Git-Tag: OPENLDAP_REL_ENG_1_1_1~7 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0539e2d4f42dbf0016e9a12381a78205e1a8230c;p=thirdparty%2Fopenldap.git Use fork1() instead of fork(). May reduce problems under Solaris THR. --- diff --git a/servers/slapd/back-shell/fork.c b/servers/slapd/back-shell/fork.c index 13f099b331..2c2f9b72f8 100644 --- a/servers/slapd/back-shell/fork.c +++ b/servers/slapd/back-shell/fork.c @@ -32,8 +32,20 @@ forkandexec( * parent *rfp <- c2p[0] | c2p[1] <- stdout child */ - switch ( (pid = fork()) ) { +#ifdef HAVE_THR + switch ( (pid = fork1()) ) +#else + switch ( (pid = fork()) ) +#endif + { case 0: /* child */ + /* + * child could deadlock here due to resources locked + * by our parent + * + * If so, configure --without-threads or implement forking + * via a surrogate parent. + */ close( p2c[1] ); close( c2p[0] ); if ( dup2( p2c[0], 0 ) == -1 || dup2( c2p[1], 1 ) == -1 ) {