Perl / perl5

🐪 The Perl programming language
https://dev.perl.org/perl5/
Other
1.93k stars 551 forks source link

Problem with waitpid and wait on VMS #2155

Closed p5pRT closed 12 years ago

p5pRT commented 24 years ago

Migrated from rt.perl.org#3449 (status was 'resolved')

Searchable as RT3449$

p5pRT commented 24 years ago

From coucoureux.p@fr.ibm.com

This is a bug report for perl from coucoureux.p@​fr.ibm.com\, generated with the help of perlbug 1.26 running under perl 5.00503.


When I try to wait a process started before\, perl stop with the following message : Fatal VMS error (status=2280) at DISK$USR​:[PTPC.PERL.P500503]VMS.C;1\, line 779 a t wait.pl line 16. %SYSTEM-W-NONEXPR\, nonexistent process

In fact\, perl is waiting until process stop but do an error because the process is not still active. Same behaviour occurs if we give a wrong process id (except we don't wait). Example : $ perl -e "waitpid 99999\, 0 ;" Fatal VMS error (status=2280) at DISK$USR​:[PTPC.PERL.P500503]VMS.C;1\, line 779 . %SYSTEM-W-NONEXPR\, nonexistent process

wait.pl​: command = "run/detach disk\$usr​:[ptpc.testperl]prog.exe|"; open (COMMAND\, $command) || die "Pb to start $command\n"; $processDesc = \; # Find process id returned by run # run/detach return a string : # %RUN-S_PROC-ID\, identification of created process is

if ( $processDesc =~ /.*is\s([\da-fA-F]+)/) {   $processDesc = $1;   close COMMAND; } $processDesc = hex($processDesc); print "Wait procesdesc=$processDesc\n";

$endidPid = waitpid($processDesc\, 0);

print "End of the perl script\n";

Here you have the C program started by wait.pl​: #include \<stdio.h> int main(int argc\, char*argv[]) {   printf ("Hello\n");   sleep(10);   printf("Bye\n");   return(11); }


Site configuration information for perl 5.00503​:

Configured by unknown at Mon may 15 12​:02​:29.96 2000.

Summary of my perl5 (5.0 patchlevel 5 subversion 3) configuration​:   Platform​:   osname=VMS\, osvers=V7.2-1\, archname=VMS_AXP   uname='VMS alphanze01 V7.2-1 Compaq AlphaServer ES40'   hint=none\, useposix=false\, d_sigaction=define   usethreads=undef useperlio=undef d_sfio=undef   Compiler​:   cc='CC/DECC'\, optimize='undef'\, gccversion=undef   cppflags='undef'   ccflags ='/Include=[]/Standard=Relaxed_ANSI/Prefix=All/Obj=.obj/NoList'   stdchar='char'\, d_stdstdio=define\, usevfork=true   intsize=4\, longsize=4\, ptrsize=4\, doublesize=8   d_longlong=define\, longlongsize=8\, d_longdbl=define\, longdblsize=16   alignbytes=8\, usemymalloc=N\, prototype=define   Linker and Libraries​:   ld='Link'\, ldflags ='/NoTrace/NoMap'   libpth=/sys$share /sys$library   libs=   libc=(DECCRTL)\, so=exe\, useshrplib=undef\, libperl=undef   Dynamic Linking​:   dlsrc=dl_vms.c\, dlext=exe\, d_dlsymun=undef\, ccdlflags=''   cccdlflags=''\, lddlflags='/Share'

Locally applied patches​:


@​INC for perl 5.00503​:   perl_root​:[lib.VMS_AXP.5_00503]   perl_root​:[lib]   perl_root​:[lib.site_perl.VMS_AXP]   perl_root​:[lib.site_perl]   .


Environment for perl 5.00503​:   HOME=sys$sysroot​:[sysmgr]   LANG (unset)   LANGUAGE (unset)   LD_LIBRARY_PATH (unset)   LOGDIR (unset)   PATH=sys$common​:[tools.perl]   PERLSHR=PERL_ROOT​:[000000]PERLSHR.EXE   PERL_BADLANG (unset)   PERL_ROOT=DKA0​:[SYS0.SYSCOMMON.TOOLS.PERL.]   SHELL (unset)

p5pRT commented 19 years ago

From @wb8tyw

Can this problem be reproduced on a current version of Perl on VMS?

p5pRT commented 19 years ago

From coucoureux.p@fr.ibm.com

Sorry : I don't use anymore VMS machine so it will be difficult to me to reproduce a problem.

Pierre Coucoureux IBM\, Paris Laboratory Application & Integration Middleware Division 69\, rue de la Vecquerie - 44600 Saint-Nazaire Phone : +33 (0)2-51-16-4053 Fax : -4001 Email :coucoureux.p@​fr.ibm.com

p5pRT commented 12 years ago

From @Hugmeir

On Fri Jun 30 00​:44​:47 2000\, coucoureux.p@​fr.ibm.com wrote​:

This is a bug report for perl from coucoureux.p@​fr.ibm.com\, generated with the help of perlbug 1.26 running under perl 5.00503.

----------------------------------------------------------------- When I try to wait a process started before\, perl stop with the following message : Fatal VMS error (status=2280) at DISK$USR​:[PTPC.PERL.P500503]VMS.C;1\, line 779 a t wait.pl line 16. %SYSTEM-W-NONEXPR\, nonexistent process

In fact\, perl is waiting until process stop but do an error because the process is not still active. Same behaviour occurs if we give a wrong process id (except we don't wait). Example : $ perl -e "waitpid 99999\, 0 ;" Fatal VMS error (status=2280) at DISK$USR​:[PTPC.PERL.P500503]VMS.C;1\, line 779 . %SYSTEM-W-NONEXPR\, nonexistent process

wait.pl​: command = "run/detach disk\$usr​:[ptpc.testperl]prog.exe|"; open (COMMAND\, $command) || die "Pb to start $command\n"; $processDesc = \; # Find process id returned by run # run/detach return a string : # %RUN-S_PROC-ID\, identification of created process is

if ( $processDesc =~ /.*is\s([\da-fA-F]+)/) { $processDesc = $1; close COMMAND; } $processDesc = hex($processDesc); print "Wait procesdesc=$processDesc\n";

$endidPid = waitpid($processDesc\, 0);

print "End of the perl script\n";

Here you have the C program started by wait.pl​: #include \<stdio.h> int main(int argc\, char*argv[]) { printf ("Hello\n"); sleep(10); printf("Bye\n"); return(11); }

-------------------------------------------------------------------- Site configuration information for perl 5.00503​:

Configured by unknown at Mon may 15 12​:02​:29.96 2000.

Summary of my perl5 (5.0 patchlevel 5 subversion 3) configuration​: Platform​: osname=VMS\, osvers=V7.2-1\, archname=VMS_AXP uname='VMS alphanze01 V7.2-1 Compaq AlphaServer ES40' hint=none\, useposix=false\, d_sigaction=define usethreads=undef useperlio=undef d_sfio=undef Compiler​: cc='CC/DECC'\, optimize='undef'\, gccversion=undef cppflags='undef' ccflags ='/Include=[]/Standard=Relaxed_ANSI/Prefix=All/Obj=.obj/NoList' stdchar='char'\, d_stdstdio=define\, usevfork=true intsize=4\, longsize=4\, ptrsize=4\, doublesize=8 d_longlong=define\, longlongsize=8\, d_longdbl=define\, longdblsize=16 alignbytes=8\, usemymalloc=N\, prototype=define Linker and Libraries​: ld='Link'\, ldflags ='/NoTrace/NoMap' libpth=/sys$share /sys$library libs= libc=(DECCRTL)\, so=exe\, useshrplib=undef\, libperl=undef Dynamic Linking​: dlsrc=dl_vms.c\, dlext=exe\, d_dlsymun=undef\, ccdlflags='' cccdlflags=''\, lddlflags='/Share'

Locally applied patches​:

--- @​INC for perl 5.00503​: perl_root​:[lib.VMS_AXP.5_00503] perl_root​:[lib] perl_root​:[lib.site_perl.VMS_AXP] perl_root​:[lib.site_perl] .

--- Environment for perl 5.00503​: HOME=sys$sysroot​:[sysmgr] LANG (unset) LANGUAGE (unset) LD_LIBRARY_PATH (unset) LOGDIR (unset) PATH=sys$common​:[tools.perl] PERLSHR=PERL_ROOT​:[000000]PERLSHR.EXE PERL_BADLANG (unset) PERL_ROOT=DKA0​:[SYS0.SYSCOMMON.TOOLS.PERL.] SHELL (unset)

Another twelve year old ticket. I would say close it\, seeing how the VMS smokers don't seem to have this issue\, but just in case I'm taking the liberty to CC Craig Berry\, since he seems to be the go-to person for VMS issues. Apologies if I got that wrong!

p5pRT commented 12 years ago

From @craigberry

On Apr 30\, 2012\, at 1​:52 AM\, Brian Fraser via RT wrote​:

Another twelve year old ticket. I would say close it\, seeing how the VMS smokers don't seem to have this issue\, but just in case I'm taking the liberty to CC Craig Berry\, since he seems to be the go-to person for VMS issues. Apologies if I got that wrong!

Close it. I just tested the original reproducer with blead and it doesn't have the problem. I also happen to know our waitpid implementation has been extensively reworked since then.

________________________________________ Craig A. Berry mailto​:craigberry@​mac.com

"... getting out of a sonnet is much more difficult than getting in."   Brad Leithauser

p5pRT commented 12 years ago

@cpansprout - Status changed from 'open' to 'resolved'