Dear Stas and all,
Stas Bekman <[EMAIL PROTECTED]> wrote at Sat, 6 Mar 2004 12:12:09 -0800
Edouard Lagache wrote:
open("/dev/random", O_RDONLY) = 3 read(3, <unfinished ...>
that explains it. Your don't have enough entropy and /dev/random blocks.
It's interesting to know what happens if you just key random keys for a few secs after it hangs
This should make the problem to go away:
% PERL_HASH_SEED=0 make test
THANK YOU STAS! :-)
Of course actually 'make test PERL_HASH_SEED=0' but yes! FYI, typing random keys didn't work, but the PERL_HASH_SEED immediately solved the problem.
Alas, I still have a test failing, but it fails in a similar way so perhaps it is a similar problem?
The test "t/modperl/cookie" just hangs. The result of a verbose test run is below. I waited 5 minutes before killing the test with <CTRL>C. Any ideas why the test would simply stall out?
t/modperl/cookie....1..3 # Running under perl version 5.008003 for linux # Current time local: Sat Mar 6 14:34:51 2004 # Current time GMT: Sat Mar 6 22:34:51 2004 # Using Test.pm version 1.24 # getting the same interp ID for /TestModperl__cookie
For the same reason I think. it tries to get a random number to generate UUID.
PERL_HASH_SEED=0 won't help here. Setting it was just preventing apr_uuid_get(uuid) from being called at the startup. But here it needs to be called anyway.
There are several other tests that will block for the same reason.
remove these tests, as they will hang:
rm t/apr/uuid.t rm t/apr-ext/uuid.t
the rest of the tests should run with this patch:
Index: Apache-Test/lib/Apache/TestHandler.pm
===================================================================
RCS file: /home/cvs/httpd-test/perl-framework/Apache-Test/lib/Apache/TestHandler.pm,v
retrieving revision 1.3
diff -u -r1.3 TestHandler.pm
--- Apache-Test/lib/Apache/TestHandler.pm 4 Mar 2004 05:51:31 -0000 1.3
+++ Apache-Test/lib/Apache/TestHandler.pm 6 Mar 2004 23:13:51 -0000
@@ -77,7 +77,7 @@
if ($interp eq 'tie') { #first request for an interpreter instance
# unique id for this instance
require APR::UUID;
- $same_interp_id = $id = APR::UUID->new->format;
+ $same_interp_id = $id = int rand 10000000;
$same_interp_counter = 0; #reset the counter
}
elsif ($interp ne $same_interp_id) {
I don't know why your /dev/random blocks. May be a broken kernel config?
this should print 10 random chars from perl:
% perl -le 'open I, "/dev/random"; read I, $d, 10; print $d'
a simple 'cat /dev/random' is an even simpler test ;)
If it blocks, now you have abstracted the problem outside of the mp domain. So please ask at one of the linux support list and please report back your findings, as this is not the first time this problem is reported. Thanks.
As for using installed mp2 (while you still have /dev/random broken), you need to set only PERL_HASH_SEED to any value at the server startup, and as long as you don't use APR::UUID you won't have any problems.
__________________________________________________________________ Stas Bekman JAm_pH ------> Just Another mod_perl Hacker http://stason.org/ mod_perl Guide ---> http://perl.apache.org mailto:[EMAIL PROTECTED] http://use.perl.org http://apacheweek.com http://modperlbook.org http://apache.org http://ticketmaster.com
-- Report problems: http://perl.apache.org/bugs/ Mail list info: http://perl.apache.org/maillist/modperl.html List etiquette: http://perl.apache.org/maillist/email-etiquette.html