On Tue, Apr 12, 2005 at 03:54:57PM +0200, Merijn Broeren wrote:
> Quoting Rocco Caputo ([EMAIL PROTECTED]):
> > 
> >   Failed Test                      Stat Wstat Total Fail  Failed  List of 
> > Failed
> >   
> > -------------------------------------------------------------------------------
> >   tests\30_loops\50_tk\wheel_run.t    5  1280    24    0   0.00%  ??
> >   54 tests and 22 subtests skipped.
> >   Failed 1/126 test scripts, 99.21% okay. 0/3664 subtests failed, 100.00% 
> > okay.
> >   NMAKE : fatal error U1077: 'C:\WINNT\system32\cmd.exe' : return code 
> > '0xff'
> >   Stop.
> > 
> > This is really odd since the test program explicitly calls C<exit 0>
> > at its end.  I've verified that it gets that far, too.
> > 
> > I've committed the changes anyway.  You can check them out and check
> > out the results yourself.  The error will need to be cleared up
> > somehow before I release it to the CPAN.
> > 
> It is very odd indeed. I'll see what happens on my home windows machine
> when I install ActiveState there. 

How's that going?  I've been tracking the problem down on and off
today, but no luck.  Some notes:

1. The exit() in POE::Wheel::Run doesn't bypass "forked" object
destruction.  With ASSERT_DEFAULT on (the default for POE's tests), a
lot of "this thing leaked" messages show up.  They're harmless, more
or less, but object destructors are still being called in the "child"
process.

Is there any way to exit from the child "process" without triggering
all the object destructors that were forked into it?

2. The {STDIN,STDOUT,STDERR}_FILENO checks are probably important.  If
you notice just below the comment "Close any close-on-exec file
descriptors.", files with high descriptor numbers are closed.  Maybe
the explicit checks can be removed if the loop is changed to ignore
fileno(STDIN), fileno(STDOUT) and fileno(STDERR) rather than mimic
UNIX's close-on-exec behavior.

3. tests/30_loops/50_tk/wheel_run.t passes its tests when run
stand-alone.  To re-create the failure deterministically, add this
code to test.pl just before runtests() is called:

  @test_files = grep /50/, @test_files;
  while (@test_files) {
    last if $test_files[-1] =~ /50.*tail/;
    pop @test_files;
  }

Meanwhile I've closed the remaining tickets for a new CPAN release.  I
can send 0.31 out into the world once this test's cleared up.

-- 
Rocco Caputo - http://poe.perl.org/

Reply via email to