Steve Hay wrote:
Randy Kobes wrote:
On Tue, 30 Sep 2003, Stas Bekman wrote:This version gets SMOKE running, but it doesn't seem to be able to keep running.
Barrie Slaymaker wrote:
On Sep 30 2003, Stas Bekman wrote:
Isn't IPC::Run3 based on IPC::Run? So if IPC::Run doesn't work...
No, it's smaller, faster, lighter ;)
So may be we could try it. If Randy says that it works for
him, we will happily move to use it instead ;)
And that does seem to work! A diff appears below (not tested on linux) - in this, I also added a change to TestServer.pm to print out a message on Win32 when shutting down the server, as that's expected when checking that the server successfully shut down in TestSmoke.pm.
I have a 1.99_10 build tree in which "nmake test" runs with all tests successful every time, but when I try "perl t/SMOKE" with your patch below, I find that one of the tests has an error and causes everything to stop.
I've tried it three times now. Each time I had it fail on a different test (modperl\cookie, modperl\endav, modperl\post_utf8), but every time I get this message written into t/logs/error_log:
Failed to dup STDIN: Permission denied.
That sounds bad. What it tries to do is:
open my $oldout, ">&STDIN" or die "Can't dup STDIN: $!";
though using the C API:
modperl_in.c:102
status = Perl_do_open(aTHX_ handle_save, ">&STDIN", 8, FALSE, O_RDONLY,
0, Nullfp);
if (status == 0) {
Perl_croak(aTHX_ "Failed to dup STDIN: %_", get_sv("!", TRUE));
}
Hmm, looks like I can't count. Does this help:
Index: src/modules/perl/modperl_io.c
===================================================================
RCS file: /home/cvs/modperl-2.0/src/modules/perl/modperl_io.c,v
retrieving revision 1.11
diff -u -r1.11 modperl_io.c
--- src/modules/perl/modperl_io.c 24 Aug 2003 19:37:29 -0000 1.11
+++ src/modules/perl/modperl_io.c 1 Oct 2003 17:30:27 -0000
@@ -99,7 +99,7 @@
MP_TRACE_o(MP_FUNC, "start");
/* open my $oldout, ">&STDIN" or die "Can't dup STDIN: $!"; */
- status = Perl_do_open(aTHX_ handle_save, ">&STDIN", 8, FALSE, O_RDONLY,
+ status = Perl_do_open(aTHX_ handle_save, ">&STDIN", 7, FALSE, O_RDONLY,
0, Nullfp);
if (status == 0) {
Perl_croak(aTHX_ "Failed to dup STDIN: %_", get_sv("!", TRUE));
Sadly, no :-(
I applied your patch above and Randy's IPC::Run3 patch to a fresh 1.99_10, built it all, and I still get the same result: the testsuite passes all tests OK, but t/SMOKE fails on a seemingly random test of it's choice (I had modperl\env this time) with the same "Failed to dup STDIN: Permission denied." error in the error_log.
This is the only message in the log after the server has started up, and it doesn't appear until the test fails. I'm using IPC::Run3 0.009 on Perl 5.8.1 / Apache 2.0.47.
Can you reproduce this problem outside t/SMOKE? You should be able to by doing:
t/TEST -start t/TEST -run modperl\cookie t/TEST -stop
since that's what t/SMOKE does
No - I tried that half a dozen or more times, and it worked fine every time, with or without your patch.
The last failure that I had (with your patch in place) was on only the second test that it tried, so I tried running them both like this:
perl t/TEST -start perl t/TEST filter\out_str_req_mix perl t/TEST modperl\env perl t/TEST -stop
to try and reproduce what the SMOKE had actually done, but that worked too!
- Steve
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]