From 9da13f321ca8417055c1cc86cbd828906140cc07 Mon Sep 17 00:00:00 2001 From: Kurt Zeilenga Date: Thu, 24 Dec 1998 01:16:22 +0000 Subject: [PATCH] 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... --- servers/slapd/back-shell/fork.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) 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 ) { -- 2.39.5