"I've fixed the bug itself as change #33952. (Whoo hoo! A bug that was easy to locate, fix, and test for. You don't see that very often :-)" -- Dave Mitchell, happy man.
File::Path::mkpath()
incompatibility in perl-5.10 David Landgren replied to Jan Dubois on the subject of inodes on
Win32. perlport
says the second value in the return list from
stat
is always 0, and this throws off the code that detects race
conditions. As such, there's no way to determine if an attacker
is manipulating the filesystem for some nefarious purpose while a
long-running rmtree()
call is running.
As it turns out, Windows filesystems may be intrinsically immune to the attack, since you cannot move (or remove) a directory if any process whatsoever has set their current working directory to it, or any directory underneath it.
different strokes for different folks http://xrl.us/bmj52
Data::Dumper
patch Earlier this month, Rafaël Garcia-Suarez applied a patch from
Alexandr Ciornii to get the bleading Data::Dumper
to compile
on older perls. Dave Mitchell wondered whether C compilers
understood Perl comments. If not, this may mean that the patch
needs patching.
slash that hash http://xrl.us/bmj56
Bram looked at change #30608, which involved commenting out a study
operation in op/taint.t. This results in the tests not really testing
what they set out to test.
He asked if anyone could recall why the line was commented out. No takers,
but I wonder if it has something to do with Yves Orton discovering and
UTF-8 and study
studiously ignored each other in the regexp engine.
http://xrl.us/bmj58
The British speller in me hates this idea.
but consistency has a lot going for it http://xrl.us/bmj6a
Module::Build
changes for VMS John E. Malmberg revived the stranded changes for Module::Build
that
were put aside in the lead up to 5.10.0. Essentially a number of
Unixisms needed to be excised from the code.
Craig A. Berry went through the changes with a fine-toothed comb and picked up a number of glitches that needed work. John revised his work and then had a patch ready for consideration by Ken Williams.
Craig found it hard to reconcile blead's Module::Build
with Ken's
own repository. Ken found himself regretting Perforce's ability to
track the integration of patches. The plan at the end of the week
was to attack Ken's repository directly, and then dump something from
that back into blead.
John also figured out what was going wrong with Archive::Tar
creating an unopenable archive on VMS, which would have them within
an inch of having Module::Build
build and test perfectly on VMS.
tales of the reconstruction http://xrl.us/bmj6c
John detailed the Archive::Tar
issue with VMS regarding
Module/Build/t/ppm.t in more detail in another thread. The problem
boils down to the different ways (stream and record oriented) that
one may employ to read a file on VMS. After this is fixed all that
will be needed is to mark VMS as having case-insensitive file names.
http://xrl.us/bmj6e
close STDIN
Bram was looking over an old bug report and trying to understand
what happens when one closes STDIN
, and wondered if the
documentation for close
needed improvement.
Mark Mielke explained the difference between file descriptor 0 and
the STDIN
file handle, which, through an extraordinary coincidence
of fate are usually the same, but sometimes aren't.
In which case, the documentation about STDIN
needs to be worked
on, rather than close
.
closer http://xrl.us/bmj6g
(And the rest of the title of the thread is "...but not under test (and not failing with threads under harness)"). Bram spent some time working to reduce the problem down to the tiniest test case possible, and in getting down to about five lines of real code, succeeded.
When he asked if anyone had an explanation for what was happening, however, he met with less success.
http://xrl.us/bmj6i
Something for a person with basic Perl skills.
installman
The installman
script is slow. All it is doing text processing, which we're
told is something Perl is good at. So it would be nice to know what it is doing
that is taking so much CPU, and where possible address it.
(And there's a hot new profiler in town, Devel::NYTProf
).
$/
with in memory files Back in April, Bram had added some new regression tests for bug #44833, that had itself been resolved many moons ago. At the time, Rafaël applied them. Early in May, Ben Morrow suggested that Bram's technique was not very cross-platform compatible, relying as it did on a specific environment variable that specific Unix shells leave behind. At the same time, Ben suggested a better internal-to-Perl condition, so Bram rewrote the test to use that.
This week Bram pinged the list since the change still hadn't been committed.
http://xrl.us/bmj6k
Steffen Mïller was keen to see an updated lib.pm make it
out to CPAN, since that would allow him to upgrade older perl
installations. This in turn would stop use lib 'foo.par'
from issuing a useless warning.
He tracked down Tim Bunce, who was listed as the current author. Tim pleaded amnesia. Steffen took over maintenance, and posted a few tweaks that would allow him to ready the module for a CPAN release. Rafaël tweaked the license section to make it friendlier to license lawyers.
lib liberation front http://xrl.us/bmj6n
Craig Berry glanced at one of Steve Hay's regular reports of smoke failures to the list, and suggested he try one of Craig's own tweaks to fix a failure that he had seen appearing on VMS.
preserving bits with File::Copy http://xrl.us/bmj6p
Reini Urban wrote a patch for perlre
in an attempt to resolve an eight
year old bug report from Hugo van der Sanden, in which he was misled by
the documentation (or rather, its ambiguity) to think that
"babadad" =~ /^((.)?a\2)+$/
should succeed. Other porters explained the reasoning behind the observed behaviour, and it was agreed that the documentation needed to clarify this issue.
And so it came to pass that Reini added a paragraph to perlre
to do just that. Bram considered the explanation without looking
at the bug report, and admitted that he didn't have a clue as to
what it meant.
needs work http://xrl.us/bmj6r
As Bram continued his culling of RT issues, he came across the issue
of qq[>10\n] =~ />\d+$ \n/ix
failing, where the original ticket
author thought it should succeed.
As it turns out, on 5.10 and beyond, it does in fact succeed. But
then Bram thought it might be worthwhile checking what happens
when one omits the /x
modifier, and was surprised to see that
it failed, along with four other variations on a theme.
Zefram explained that this was to be expected, since the lack of spaces meant that "dollar something" turned into a real Perl scalar that contained something completely different, thus causing the match to fail.
meta dollar http://xrl.us/bmj6t
sub foo(@$) {}
should generate an error (#36673) Renée Bäcker thought that a prototyped function that has no body should be an error. Rafaël thought so too, but said that he needed to think about the ramifications a bit more. In the meantime, Renée revised the path.
http://xrl.us/bmj6v
Now that uc
, lc
and the like warn if asked to operate on undef
,
Bram completed the picture by making reverse undef
warn as well.
http://xrl.us/bmj6x
require IO
causes segmentation fault (#37076) Bram reported that this bug does not manifest itself on 5.8.9-tobe, nor on 5.10 and beyond. He concluded that the bug had likely been fixed, but asked for people on other platforms to take the test script for a spin.
reflexions in a threaded perl http://xrl.us/bmj6z
Bram supplied a TODO test for this problem, which was still waiting to be applied at the end of the week.
http://xrl.us/bmj63
GIMME_Vbroken
with 5.10.0/GCC and XS?) (#50386) Dave Mitchell asked if the patch that resolved this bug was safe for 5.10.1, but Jan Dubois admitted that it wasn't binary compatible. But it's not that bad, just a bit of bloat.
http://xrl.us/bmj65
Rafaël Garcia-Suarez wondered if this problem could be solved through some judicious tweaking of ENTERSUB flags.
http://xrl.us/bmj67
Renée supplied a patch to fix the two code paths in CGI.pm which
could lead to <meta http-equiv>
headers being emitted twice.
http://xrl.us/bmj69
After much to'ing and fro'ing, Bram managed to get Devendra Purbiya
up and running. A symbolic link for pwd
did the trick.
http://xrl.us/bmj7b
index()
matching beyond end of string when \0 bytes (00000000) are involved (#53746) Once he saw the TODO test, Dave Mitchell realised that there was a really simple fix for the bug.
so he fixed it http://xrl.us/bmj7d
usethread=no
Configure compiler test file try.c is missing. (#54042) H.Merijn Brand was puzzled as to why Reini Urban had only recently begun (for some definition of recent) to encounter this error, since the code in question has been touched in over a year. Andy Dougherty suspected that something must have changed in Reini's setup, to trigger a walk down a previously unvisited codepath.
Reini concurred, saying that an upgrade to cygwin2.dll could have
changed the result from a fflush(NULL)
call, which is what tripped up
Configure
.
all fixed http://xrl.us/bmj7f
Luis Lencina reported this problem on 5.8.8, but Dave Mitchell was unable to reproduce it on 5.10 and beyond.
a good reason to upgrade http://xrl.us/bmj7h
George Greer reported a problem with in-place sorts on 5.10. Rafaël tried to diagnose the problem, and Moritz Lenz tried to bisect the error to determine what patch caused the error. But while they were trying to work things out, Dave Mitchell strolled by and tweaked a couple of spots in pp_sort.c.
George was happy to report that Dave's patch corrected his cut-down test, as well as the real-life code from whence the problem came.
wrap it up as a test http://xrl.us/bmkmo
Goro Fuji reported an issue with PerlIORaw_pushed()
and offered
a patch to fix things up. Rafaël Garcia-Suarez agreed with the reasoning
and applied one part of the patch. For the second part, he deferred to
people with more experience with Windows, since he wasn't sure why it
was needed.
http://xrl.us/bmj7j
Net::SSH2::Channel
(#54908) Sebastien Rodriguez suffered segmentation faults with 5.10 when trying to use this module. Steve Peters built the module, and was alarmed by the number of compiler warnings it emitted. He also saw it fail an assertion.
Ævar Arnfjörð Bjarmason traced the problem down to the
fact that it used the PV slot of a GV to store a pointer to a custom
data structure, which reminded him of Math::Pari
(another module
that gave the porters grief a few weeks back).
On IRC, the concensus was that it would be very difficult to tweak the core to play nicely with the module, so the module will just have to adapt. What is more, despite the extensive test campaign that the porters conducted, it turns out that the test suite itself was hopelessly inadequate, since it passed, and yet the most basic real usage failed.
Which also meant that not a single person had tried 5.9.x with the module in the months leading up to 5.10.
so when we say test, TEST! http://xrl.us/bmj7m
John Heidemann wrote about a simple program that performs differently depending on how it is run:
cat data | prog # or prog <data
Specifically, according to strace
, the internals perform an lseek
after spinning off a new thread, and this appears to fail in the first
example.
that's not supposed to happen http://xrl.us/bmj7o
Niko Tyni showed a tiny program that demonstrated a larger problem that occurs when one tries to blow away a dynamically created package. I give him bonus points for taking the time to bisect the change log and isolate the offending patch.
Armed with that information, Rafaël Garcia-Suarez was able to supply a patch that fixed up the problem, but he had a sneaking feeling that it might cause a memory leak. Alex Vandiver was pretty pleased, since a corollary of the bug fix was that SVK no longer segfaults on 5.10 and blead.
heads up for 5.10.1 http://xrl.us/bmj7q
David Wheeler had problems with a build of 5.6.2, and despite its exceptional old age, a number of porters spent a surprising amount of time trying to figure out why it had stopped working and what one might to be able to do in order to get it working again.
it's dead Jim http://xrl.us/bmj7u
qr//
(#54956) Steve Peters delved further into this problem and discovered that &=
fails in the same way (which means ^=
is probably a likely bet too)
and any sort of reference to a non-numeric scalar would suffice.
He graciously stepped aside to wait in case anyone felt like jumping in and fixing it. He can dream, right?
no, after you http://xrl.us/bmj7w
map {}
behavior when returning two values (#54974) David Wheeler was bitten by the tokeniser choosing between a code block and an anonymous hash and taking the wrong decision. The disambiguation involves using a leading semi-colon or parentheses. Debate raged as to what would be clearest to a maintenance programmer of little brain.
http://xrl.us/bmj7y
Steve Michel was mystified by a build failing. Andy Dougherty was quite puzzled as well, but thought some of the configure switches seemed a little unusual. Jim Cromie pinged the list about his patch from last year that would outlaw unrecognised switches.
http://xrl.us/bmj72
Devendra Purbiya continued to have build troubles, this time on an ARM platform. All sorts of weird failures were encountered. Bram patiently walked Devendra through a series of steps to try and get to the bottom of the issues.
http://xrl.us/bmj74
__DIE__
and DESTROY
(#55084) Peter Scott showed a nifty technique to give the debugger a bad case of indigestion, and traced the problem all the way back to 5.004.
time to die http://xrl.us/bmj76
Hey, we cracked he 1600 barrier!
280 new + 1309 open = 1589 (+12 -54) http://xrl.us/bmj78 http://rt.perl.org/rt3/NoAuth/perl5/Overview.html
Jerry D. Hedden pushed a new version out that deals more gracefully with older perls.
http://xrl.us/bmj8a
Andreas König filed bug #54776 concerning a failure with
Archive::Extract
on 5.10.1-tobe, and then later reported that
change #33470 corrected the problem.
http://xrl.us/bmj8c
Renée Bäcker found some tickets in RT that had patches ready for the picking, as well as some more that could be closed.
low hanging fruit http://xrl.us/bmj8e
Renée also supplied documentation for attributes.pm to render it less recursive and incomplete (bug #36516)
http://xrl.us/bmj8g
H.Merijn Brand found some warnings in a Unicode test environment when
dealing with Module::Build
.
nasty unexpected non-continuation bytes, we hates them http://xrl.us/bmj8i
Steve Peters added some more -fstack-protector
goodness. (bug #54120)
http://xrl.us/bmj8k
H.Merijn Brand issued a ping for Math::Complex
regarding smoke
failures on HP-UX. Since maintenance is currently in a state of
flux, somewhere between Jarkko Hietaniemi and Zefram, the message
went adrift.
http://xrl.us/bmj8v
Andy Dougherty and Craig Berry managed to propagate new i_gdbm*ndbm variables somewhere in the depths of Configure.
http://xrl.us/bmj8x
I think these must have got wedged in a moderator queue somewhere.
This Week on perl5-porters - 11-17 May 2008 http://xrl.us/bmj8z
This Week on perl5-porters - 18-24 May 2008 http://xrl.us/bmj83
This summary was written by David Landgren.
Weekly summaries are published on http://use.perl.org/ and posted on a mailing list, (subscription: perl5-summary-subscribe@perl.org ). 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 or attending a YAPC to help support the development of Perl.