[25960] in Perl-Users-Digest
Perl-Users Digest, Issue: 8179 Volume: 10
daemon@ATHENA.MIT.EDU (Perl-Users Digest)
Fri Jun 17 00:06:29 2005
Date: Thu, 16 Jun 2005 21:05:03 -0700 (PDT)
From: Perl-Users Digest <Perl-Users-Request@ruby.OCE.ORST.EDU>
To: Perl-Users@ruby.OCE.ORST.EDU (Perl-Users Digest)
Perl-Users Digest Thu, 16 Jun 2005 Volume: 10 Number: 8179
Today's topics:
Re: "END failed" -- but why? <smurf@smurf.noris.de>
Re: perl + POP3 Protocol <slake2@ns.sympatico.ca>
Digest Administrivia (Last modified: 6 Apr 01) (Perl-Users-Digest Admin)
----------------------------------------------------------------------
Date: Fri, 17 Jun 2005 00:58:47 +0200
From: Matthias Urlichs <smurf@smurf.noris.de>
Subject: Re: "END failed" -- but why?
Message-Id: <pan.2005.06.16.22.58.47.840@smurf.noris.de>
Hi, Anno Siegel wrote:
> "<F> line 1796" refers to a file opened by the program. The only source
> line referenced is line 1, but I would take that with a grain of salt.
A large grain. In fact, make that a mid-sized boulder.
Here's what happens when I run it under "debugperl -DtlsDvv":
[ lots of output ]
(tools/mig.strings:219) print
This is the last line of mig.strings, my main code
STACK 0: MAIN
CX 0: BLOCK => SV_YES
(tools/mig.strings:219) leave
(tools/mig.strings:0) POPBLOCK scope 2 at pp_hot.c:1800
Leaving block 0, type BLOCK
(tools/mig.strings:0) LEAVE scope 2 at pp_hot.c:1837
(tools/mig.strings:0) LEAVE scope 1 at perl.c:2257
(tools/mig.strings:0) Setting up jumplevel bffe8770, was bffe8bb0
(tools/mig.strings:0) ENTER scope 1 at perl.c:2126
(tools/mig.strings:0) ENTER scope 2 at perl.c:2176
Entering block 0, type EVAL
(tools/mig.strings:0) Setting up jumplevel bffe85d0, was bffe8770
Use of uninitialized value in null operation, <F> line 1796.
(tools/mig.strings:0) ENTER scope 3 at pp_hot.c:2624
(tools/mig.strings:0) (Found eval #0)
(tools/mig.strings:0) POPBLOCK scope 2 at pp_ctl.c:1361
Leaving block 0, type EVAL
(tools/mig.strings:0) LEAVE scope 2 at pp_ctl.c:1375
(tools/mig.strings:0) LEAVE scope 1 at perl.c:2257
Undefined subroutine &main:: called, <F> line 1796.
END failed--call queue aborted at tools/mig.strings line 1, <F> line 1796.
<F> is of course the file I was reading in my main code.
Line 1 is a no-argument #!/usr/bin/perl line.
The main code doesn't use any END blocks. One of my modules does use END,
but (I just added print statements to it) the problem occurs before that
END block is called...
Anyway, I just found the trigger for this problem. The script is using
autoloaded code. A load failure (file not found) results in a non-local
GOTO. Apparently Perl's support for these is still somewhat buggy.
I'll check whether the problem goes away if I replace the GOTO with a
die/eval combo, but historically that hasn't worked at all well either.
(In fact it was worse in the past, which is why my current code tries
not to use it.)
I'll also have to prepare a nice small testcase for this, but I'm afraid
it simply runs afoul of similar cross-namespace call issue perlbug #24589
hits, just in the other direction...
--
Matthias Urlichs | {M:U} IT Design @ m-u-it.de | smurf@smurf.noris.de
Disclaimer: The quote was selected randomly. Really. | http://smurf.noris.de
- -
<Knghtbrd> xtifr - beware of james when he's off his medication =3D>
------------------------------
Date: Fri, 17 Jun 2005 04:01:34 GMT
From: "Stephen Lake" <slake2@ns.sympatico.ca>
Subject: Re: perl + POP3 Protocol
Message-Id: <yWrse.48252$Ph4.1264940@ursa-nb00s0.nbnet.nb.ca>
Thanx Guys, that was kicking I was looking for, everything is working good
:)
------------------------------
Date: 6 Apr 2001 21:33:47 GMT (Last modified)
From: Perl-Users-Request@ruby.oce.orst.edu (Perl-Users-Digest Admin)
Subject: Digest Administrivia (Last modified: 6 Apr 01)
Message-Id: <null>
Administrivia:
#The Perl-Users Digest is a retransmission of the USENET newsgroup
#comp.lang.perl.misc. For subscription or unsubscription requests, send
#the single line:
#
# subscribe perl-users
#or:
# unsubscribe perl-users
#
#to almanac@ruby.oce.orst.edu.
NOTE: due to the current flood of worm email banging on ruby, the smtp
server on ruby has been shut off until further notice.
To submit articles to comp.lang.perl.announce, send your article to
clpa@perl.com.
#To request back copies (available for a week or so), send your request
#to almanac@ruby.oce.orst.edu with the command "send perl-users x.y",
#where x is the volume number and y is the issue number.
#For other requests pertaining to the digest, send mail to
#perl-users-request@ruby.oce.orst.edu. Do not waste your time or mine
#sending perl questions to the -request address, I don't have time to
#answer them even if I did know the answer.
------------------------------
End of Perl-Users Digest V10 Issue 8179
***************************************