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
-
[perl #8800] Not OK: perl v5.7.3 +DEVEL15046 on armv4l-linux 2.4.17-rmk1
by James E Keenan via RT