stas 2004/03/07 20:59:05 Modified: src/docs/2.0/user/troubleshooting troubleshooting.pod Log: document the issue with /dev/random blocking Revision Changes Path 1.18 +52 -0 modperl-docs/src/docs/2.0/user/troubleshooting/troubleshooting.pod Index: troubleshooting.pod =================================================================== RCS file: /home/cvs/modperl-docs/src/docs/2.0/user/troubleshooting/troubleshooting.pod,v retrieving revision 1.17 retrieving revision 1.18 diff -u -u -r1.17 -r1.18 --- troubleshooting.pod 11 Feb 2004 08:56:23 -0000 1.17 +++ troubleshooting.pod 8 Mar 2004 04:59:05 -0000 1.18 @@ -21,6 +21,52 @@ =head1 Configuration and Startup +=head2 Server Hanging at the Startup + +First you need to figure out where it hangs. strace(1) or an +equivalent utility can be used to discover which call the server hangs +on. You need to start the process in the single server mode so you +will have only one process to monitor. + +For example if the server hangs during 'make test', you should run: + + % cd modperl-2.0 + % strace /path/to/httpd -d t -f t/conf/httpd.conf \ + -DAPACHE2 -DONE_PROCESS -DNO_DETATCH + +(and may be C<-DPERL_USEITHREADS> if it was in the original output of +C<make test>.) + +If the trace ends with: + + open("/dev/random", O_RDONLY) = 3 + read(3, <unfinished ...> + +then you have a problem with your OS, as F</dev/random> doesn't have +enough entropy to give the required random data, and therefore it +hangs. This may happen in C<apr_uuid_get()> C call or Perl +C<APR::UUID-E<gt>new>. + +The solution in this case is either to fix the problem with +your OS, so that + + % perl -le 'open I, "/dev/random"; read I, $d, 10; print $d' + +will print some random data and not block. Or you can use an even +simpler test: + + % cat /dev/random + +which should print some random data and not block. + +If you can't fix the OS problem, you can rebuild Apache 2.0 with +C<--with-devrandom=/dev/urandom> - however, that is not secure for +certain needs. Alternatively setup EGD and rebuild Apache 2.0 with +C<--with-egd>. Apache 2.1/apr-1.1 will have a self-contained PRNG +generator built-in, which won't rely on F</dev/random>. + + + =head2 (28)No space left on device httpd-2.0 is not very helpful at telling which device has run out of @@ -105,6 +151,12 @@ =head1 Runtime + + + +=head2 C<APR::UUID-E<gt>new> Hanging + +See L<Server Hanging at the Startup|/Server_Hanging_at_the_Startup>.
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]