Path: utzoo!attcan!uunet!comtst!mdv From: mdv@comtst.UUCP (Mike Verstegen) Newsgroups: comp.lang.perl Subject: Perl PL36 problem under vanilla System V Message-ID: <320@comtst.UUCP> Date: 19 Oct 90 21:44:52 GMT Organization: Domain Systems Inc., WPB, FL Lines: 50 Recently I posted a article describing a problem after building the recent perl 3.0 PL 36. I have tracked down the problem to a bug in util.c We are running a 3B2/600 with plain vanilla System V.3.1 which does not provide wait4 or waitpid. In the module wait4pid, several #ifdefs provide calls to wait4 or waitpid if they exist. Since we have neither, the code falls through to the following: wait4pid(pid,statusp,flags) int pid; int *statusp; int flags; { int result; STR *str; char spid[16]; [...] if (pid > 0) { sprintf(spid, "%d", pid); str = hfetch(pidstatus,spid,strlen(pid),FALSE); ^^^ Note that this is taking the strlen of the int pid, instead of the string spid. Here is the diff for the change 1344c1344 < str = hfetch(pidstatus,spid,strlen(pid),FALSE); --- > str = hfetch(pidstatus,spid,strlen(spid),FALSE); After this patch, testing completed with only two other failures: op.exec.........FAILED on test 4 op.stat.........FAILED on test 40 I'm still chasing these, but at least I can run tests without core dumps. Hope this helps somebody else out there to avoid chasing this problem. Mike -- Mike Verstegen Domain Systems, Inc Voice +1 407 686-7911 ..!uunet!comtst!mdv 5840 Corporate Way #100 Fax +1 407 478-2542 mdv@domain.com West Palm Beach, FL 33407 -- Mike Verstegen Domain Systems, Inc Voice +1 407 686-7911 ..!uunet!comtst!mdv 5840 Corporate Way #100 Fax +1 407 478-2542 mdv@domain.com West Palm Beach, FL 33407