develooper Front page | perl.perl5.porters | Postings from June 2013

[perl #8800] Not OK: perl v5.7.3 +DEVEL15046 on armv4l-linux 2.4.17-rmk1

Thread Next
From:
James E Keenan via RT
Date:
June 18, 2013 00:54
Subject:
[perl #8800] Not OK: perl v5.7.3 +DEVEL15046 on armv4l-linux 2.4.17-rmk1
Message ID:
rt-3.6.HEAD-2552-1371516844-408.8800-15-0@perl.org
On Wed Jun 27 04:01:53 2012, nicholas wrote:
> On Sun, Jun 24, 2012 at 11:00:42AM -0700, Jesse Luehrs via RT wrote:
> > Does that mean that this can be closed?
> 
> The hanging test in question with the race condition was this:
> 
> if (!$have_ualarm) {
>     skip 12..13;
> }
> else {
>     my $tick = 0;
>     local $SIG{ALRM} = sub { $tick++ };
> 
>     my $one = time; $tick = 0; ualarm(10_000); sleep until $tick;
>     my $two = time; $tick = 0; ualarm(10_000); sleep until $tick;
>     my $three = time;
>     ok 12, $one == $two || $two == $three, "slept too long, $one $two
> $three";
> 
>     $tick = 0;
>     ualarm(10_000, 10_000);
>     sleep until $tick >= 3;
>     ok 13, 1;
>     ualarm(0);
> }
> 
> from Time::HiRes 1.20
> 
> The retest where I hung it again would seem to be Time::HiRes 1.42
> where
> the test looks like this:
> 
> if (!$have_ualarm) {
>     skip 12..13;
> }
> else {
>     my $tick = 0;
>     local $SIG{ALRM} = sub { $tick++ };
> 
>     my $one = time; $tick = 0; ualarm(10_000); while ($tick == 0) {
> sleep }
>     my $two = time; $tick = 0; ualarm(10_000); while ($tick == 0) {
> sleep }
>     my $three = time;
>     ok 12, $one == $two || $two == $three, "slept too long, $one $two
> $three";
> 
>     $tick = 0;
>     ualarm(10_000, 10_000);
>     while ($tick < 3) { sleep }
>     ok 13, 1;
>     ualarm(0);
> }
> 
> 
> That test is now this:
> 
> SKIP: {
>     skip "no alarm", 2 unless $Config{d_alarm};
>     my $tick = 0;
>     local $SIG{ ALRM } = sub { $tick++ };
> 
>     my $one = CORE::time;
>     $tick = 0; Time::HiRes::ualarm(10_000); while ($tick == 0) { }
>     my $two = CORE::time;
>     $tick = 0; Time::HiRes::ualarm(10_000); while ($tick == 0) { }
>     my $three = CORE::time;
>     ok $one == $two || $two == $three
> 	or note "slept too long, $one $two $three";
>     note "tick = $tick, one = $one, two = $two, three = $three";
> 
>     $tick = 0; Time::HiRes::ualarm(10_000, 10_000); while ($tick < 3)
> { }
>     ok 1;
>     Time::HiRes::ualarm(0);
>     note "tick = $tick, one = $one, two = $two, three = $three";
> }
> 
> which looks to be structurally identical to the version that I hung,
> although there's now a watchdog to time it out instead of hanging.
> 
> So, are we seeing cpan/Time-HiRes/t/ualarm.t intermittently fail after
> test 1
> on smokers?
> (The machine used for the original bug report is currently under the
> stairs.)
> 
> I've found one:
> 
> http://www.nntp.perl.org/group/perl.daily-
> build.reports/2011/07/msg99508.html
> 
> Failures: (common-args) none
> [stdio] -Duseithreads -Dusedtrace
> ../cpan/Time-HiRes/t/ualarm.t...............................FAILED
>     Bad plan.  You planned 12 tests but ran 1.
> 
> So I'm suspicious that this bug isn't solved.
> 
> Nicholas Clark
> 

Nicholas, have you been able to diagnose this problem any further?

Thank you very much.
Jim Keenan



---
via perlbug:  queue: perl5 status: open
https://rt.perl.org:443/rt3/Ticket/Display.html?id=8800

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