Beefy Boxes and Bandwidth Generously Provided by pair Networks vroom
Problems? Is your data what you think it is?
 
PerlMonks  

Re: Weird use warnings FATAL behavior

by naikonta (Curate)
on Mar 18, 2008 at 09:19 UTC ( #674749=note: print w/ replies, xml ) Need Help??


in reply to Weird use warnings FATAL behavior

OK, here is the expanded version of the original OP's oneliner, following tye's explanation:

cat fatals.pl #!/usr/bin/perl use strict; use warnings FATAL => 'all'; my $cmd = shift || '_bad_exe_ a b c'; print "I'm parent with id $$\n"; eval { my $pid = open CMD, "-|"; if ($pid) { print "I'm forking a child with id $pid\n"; print while <CMD>; } else { #no warnings; # get rid of warnings on "Can't exec:..." print "[$$] I'm child, about to exec [$cmd]\n"; exec $cmd; } }; die "[$$] ERROR: $@" if $@; print "[$$]HOW DID I GET HERE?\n";
Run with correct command (just as comparisson):
$ perl fatals.pl ls I'm parent with id 6238 I'm forking a child with id 6239 [6239] I'm child, about to exec [ls] 642663.pl 642676.pl 642682.pl 644761.pl
No problem there. Now, run with no args (default command):
$ perl fatals.pl I'm parent with id 6240 [6241] ERROR: Can't exec "_bad_exe_": No such file or directory at fat +als.pl line 18. I'm forking a child with id 6241 [6241] I'm child, about to exec [_bad_exe_ a b c] [6240]HOW DID I GET HERE?
So I guess, it's the child that triggers the "Can't exec ..." warning that gets "upgraded" into fatal error (due to FATAL), trapped in $@, and dies. The child dies, the parent doesn't, that's HOW DID I GET HERE, I suppose. OTOH, if the no warnings; is uncommented, then well, no "Can't exec..." warning, no $@ trapping, and the child lives pretending nothing happens, yet covering up by asking HOW DID I GET HERE.

Open source softwares? Share and enjoy. Make profit from them if you can. Yet, share and enjoy!


Comment on Re: Weird use warnings FATAL behavior
Select or Download Code
Re^2: Weird use warnings FATAL behavior
by hsola (Initiate) on Mar 18, 2008 at 15:38 UTC
    Ok, so the version with explicit forking shows what is happenng better. This was my example (jneil just posted it for me). So there is no perl bug?

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://674749]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (14)
As of 2014-04-16 10:51 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    April first is:







    Results (424 votes), past polls