Front page | perl.perl5.porters |
Postings from October 2013
Re: [perl #119897] glob in threads is broken in perl5.18
Thread Previous
|
Thread Next
From:
Craig A. Berry
Date:
October 2, 2013 03:20
Subject:
Re: [perl #119897] glob in threads is broken in perl5.18
Message ID:
CA+vYcVyge+2o3tB_FtzjBFwzWYeFN4EVTO963fkow3C5L2L4Qg@mail.gmail.com
On Fri, Sep 27, 2013 at 5:58 AM, Brian Fraser <fraserbn@gmail.com> wrote:
> On Wed, Sep 25, 2013 at 9:51 AM, Brian Fraser <fraserbn@gmail.com> wrote:
>>
>> On Wed, Sep 25, 2013 at 9:14 AM, Craig A. Berry <craig.a.berry@gmail.com>
>> wrote:
>>>
>>> On Tue, Sep 24, 2013 at 8:32 AM, Brian Fraser <fraserbn@gmail.com> wrote:
>>> > On Sat, Sep 21, 2013 at 11:47 PM, Craig A. Berry
>>> > <craig.a.berry@gmail.com>
>>> > wrote:
>>> >>
>>> >> On Sat, Sep 21, 2013 at 12:51 PM, Father Chrysostomos via RT
>>> >> <perlbug-followup@perl.org> wrote:
>>> >> > On Sat Sep 21 07:40:33 2013, Hugmeir wrote:
>>> >>
>>> >> I have done a smoke run of smoke-me/hugmeir/dup_glob_state, results
>>> >> available at:
>>> >>
>>> >>
>>> >>
>>> >> <http://www.nntp.perl.org/group/perl.daily-build.reports/2013/09/msg151124.html>
>>>
>>> > Could I ask you to fetch the branch again and try that test?
>>>
>>> Here ha go:
>>>
>>>
>>> <http://www.nntp.perl.org/group/perl.daily-build.reports/2013/09/msg151317.html>
>>>
>>> The test failure I think you're interested in looks like:
>>>
>>> $ perl ../ext/File-Glob/t/threads.t
>>> not ok 1
>>> # Failed test at ../ext/File-Glob/t/threads.t line 44.
>>> # got: '1_file.'
>>> # expected: '1_file'
>>> not ok 2 - glob() state is cloned for new threads
>>> # Failed test 'glob() state is cloned for new threads'
>>> # at ../ext/File-Glob/t/threads.t line 48.
>>> # Structures begin differing at:
>>> # $got->[0] = '2_file.'
>>> # $expected->[0] = '2_file'
>>> not ok 3 - ..and for new threads inside threads
>>> # Failed test '..and for new threads inside threads'
>>> # at ../ext/File-Glob/t/threads.t line 59.
>>> # Structures begin differing at:
>>> # $got->[0] = '2_file.'
>>> # $expected->[0] = '2_file'
>>> not ok 4 - state doesn't leak from threads
>>> # Failed test 'state doesn't leak from threads'
>>> # at ../ext/File-Glob/t/threads.t line 66.
>>> # got: '2_file.'
>>> # expected: '2_file'
>>> 1..4
>>> # Looks like you failed 4 tests of 4.
>>> %SYSTEM-F-ABORT, abort
>>> $
>>>
>>> And the gotcha is that on VMS, all files have extensions, even those
>>> that don't :-). In other words, the trailing dot indicates a
>>> zero-length extension. The path of least resistance is to just put an
>>> explicit extension on those files:
>>>
>>> --- ext/File-Glob/t/threads.t;-0 2013-09-22 05:26:48 -0500
>>> +++ ext/File-Glob/t/threads.t 2013-09-25 07:08:29 -0500
>>> @@ -28,7 +28,7 @@ use File::Glob qw(csh_glob);
>>> my($dir) = tempdir(CLEANUP => 1)
>>> or die "Could not create temporary directory";
>>>
>>> -my @temp_files = qw(1_file 2_file 3_file);
>>> +my @temp_files = qw(1_file.tmp 2_file.tmp 3_file.tmp);
>>> for my $file (@temp_files) {
>>> open my $fh, ">", File::Spec->catfile($dir, $file)
>>> or die "Could not create file $dir/$file: $!";
>>> [end]
>>>
>>> which gets the test to pass:
>>>
>>> $ perl ../ext/File-Glob/t/threads.t
>>> ok 1
>>> ok 2 - glob() state is cloned for new threads
>>> ok 3 - ..and for new threads inside threads
>>> ok 4 - state doesn't leak from threads
>>> 1..4
>>
>>
>> Ooh, thank you! I'll push the branch with those changes later today.
>> (As a side note, VMS actually sounds like a pretty fun system; I wish that
>> I could just emulate it locally)
>>
>
> For some loose definition of "today." Fixed in facf34e on blead.
Actually it wasn't in facf34e, but it now is in 43ed1b742e :-).
Thread Previous
|
Thread Next