Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 30 Jul 2003 17:25:42 +0400
From:      Andrew Belashov <bel@orel.ru>
To:        freebsd-sparc64@freebsd.org
Subject:   fork&Perl BUG
Message-ID:  <3F27C756.6070201@orel.ru>
In-Reply-To: <3F27A5DB.2050601@orel.ru>
References:  <3F210BF6.6070001@orel.ru> <20030725153258.GE10708@funkthat.com> <3F27A5DB.2050601@orel.ru>

next in thread | previous in thread | raw e-mail | index | archive | help
I modified Perl by adding sleep(10) in parent after fork():
---------------------------------------------------------------------
--- pp_sys.c.orig       Fri Apr  6 08:38:46 2001
+++ pp_sys.c    Wed Jul 30 17:17:50 2003
@@ -3703,6 +3703,9 @@
         if ((tmpgv = gv_fetchpv("$", TRUE, SVt_PV)))
             sv_setiv(GvSV(tmpgv), (IV)PerlProc_getpid());
         hv_clear(PL_pidstatus); /* no kids, so don't wait for 'em */
+    } else {
+       /* PARENT */
+       sleep(10);
      }
      PUSHi(childpid);
      RETURN;
---------------------------------------------------------------------

and my test script working OK!!!
---------------------------------------------------------------------
(gdb) run perlbug.pl 80000
Starting program: /usr/ports/lang/perl5.debug/work/perl-5.6.1/perl 
perlbug.pl 80000
................................................................................
Main: sum = 39977.1619376211, cnt = 80000
Child working...
Child: sum = 39977.1619376211, cnt = 80000
Child exiting...
Child pid = 92042
Parent working...
Parent: sum = 39977.1619376211, cnt = 80000
Parent waiting a child...
Parent exiting...
---------------------------------------------------------------------

IMHO, it is bug in fork(2).



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3F27C756.6070201>