From: Kurt Zeilenga Date: Thu, 24 Dec 1998 01:16:22 +0000 (+0000) Subject: Apply patch to better behave under Solaris threads (thr). X-Git-Tag: OPENLDAP_SLAPD_BACK_LDAP~878 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=9da13f321ca8417055c1cc86cbd828906140cc07;p=openldap Apply patch to better behave under Solaris threads (thr). Could still deadlock on the close(). A surrogate parent should be used to create the children... --- 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 ) {