develooper 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


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About