Edouard Lagache wrote:
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



Reply via email to