Skip Menu |
 
Report information
Id: 2718
Status: resolved
Priority: 0/
Queue: perl5

Owner: Nobody
Requestors: mjd [at] plover.com
Cc:
AdminCc:

Operating System: Linux
PatchStatus: (no value)
Severity: medium
Type: notabug
Perl Version: (no value)
Fixed In: (no value)



From: mjd [...] plover.com
Date: 26 Mar 2000 06:26:08 -0000
To: perlbug [...] perl.com
Subject: `syntax error' message not trapped by $SIG{__DIE__}
Download (untitled) / with headers
text/plain 2.8k
This is a bug report for perl from mjd@plover.com, generated with the help of perlbug 1.26 running under perl 5.00503. ----------------------------------------------------------------- [Please enter your report here] Here's a sample program: #!/usr/bin/perl sub foo { print "TRAPPED MESSAGE $_[0]\n"; exit 0; } BEGIN { $SIG{__DIE__} = \&foo } 1+(2*3; When run with 5.005_03 or 5.6.0, this yields: syntax error at test.pl line 5, near "3;" TRAPPED MESSAGE Execution of test.pl aborted due to compilation errors. I want the `syntax error' message to be trapped also. The discussion of $SIG{__DIE__} in `perlvar' suggests that it should be trapped: `__DIE__'/`__WARN__' handlers are very special in one respect: they may be called to report (proba- ble) errors found by the parser. In such a case the parser may be in inconsistent state [Please do not change anything below this line] ----------------------------------------------------------------- --- Site configuration information for perl 5.00503: Configured by mjd at Sun Jan 23 14:15:22 EST 2000. Summary of my perl5 (5.0 patchlevel 5 subversion 3) configuration: Platform: osname=linux, osvers=2.2.12, archname=i586-linux uname='linux plover 2.2.12 #10 mon nov 1 17:02:09 est 1999 i586 unknown ' hint=recommended, useposix=true, d_sigaction=define usethreads=undef useperlio=undef d_sfio=undef Compiler: cc='cc', optimize='-O2', gccversion=egcs-2.90.29 980515 (egcs-1.0.3 release) cppflags='-Dbool=char -DHAS_BOOL -I/usr/local/include' ccflags ='-Dbool=char -DHAS_BOOL -I/usr/local/include' stdchar='char', d_stdstdio=define, usevfork=false intsize=4, longsize=4, ptrsize=4, doublesize=8 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12 alignbytes=4, usemymalloc=n, prototype=define Linker and Libraries: ld='cc', ldflags =' -L/usr/local/lib' libpth=/usr/local/lib /shlib /lib /usr/lib libs=-lndbm -lgdbm -ldbm -ldb -ldl -lm -lc libc=/lib/libc.so.6, so=so, useshrplib=false, libperl=libperl.a Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-rdynamic' cccdlflags='-fpic', lddlflags='-shared -L/usr/local/lib' Locally applied patches: --- @INC for perl 5.00503: /usr/lib/perl5/5.00503/i586-linux /usr/lib/perl5/5.00503 /usr/lib/perl5/site_perl/5.005/i586-linux /usr/lib/perl5/site_perl/5.005 . --- Environment for perl 5.00503: HOME=/home/mjd LANG (unset) LANGUAGE (unset) LD_LIBRARY_PATH=/lib:/usr/lib:/usr/X11R6/lib LOGDIR (unset) PATH=/home/mjd/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11/bin:/usr/games:/sbin:/usr/sbin:/usr/local/bin/X11:/usr/local/bin/mh:/data/mysql/bin:/home/mjd/TPI/bin:/usr/local/mysql/bin PERL_BADLANG (unset) SHELL=/bin/bash
From: Ilya Zakharevich <ilya [...] math.ohio-state.edu>
Subject: Re: [ID 20000325.009] `syntax error' message not trapped by $SIG{__DIE__}
To: mjd [...] plover.com
Date: Tue, 28 Mar 2000 22:59:18 -0500 (EST)
Cc: perl5-porters [...] perl.org
Download (untitled) / with headers
text/plain 913b
mjd@plover.com writes: Show quoted text
> sub foo { > print "TRAPPED MESSAGE $_[0]\n"; > exit 0; > } > > BEGIN { $SIG{__DIE__} = \&foo } > > 1+(2*3;
Show quoted text
> When run with 5.005_03 or 5.6.0, this yields:
Show quoted text
> syntax error at test.pl line 5, near "3;" > TRAPPED MESSAGE Execution of test.pl aborted due to compilation errors.
Show quoted text
> I want the `syntax error' message to be trapped also. The discussion > of $SIG{__DIE__} in `perlvar' suggests that it should be trapped: > > `__DIE__'/`__WARN__' handlers are very special in > one respect: they may be called to report (proba- > ble) errors found by the parser. In such a case > the parser may be in inconsistent state
Did you try setting __WARN__ handler? Or maybe you want your Perl compiler exit after one error? ;-) [Was this changed recently?] Ilya
Date: Wed, 29 Mar 2000 00:44:18 -0500
From: Rick Delaney <rick.delaney [...] home.com>
To: Ilya Zakharevich <ilya [...] math.ohio-state.edu>
Cc: mjd [...] plover.com, perl5-porters [...] perl.org
Subject: Re: [ID 20000325.009] `syntax error' message not trapped by $SIG{__DIE__}
Download (untitled) / with headers
text/plain 1.2k
Ilya Zakharevich wrote: Show quoted text
> > Did you try setting __WARN__ handler? Or maybe you want your Perl > compiler exit after one error? ;-) [Was this changed recently?]
It was changed for strict warnings so that they can be caught in eval. That was change 4197. For instance, use strict; eval q{ $x = 1; foo; } or print "Caught:[$@]"; now prints "Caught:[Global symbol..." etc. Much nicer than before. ...searching perldelta... =head2 All compilation errors are true errors Some "errors" encountered at compile time were by neccessity generated as warnings followed by eventual termination of the program. This enabled more such errors to be reported in a single run, rather than causing a hard stop at the first error that was encountered. The mechanism for reporting such errors has been reimplemented to queue compile-time errors and report them at the end of the compilation as true errors rather than as warnings. This fixes cases where error messages leaked through in the form of warnings when code was compiled at run time using C<eval STRING>, and also allows such errors to be reliably trapped using C<eval "...">. I infer from this that $SIG{__DIE__} should also now be getting all these, just like $@ is. -- Rick Delaney rick.delaney@home.com
Download (untitled) / with headers
text/plain 547b
[mjd@plover.com - Sat Mar 25 14:25:36 2000]: Show quoted text
> When run with 5.005_03 or 5.6.0, this yields: > > syntax error at test.pl line 5, near "3;" > TRAPPED MESSAGE Execution of test.pl aborted due to > compilation errors.
Show quoted text
> I want the `syntax error' message to be trapped also. The discussion > of $SIG{__DIE__} in `perlvar' suggests that it should be trapped:
This issue appears to have been resolved, as of the 5.8/5.9 development track: TRAPPED MESSAGE syntax error at 2718.pl line 12, near "3;" Thanks for the bug report! - R.


This service is sponsored and maintained by Best Practical Solutions and runs on Perl.org infrastructure.

For issues related to this RT instance (aka "perlbug"), please contact perlbug-admin at perl.org