This Week on perl5-porters - 29 May-4 June 2006
Funnily enough I developed a patch for this exact problem a few days
ago. -- Dave Mitchell, commenting bug #39252
Topics of Interest
On un-"eval"-able code
Peter Valdemar Mørch ran into a curious problem with "die"ing code,
which when wrapped in an "eval", apparently "die"s as well, however,
nothing was captured in [EMAIL PROTECTED] This only occurs when perl runs out
of
file handles.
Dave Mitchell saw that "Carp" overwrites $@ all by itself if it fails
to load "Carp::Heavy", and so he put a stop to that, and also tweaked
pp_ctl.c to deal with running out of file handles in a more graceful
manner.
Can you handle it
http://xrl.us/m7eq
A better DynaLoader.t with less assumptions
The "DynaLoader" thread continued to attract a surprising amount of
traffic, with an attempt by Jarkko Hietaniemi to provide a test suite
that would work in a suitably safe cross-platform manner. Craig A.
Berry weighed in with some information on the quirks the VMS brings to
the party.
Dynamight
http://xrl.us/m7er
Redoing part of change #27374
Back in March, H.Merijn Brand checked in some changes to
Porting/checkcfgvar.pl to teach it about VMS's configure.com. Abe
Timmerman discovered that the DCL code in question doesn't run too
happily on VAX/VMS 7.2 and suggested an improvement, however, he then
saw compiler errors in globals.c due to conflicting definitions of
variables.
Craig A. Berry was happy to see this level of care and attention being
devoted to the VAX, and explained how to debug the problem. John E.
Malmberg also provided some information on how to trace back from the
error message to the source (which involves a certain amount of
unwinding of included header files).
http://xrl.us/m7es
"Pod::Html" not safe with taint mode
Ivan Wills runs the DocPerl project on SourceForge, and noticed that
"Pod::Html" doesn't play nicely with taint mode, due to its internal
caching mechanism calling "getcwd()", and wondered what to do about
it.
DocPerl
http://docperl.sourceforge.net/
The p5p thread
http://xrl.us/m7et
Documenting how the regexp engine works
Having spent a fair amount of time under the hood of the regular
expression engine recently, Yves Orton started to document his
understanding of how it works, and asked for feedback. Several people
made some suggestions.
Notably, Dave Mitchell wanted the documentation to make it clear that
it was a "this is sort of how it works, more or less, today, maybe a
bit" type document, and not something that people could construe as a
guarantee, and therefore use it as an API, forever condemning the
future porters to maintaining the behaviour in a compatible manner.
Marvin Humphrey hoped that the information provided would be
sufficient for an XS author to figure out how to execute a regular
expression directly from C.
First cut
http://xrl.us/m7eu
Yves rolled the suggestions into his prose, and delivered a new
version.
Second cut
http://xrl.us/m7ev
Using the Aho-Corasick pattern matching algorithm
Yves then shipped a masterful patch, to add another alternative for
the engine to use to find matches. The fact that he dared delve into
"intuit_start" deserves a round of applause. But before people could
do anything, Yves withdrew the patch, having spotted a way to improve
it.
It ain't done until it's done
http://xrl.us/m7ew
What are legal characters inside "$(xxxx)"?
John E. Malmberg wanted to know what "$(xxxx)" could be expected to
contain, since it turns out that on an OpenVMS ODS-5 filesystem,
"./$(xxxx)" is a perfectly valid filename, and he was worried that
Perl would try to interpret in odd ways, or rather, a "make"-like
utility might have a bit of trouble with it.
Craig A. Berry responded, saying that he thought that John had
stumbled across a weird interaction between Perl and VMS's DCL parsing
and macro expansion, and wanted to know where and why the problem
arose.
John explained that, while the system had worked adequately up until
now, the advent of ODS-5 filesystems changes things somewhat, and he
wanted to see how a Unix filename encoded in UTF-8 would be handled in
this brave new world.
In a desert on a file with no name
http://xrl.us/m7ex
"tied" scalar references (aren't)
Dave Mitchell reported a problem that had surfaced on Perlmonks, in
that when a reference is tied, after the first call to "FETCH()", the
code in "pp_entersub" and "pp_rv2sv" have code that accidentally on
purpose short-circuits "FETCH" from being called again, thus stopping
the usual "tie" mechanism from operating.
Nicholas Clark considered the issue, and concluded that while the
current behaviour was broken, and that it while it was clear what the
correct behaviour should look like, fixing it would not be easy.
The problem is that magic needs to be invoked only once when reading
or writing a variable. For ordinary scalars, this works fine, but for
references, it doesn't work, because there is nowhere to squirrel away
the necessary flag to determine whether or not to invoke magic. And if
fixing it means that magic might get called twice, the result is
likely to be even worse than failing to calling it once.
By the pricking of my thumbs
http://xrl.us/m7ey
Watching the smoke signals
Smoke [5.9.4] 28316 FAIL(F) openvms V8.2 (Alpha/3cpu)
This failure, on one of Abe Timmerman's boxes, was caused by
"Compress::Zlib"'s test suite, and for some reason, a scalar that was
supposed to be holding the name of a file in which to capture "STDERR"
was empty. Paul Marquess asked for the verbose output of the tests, so
see what was going wrong.
Nicholas Clark wondered whether the tests would fail in a similar
fashion if the variable held a single newline character, as he
recalled that on VMS, newlines will sometimes wind up where Unix
people wouldn't expect to find them. Craig A. Berry ran the tests on
some other equipment, but couldn't reproduce the failures. On the
other hand, he did notice that autosplit.ix might be not wind up in
the right place.
Up in smoke
http://xrl.us/m7ez
New and old bugs from RT
More on memory leaks from "eval "sub { \$foo = 22 "" (#37231)
Nicholas Clark thanked Dave Mitchell for the "eval" leak plugging, and
reported that the only way he was able to make perl leak on bad code
was with "1; use abc" and a downright evil "BEGIN {$^H{a}++}; 1; use
6".
Dave Mitchell scoffed at this feeble attempt and added a
"SAVEDESTRUCTOR_X" function to deal with cleaning up the parse stack
if it fails prematurely. He was brave enough to announce that that
should be the end of the "eval" leaks.
The holey grail
http://xrl.us/m7e2
More on "readline" of a non-newline-terminated last line results in "Bad
file descriptor" (#39060)
Mark Martinec reported this problem early May. Andreas Koenig moved
the issue forward by using his binary-chop compilation technique to
trace the problem back to a change made by Jarkko in 2003.
Being silently happy
http://xrl.us/m7e4
More on numeric comparison operands not treated consistently (#39062)
Andreas then wheeled the time machine out again, this time isolating
the problem to a patch from Gurusamy Sarathy in 2000. In doing so, he
discovered that an easy work-around consists of adding
"$Data::Dumper::Useperl=1", which makes the problem go away (that is,
use the pure-Perl rather than XS version).
He also slimmed the test case down to reveal the peculiar differences
between left and right operands in numeric comparisons more clearly.
Not your usual number
http://xrl.us/m7e5
Failure not always detected in "IPC::Open2::open2" resolved (#39127)
Dave tightened up the documentation, and made the code deal correctly
with "exec" failures.
There's always IPC::Run
http://xrl.us/m7e6
By a strange coincidence, "xdrudis", doing his work at tinet, was
dealing with the same job. He had built an elaborate bug report to
suggest a number of ways of handling it. Dave dealt with it in change
#28347.
The head was never found
http://xrl.us/m7e7
"IO::Socket::connect" returns wrong "errno" on timeout resolved (#39178)
Steve Peters applied the fix that suggested in the bug report.
http://xrl.us/m7e8
Panic opt close (#39233)
Johan Vromans found that "m/(?:(\w\w){2}){8}/" cause perl to panic
with a "Panic opt close in regex". David Landgren found that an even
simpler pattern, "m/(?:(a){1})?/", would also do the trick.
No idea why, though
http://xrl.us/m7e9
Core dump in "Storable::store" (#39246)
Mark-Jason Dominus managed to provoke "Storable" into dumping core, by
using it as a backing cache for his "Memoize" module.
http://xrl.us/m7fa
Steve Peters identified this problem as being related to, or a
duplicate of, bug #21436.
http://xrl.us/m7fb
"defined"-ness of substrings disappear over repeated calls (#39247)
Martin at datacash discovered a problem with substrings in subroutines
losing their "pPOK", which can lead to all sorts of bad things, the
least of which being scalars passed to "DBD::Mysql" being treated as
"NULL" when they are not.
Sadahiro Tomoyuki determined that change #20462, designed to fix bug
#23207, was the origin of the problem. He was puzzled, however, since
when he reverted the change, while this fixed up Martin's immediate
problem, the original problem that that patch was meant to fix didn't
manifest itself. Which would mean it was fixed by another unrelated
patch.
A twisty maze of changes, all alike
http://xrl.us/m7fc
On the other hand, when Martin did the same, the problem did show up,
which made him wonder a bit, until Tomoyuki explained that the
newly-unmasked bug shows up on 5.9.0, but no longer on versions 5.9.1
through 5.9.3. He also found the source of confusion: bug #24816,
which was fixed in blead with #22074, and later backported as change
#27391 in the maintenance track, solves both problems and thus #20462
can well and truly be reverted.
Confused yet?
http://xrl.us/m7fd
All this made Martin wonder whether "DBD::Mysql" should be taking more
care with what gets passed to it, specifically, testing for magic as
well as "SvOK", which would make it more robust.
Tomoyuki thought that perl's internals are far too complicated for XS
authors to be expected to deal with in all circumstances, and that a
better solution in the present case would be to store the substring
into a temporary scalar and pass that, instead of passing the
substring directly.
Substrings are deeply magical
http://xrl.us/m7fe
handy.h does not guard against being "#include"d twice (#39251)
Gabriel Nazar noticed that handy.h doesn't have the
"#ifdef"/"#define"/"#endif" trick to stop the compiler from going
bananas when it gets included more than once. H.Merijn Brand wanted to
know what circumstances led to this happening in the first place.
I want handy
http://xrl.us/m7ff
"stat()" doesn't work on dirhandles (#39261)
Mark-Jason Dominus posted a short snippet that showed how you can't
"stat" a handle opened by "opendir", and get anything useful back.
Peter Dintelmann thought that "stat" was documented as not doing
anything useful with directory handles.
Steve Peters had some code on the back-burner that could deal with
this issue, and others, so he dusted it off to see what could be done.
Would be handy
http://xrl.us/m7fg
Perl make failure on hpux system (#39269)
Brian Shields was having a considerable difficulty in compiling a
version of Perl for HP-UX, which boiled down to getting "ndbm" and/or
"gdbm" working correctly.
Dominic Dunlop tried to explain what was going wrong, and the steps
Brian should take to get everything working. H.Merijn pointed to his
HP-UX repository, where Brian might be able to find some binary
packages for the stuff he needed.
http://xrl.us/m7fh
The HP-UX repo
http://hpux.connect.org.uk/
Perl5 Bug Summary
Two less bugs this week than last week. Next stop, 1300.
10 opened - 12 closed = 1488
http://xrl.us/m7fj
And the rest of the gang
http://rt.perl.org/rt3/NoAuth/perl5/Overview.html
New Core Modules
* "Encode" version 2.18 released by Dan Kogai, the Encode
maintainer.
Ruud Affijn pointed to an NNTP article about unexpected encoding
behaviour, but the summariser has unexpected decoding troubles in
trying to read it.
http://xrl.us/m7fk
In Brief
Jarkko Hietaniemi tweaked t/op/incfilter.t to play nicely when doing
the "make clean; make miniperl; make minitest" dance,
Edit, compile, run
http://xrl.us/m7fm
and also gave "PerlIO_cleanup()" the responsibility of freeing
"PL_perlio_fd_refcnt", since nothing else appeared to be doing so.
A dirty job, but someone's gotta do it
http://xrl.us/m7fn
Yves Orton (re)?discovered that C is not Perl and "AV"s don't just
magically free themselves.
DWIM, dammit!
http://xrl.us/m7fo
Jarkko Hietaniemi posted a link to, and wondered if anyone tried the
Open Watcom compilers. Steve Peters said that he had had a brief look
in the past and had got as far as figuring out what "make" command to
use, and then ran out of tuits.
What compiles
http://xrl.us/m7fp
Andreas Koenig noticed a couple of files missing from MANIFEST
relating to test files.
http://xrl.us/m7fq
Brendan O'Dea figured out what the problem was with Debian
mis-packaging perl which caused "List::Util" to end up lacking a
shared object file. Rafael applied Brendan's fix.
http://xrl.us/m7fr
Juerd Waalboer delivered an updated version of "perlunitut", a
tutorial on dealing with Unicode in Perl, and this was added to
"blead" by Rafael.
Unicode redecoded
http://xrl.us/m7fs
He also pinged the list again about an issue with "Encode" and
"encoding", to see if anyone had some ideas on the matter. Johan
Vromans seemed quite taken with the concept (of what to do when both
source *and* destination use different encodings). Rafael thought that
patches would be nice.
Scratch that itch
http://xrl.us/m7ft
Daniel Frederick Crisman took another stab at three minor fixes
related to "perlop". Rafael thought that the first fix fixed something
that wasn't broken, that the second dealt with a file that was
auto-generated (perhaps meaning that the source document needs to be
patched instead), and that the third fix had POD errors.
podchecker is your friend
http://xrl.us/m7fu
Sadahiro Tomoyuki gave perlunicode.pod a workover to improve the
narrative. Applied by Rafael.
http://xrl.us/m7fv
Jarkko found that his AIX compiler had considerable trouble with an
"#ifdef" inside a macro definition, and sought a way to fix it. This
wasn't as simple as first thought, and at the end John E. Malmberg
pointed out how things could still go wrong on OpenVMS when using
Bash.
http://xrl.us/m7fw
He also noticed that pp_ctl.c uses Latin-1 characters (or in any
event, ASCII characters beyond 127), which would also be a portability
issue.
http://xrl.us/m7fx
And finally, Jarkko noted some weird errors with tests under "ext/B",
which Abe Timmerman thought was probably due to "Test::Smoke" not
keeping up with the changes to "Test::Harness". Smokers were advised
to upgrade their smoking implements.
Stick that in your pipe
http://xrl.us/m7fy
About this summary
This summary was written by David Landgren.
Last week's summary still had Philip M. Gollucci wondering if he was
doing something dumb with "Perl_croak" and "nullch", or if there was
something else going on.
http://xrl.us/m7fz
If you want a bookmarklet approach to viewing bugs and change reports,
there are a couple of bookmarklets that you might find useful on my
page of Perl stuff:
http://www.landgren.net/perl/
Weekly summaries are published on http://use.perl.org/ and posted on a
mailing list, (subscription: [EMAIL PROTECTED]). The
archive is at http://dev.perl.org/perl5/list-summaries/. Corrections
and comments are welcome.
If you found this summary useful, please consider contributing to the
Perl Foundation to help support the development of Perl.
--
"It's overkill of course, but you can never have too much overkill."