This Week on perl5-porters (29 May-4 June 2006)

[email protected] (David Landgren) Thu, 08 Jun 2006 23:13:54 +0200
Newsgroups perl.perl5.porters,perl.perl5.summary
Organization The Lusty Decadent Delights of Imperial Pompeii
Message-ID <[email protected]>
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 $@. 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."