cvs commit: modperl-docs/src/docs/2.0/user/troubleshooting troubleshooting.pod
stas2004/11/08 15:06:41 Modified:src/docs/2.0/user/troubleshooting troubleshooting.pod Log: document the issue with BOMs Revision ChangesPath 1.30 +41 -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.29 retrieving revision 1.30 diff -u -u -r1.29 -r1.30 --- troubleshooting.pod 4 Nov 2004 03:41:20 - 1.29 +++ troubleshooting.pod 8 Nov 2004 23:06:41 - 1.30 @@ -315,6 +315,47 @@ +=head2 Registry scripts fail to load with: Unrecognized character \xEF at ... + +Certain editors (in particular on win32) may add a UTF-8 Byte Order +Marker (BOM: http://www.unicode.org/faq/utf_bom.html#BOM) at the +beginning of the file. Since +CLModPerl::RegistryCooker|docs::2.0::api::ModPerl::RegistryCooker +adds extra code in front of the original script, before compiling it, +it creates a situation where BOM appears past the beginning of the +file, which is why the error: + + Unrecognized character \xEF at ... + +is thrown by Perl. + +The simplest solution is to configure your editor to not add BOMs (or +switch to another editor which allows you to do that). + +You could also subclass +CLModPerl::RegistryCooker|docs::2.0::api::ModPerl::RegistryCooker +or its existing subclasses to try to remove BOM in +ModPerl::RegistryCooker::read_script(): + +# remove BOM +${$self-{CODE}} =~ s/^(?: +\xef\xbb\xbf | +\xfe\xff | +\xff\xfe | +\x00\x00\xfe\xff | +\xff\xfe\x00\x00 +)//x; + +but do you really want to add an overhead of this operation multiple +times, when you could just change the source file once? Probably +not. It was also reported that on win32 the above s/// doesn't work. + + + + + + + =head1 Runtime - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: modperl-docs/src/docs/2.0/user/troubleshooting troubleshooting.pod
stas2004/11/03 19:41:20 Modified:src/docs/2.0/user/troubleshooting troubleshooting.pod Log: mention Env::C as another solution for %ENV setting for the process level. Revision ChangesPath 1.29 +14 -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.28 retrieving revision 1.29 diff -u -u -r1.28 -r1.29 --- troubleshooting.pod 3 Nov 2004 23:13:45 - 1.28 +++ troubleshooting.pod 4 Nov 2004 03:41:20 - 1.29 @@ -400,6 +400,20 @@ module. Therefore you need to make sure that wherever that load happens C%ENV is properly set by that time. +Another solution that works Bonly with prefork mpm, is to use +CEnv::C ( http://search.cpan.org/dist/Env-C/ ). This module sets the +process level environ, bypassing Perl's C%ENV. This module is not +thread-safe, due to the nature of environ process struct, so don't +even try using it in a threaded environment. + + + + + + + + + =head2 Error about not finding IApache.pm with ICGI.pm You need to install at least version 2.87 of CGI.pm to work - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: modperl-docs/src/docs/2.0/user/troubleshooting troubleshooting.pod
stas2004/11/03 15:13:45 Modified:src/docs/2.0/user/troubleshooting troubleshooting.pod Log: libgdbm.so.3: open failed: No such file or directory Revision ChangesPath 1.28 +14 -1 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.27 retrieving revision 1.28 diff -u -u -r1.27 -r1.28 --- troubleshooting.pod 17 Oct 2004 19:12:08 - 1.27 +++ troubleshooting.pod 3 Nov 2004 23:13:45 - 1.28 @@ -16,10 +16,23 @@ -=head2 Cannot find -lgdbm +=head2 Cannot find -lgdbm / libgdbm.so.3: open failed: No such file or directory Please see: LMissing or Misconfigured libgdbm.so|docs::1.0::guide::install/Missing_or_Misconfigured_libgdbm_so. + +Also it seems that on Solaris this exact issue doesn't show up at +compile time, but at run time, so you may see the errors like: + + .../mod_perl-1.99_17/blib/arch/auto/APR/APR.so' for module APR: + ld.so.1: /usr/local/ActivePerl-5.8/bin/perl: fatal: + libgdbm.so.3: open failed: No such file or directory at + ...5.8.3/sun4-solaris-thread-multi/DynaLoader.pm line 229. + +the solution is the same, make sure that you have the libgdbm shared +library and it's properly symlinked. + + - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: modperl-docs/src/docs/2.0/user/troubleshooting troubleshooting.pod
stas2004/10/17 12:12:08 Modified:src/docs/2.0/user/troubleshooting troubleshooting.pod Log: 'Cannot find -lgdbm' is the same issue with mp2, so add a xref to mp1's item Revision ChangesPath 1.27 +11 -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.26 retrieving revision 1.27 diff -u -u -r1.26 -r1.27 --- troubleshooting.pod 7 Sep 2004 12:54:08 - 1.26 +++ troubleshooting.pod 17 Oct 2004 19:12:08 - 1.27 @@ -14,6 +14,17 @@ =head1 Building and Installation + + +=head2 Cannot find -lgdbm + +Please see: LMissing or Misconfigured +libgdbm.so|docs::1.0::guide::install/Missing_or_Misconfigured_libgdbm_so. + + + + + =head2 make: don't know how to make dynamic. Stop make: don't know how to make dynamic. Stop - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: modperl-docs/src/docs/2.0/user/troubleshooting troubleshooting.pod
stas2004/09/06 09:03:07 Modified:src/docs/2.0/user/troubleshooting troubleshooting.pod Log: make problems with 'make' on *BSD platforms Revision ChangesPath 1.25 +19 -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.24 retrieving revision 1.25 diff -u -u -r1.24 -r1.25 --- troubleshooting.pod 26 Aug 2004 23:48:41 - 1.24 +++ troubleshooting.pod 6 Sep 2004 16:03:07 - 1.25 @@ -14,6 +14,25 @@ =head1 Building and Installation +=head2 make: don't know how to make dynamic. Stop + + cd src/modules/perl make -f Makefile.modperl + make: don't know how to make dynamic. Stop + +That's a MakeMaker bug on FreeBSD, OpenBSD and NetBSD (an may be other +platforms). See: http://rt.cpan.org/NoAuth/Bug.html?id=7417 + +It was reported that using Cgmake instead of Cmake solves the +problem. + +Another workaround, which allows continuing using Cmake, is to +change the autogenerated file Fsrc/modules/perl/Makefile.modperl: + + -my @skip = qw(dynamic test); + +my @skip = qw(test); + push @skip, q{static} + unless (Apache::Build::BUILD_APREXT); + - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: modperl-docs/src/docs/2.0/user/troubleshooting troubleshooting.pod
stas2004/08/26 16:48:41 Modified:src/docs/2.0/user Changes.pod src/docs/2.0/user/troubleshooting troubleshooting.pod Log: A new troubleshooting section on how to resolve can't locate file foo, when there is a system limit on the maximum open files. Revision ChangesPath 1.5 +4 -0 modperl-docs/src/docs/2.0/user/Changes.pod Index: Changes.pod === RCS file: /home/cvs/modperl-docs/src/docs/2.0/user/Changes.pod,v retrieving revision 1.4 retrieving revision 1.5 diff -u -u -r1.4 -r1.5 --- Changes.pod 26 Jan 2004 19:10:40 - 1.4 +++ Changes.pod 26 Aug 2004 23:48:41 - 1.5 @@ -11,6 +11,10 @@ =head1 ... +A new troubleshooting section on how to resolve can't locate file foo, +when there is a system limit on the maximum open files. By Ken Simpson +EltksimpsonEltatEgtlarch.mailchannels.comEgt. + A few corrections in the config chapter by Jean-Sébastien Guay Eltjean_seb EltatEgt videotron.caEgt. 1.24 +48 -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.23 retrieving revision 1.24 diff -u -u -r1.23 -r1.24 --- troubleshooting.pod 25 May 2004 02:04:15 - 1.23 +++ troubleshooting.pod 26 Aug 2004 23:48:41 - 1.24 @@ -21,6 +21,54 @@ =head1 Configuration and Startup +=head2 Can't locate FTestFilter/in_str_consume.pm in C@INC... + +Sometimes you get a problem of perl not being able to locate a certain +Perl module. This can happen in the mod_perl test suite or in the +normal mod_perl setup. One of the possible reasons is a low limit on +the number of files that can be opened by a single process. To check +whether this is the problem run the process under Cstrace(1) or an +equivalent utility. + +For example on OpenBSD 3.5 the default setting for a maximum number of +files opened by a single process seems to be 64, so when you try to +run the mod_perl test suite, which opens a few hundreds of files, you +will have a problem. e.g. the test suite may fail as: + + [Wed Aug 25 09:49:40 2004] [info] 26 Apache:: modules loaded + [Wed Aug 25 09:49:40 2004] [info] 7 APR:: modules loaded + [Wed Aug 25 09:49:40 2004] [info] base server + 20 vhosts ready + to run tests + [Wed Aug 25 09:49:40 2004] [error] Can't locate + TestFilter/in_str_consume.pm in @INC (@INC contains: ... + +Running the system calls tracing program (Cktrace(1) on OpenBSD, +Cstrace(1) on Linux): + + % sudo ktrace -d /usr/local/apache/bin/httpd -d /tmp/mod_perl-2.0/t \ +-f /tmp/mod_perl-2.0/t/conf/httpd.conf -DAPACHE2 -X + +looking at the ktrace dump reveals: + + 16641 httpdNAMI /tmp/mod_perl-2.0/t/lib/TestFilter/in_str_consume.pmc + 16641 httpdRET stat -1 errno 2 No such file or directory + 16641 httpdCALL open(0x3cdae100,0,0) + 16641 httpdRET open -1 errno 24 Too many open files + +It's clear that Perl can't load FTestFilter/in_str_consume.pm +because it can't open the file. + +This problem can be resolved by increasing the open file limit to 128 +(or higher): + + $ ulimit -n 128 + + + + + + + =head2 mod_perl.c is not compatible with this version of Apache (found 20020628, need 20020903) - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: modperl-docs/src/docs/2.0/user/troubleshooting troubleshooting.pod
stas2004/04/28 13:11:59 Modified:src/docs/2.0/user/troubleshooting troubleshooting.pod Log: two problems due to bugs in perl w/ ithreads Revision ChangesPath 1.19 +48 -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.18 retrieving revision 1.19 diff -u -u -r1.18 -r1.19 --- troubleshooting.pod 8 Mar 2004 04:59:05 - 1.18 +++ troubleshooting.pod 28 Apr 2004 20:11:59 - 1.19 @@ -137,6 +137,54 @@ =head1 Shutdown and Restart +Issues happening during server shutdown and restart, or during +specific interpreter shutdown at runtime with threaded mpm. + + + + +=head2 Subroutines in EltperlEgt sections under threaded mpm + +If you have defined a subroutine inside a EltperlEgt section, +under threaded mpm (or under perl with enabled ithreads which spawn +its own ithreads), like so: + + Perl +sub foo {} + /Perl + +At the server shutdown, or when any interprter quits you will see the +following error in the Ierror_log: + + Attempt to free temp prematurely: SV 0x91b8e74, + Perl interpreter: 0x8547698 during global destruction. + Scalars leaked: 1 + +This is a bug in Perl and as of Perl 5.8.4 it's not resolved. For more +information see: + +http://rt.perl.org:80/rt3/Ticket/Display.html?id=29018 + + + + +=head2 Modules using CScalar::Util::weaken under threaded mpm + +Modules using CScalar::Util::weaken under threaded mpm may get: + + Attempt to free unreferenced scalar SV 0x8154f74. + +when each interprter exits. + +This is a bug in Perl and as of Perl 5.8.4 it's not resolved. For more +information see: + +http://rt.perl.org:80/rt3/Ticket/Display.html?id=24660 + + + + + - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: modperl-docs/src/docs/2.0/user/troubleshooting troubleshooting.pod
stas2004/03/07 20:59:05 Modified:src/docs/2.0/user/troubleshooting troubleshooting.pod Log: document the issue with /dev/random blocking Revision ChangesPath 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 - 1.17 +++ troubleshooting.pod 8 Mar 2004 04:59:05 - 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 +Cmake 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 Capr_uuid_get() C call or Perl +CAPR::UUID-Egtnew. + +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 CAPR::UUID-Egtnew Hanging + +See LServer Hanging at the Startup|/Server_Hanging_at_the_Startup. - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: modperl-docs/src/docs/2.0/user/troubleshooting troubleshooting.pod
stas2003/12/08 17:42:44 Modified:src/docs/2.0/user/troubleshooting troubleshooting.pod Log: HP-UX 11 for PA-RISC requires a few patches to get mp2 working Submitted by: Jan Dubois [EMAIL PROTECTED], THELLA,RITA (HP-Cupertino,ex3) [EMAIL PROTECTED] Revision ChangesPath 1.16 +14 -1 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.15 retrieving revision 1.16 diff -u -u -r1.15 -r1.16 --- troubleshooting.pod 15 Nov 2003 05:42:21 - 1.15 +++ troubleshooting.pod 9 Dec 2003 01:42:43 - 1.16 @@ -71,9 +71,22 @@ Update DBI to at least version 1.31. -=head2 EltPerlEgt directive missing closing 'Egt' +=head2 EltPerlEgt directive missing closing 'Egt' See the LApache::PerlSections|docs::2.0::api::Apache::PerlSections/E_lt_PerlE_gt__directive_missing_closing__E_gt__ manpage. + + +=head2 'Invalid per-unknown PerlOption: ParseHeaders' on HP-UX 11 for PA-RISC + +When building mod_perl 2.0 on HP-UX 11 for PA-RISC architecture, using +the HP ANSI C compiler, please make sure you have installed patches +PHSS_29484 and PHSS_29485. Once installed the issue should go away. + + + + + + =head1 Shutdown and Restart - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: modperl-docs/src/docs/2.0/user/troubleshooting troubleshooting.pod
stas2003/08/08 11:19:23 Modified:src/docs/2.0/user/troubleshooting troubleshooting.pod Log: document the 'Error string not specified yet' error with mod_deflate Revision ChangesPath 1.11 +18 -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.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- troubleshooting.pod 28 Jul 2003 17:37:24 - 1.10 +++ troubleshooting.pod 8 Aug 2003 18:19:23 - 1.11 @@ -134,6 +134,24 @@ under mod_perl 2.0, as earlier CGI.pm versions aren't mod_perl 2.0 aware. +=head2 20014:Error string not specified yet + +This error is reported when some undefined Apache error happens. The +known cases are: + +=over + +=item when using mod_deflate + +A bug in mod_deflate was triggering this error, when a response +handler would flush the data that was flushed earlier: +http://nagoya.apache.org/bugzilla/show_bug.cgi?id=22259 + +XXX: should be fixed in 2.0.49? + +=back + + =head1 Issues with APR Used Outside of mod_perl - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: modperl-docs/src/docs/2.0/user/troubleshooting troubleshooting.pod
stas2003/07/28 10:37:24 Modified:src/docs/2.0/api APR.pod src/docs/2.0/user/troubleshooting troubleshooting.pod Log: use APR::UUID as an example which actually works outside of mod_perl, whereas Apache::Table doesn't Revision ChangesPath 1.2 +1 -2 modperl-docs/src/docs/2.0/api/APR.pod Index: APR.pod === RCS file: /home/cvs/modperl-docs/src/docs/2.0/api/APR.pod,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- APR.pod 23 May 2003 05:20:53 - 1.1 +++ APR.pod 28 Jul 2003 17:37:24 - 1.2 @@ -12,8 +12,7 @@ an CAPR:: package outside of mod_perl, you need to load APR first. For example: - % perl -MApache2 -MAPR -le 'use APR::Table; use APR::Pool; \ - $table = APR::Table::make(APR::Pool-new, 2);' + % perl -MApache2 -MAPR -MAPR::UUID -le 'print APR::UUID-new-format' =cut 1.10 +2 -2 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.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- troubleshooting.pod 23 May 2003 05:21:49 - 1.9 +++ troubleshooting.pod 28 Jul 2003 17:37:24 - 1.10 @@ -147,8 +147,8 @@ in order to load the XS subroutines. For example: - % perl -MApache2 -MAPR -le 'use APR::Table; use APR::Pool; \ - $table = APR::Table::make(APR::Pool-new, 2);' + % perl -MApache2 -MAPR -MAPR::UUID -le 'print APR::UUID-new-format' + =head1 Maintainers - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: modperl-docs/src/docs/2.0/user/troubleshooting troubleshooting.pod
stas2003/05/04 19:41:41 Modified:src/docs/2.0/user/troubleshooting troubleshooting.pod Log: document how to deal with '(28)No space left on device' startup errors Revision ChangesPath 1.7 +44 -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.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- troubleshooting.pod 19 Jan 2003 23:03:45 - 1.6 +++ troubleshooting.pod 5 May 2003 02:41:40 - 1.7 @@ -21,6 +21,50 @@ =head1 Configuration and Startup +=head2 (28)No space left on device + +httpd-2.0 is not very helpful at telling which device has run out of +precious space. Most of the time when you get an error like: + + (28)No space left on device: + mod_rewrite: could not create rewrite_log_lock + +it means that your system have run out of semaphore arrays. Sometimes +it's full with legitimate semaphores at other times it's because some +application has leaked semaphores and haven't cleaned them up during +the shutdown (which is usually the case when an application +segfaults). + +Use the relevant application to list the ipc facilities usage. On most +Unix platforms this is usually an Cipcs(1) utility. For example +linux to list the semaphore arrays you should execute: + + % ipcs -s + -- Semaphore Arrays + keysemid owner perms nsems + 0x 2686976stas 6001 + 0x 2719745stas 6001 + 0x 2752514stas 6001 + +Next you have to figure out what are the dead ones and remove +them. For example to remove the semid 2719745 execute: + + % ipcrm -s 2719745 + +Instead of manually removing each, and if you know that none of listed +the semaphores is really used (all leaked), you can do: + + % ipcs -s | perl -ane '`ipcrm -s $F[1]`' + +httpd-2.0 seems to use key C0x for its semaphores, so to +remove only those you can use: + + % ipcs -s | perl -ane '/^0x/ `ipcrm -s $F[1]`' + +Notice that on other platforms the output of Cipcs -s might be +different, so you may need to apply a different one liner. + + =head2 Segmentation Fault when Using DBI Update DBI to at least version 1.31. - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: modperl-docs/src/docs/2.0/user/troubleshooting troubleshooting.pod
stas2003/05/04 19:43:49 Modified:src/docs/2.0/user/troubleshooting troubleshooting.pod Log: a few wording tweaks Revision ChangesPath 1.8 +6 -5 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.7 retrieving revision 1.8 diff -u -r1.7 -r1.8 --- troubleshooting.pod 5 May 2003 02:41:40 - 1.7 +++ troubleshooting.pod 5 May 2003 02:43:49 - 1.8 @@ -51,18 +51,19 @@ % ipcrm -s 2719745 -Instead of manually removing each, and if you know that none of listed -the semaphores is really used (all leaked), you can do: +Instead of manually removing each (and sometimes there can be many of +them), and if you know that none of listed the semaphores is really +used (all leaked), you can try to remove them all: % ipcs -s | perl -ane '`ipcrm -s $F[1]`' -httpd-2.0 seems to use key C0x for its semaphores, so to -remove only those you can use: +httpd-2.0 seems to use the key C0x for its semaphores on +Linux, so to remove only those that match that key you can use: % ipcs -s | perl -ane '/^0x/ `ipcrm -s $F[1]`' Notice that on other platforms the output of Cipcs -s might be -different, so you may need to apply a different one liner. +different, so you may need to apply a different Perl one-liner. =head2 Segmentation Fault when Using DBI - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: modperl-docs/src/docs/2.0/user/troubleshooting troubleshooting.pod
stas2002/12/03 19:00:33 Modified:src/docs/2.0/user/handlers http.pod src/docs/2.0/user/troubleshooting troubleshooting.pod Log: internal links sync Revision ChangesPath 1.7 +2 -2 modperl-docs/src/docs/2.0/user/handlers/http.pod Index: http.pod === RCS file: /home/cvs/modperl-docs/src/docs/2.0/user/handlers/http.pod,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- http.pod 29 Nov 2002 04:52:17 - 1.6 +++ http.pod 4 Dec 2002 03:00:33 - 1.7 @@ -959,8 +959,8 @@ /Location CSetHandler set to -CLperl-script|docs::2.0::user::config::config/perl_script or -CLmodperl|docs::2.0::user::config::config/modperl tells Apache +CLperl-script|docs::2.0::user::config::config/C_perl_script_ or +CLmodperl|docs::2.0::user::config::config/C_modperl_ tells Apache that mod_perl is going to handle the response generation. CPerlResponseHandler tells mod_perl which callback is going to do the job. 1.4 +6 -5 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.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- troubleshooting.pod 29 Nov 2002 07:20:22 - 1.3 +++ troubleshooting.pod 4 Dec 2002 03:00:33 - 1.4 @@ -53,16 +53,17 @@ The issue is that the C array Cenviron[] is not thread-safe. Therefore mod_perl 2.0 unties C%ENV from the underlying Cenviron[] array under the -ILperl-script|docs::2.0::user::config::config/perl_script handler. +ILperl-script|docs::2.0::user::config::config/C_perl_script_ +handler. The CDBD::Oracle driver or client library uses Cgetenv() (which fetches from the Cenviron[] array). When C%ENV is untied from Cenviron[], Perl code will see C%ENV changes, but C code will not. -The ILmodperl|docs::2.0::user::config::config/modperl handler does -not untie C%ENV from Cenviron[]. Still one should avoid setting -C%ENV values whenever possible. And if it is required, should be -done at startup time. +The ILmodperl|docs::2.0::user::config::config/C_modperl_ handler +does not untie C%ENV from Cenviron[]. Still one should avoid +setting C%ENV values whenever possible. And if it is required, +should be done at startup time. In the particular case of the CDBD:: drivers, you can set the variables that don't change (C$ENV{ORACLE_HOME} and - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: modperl-docs/src/docs/2.0/user/troubleshooting troubleshooting.pod
stas2002/11/28 23:16:19 Modified:src/docs/2.0/user/troubleshooting troubleshooting.pod Log: C Libraries Don't See C%ENV Entries Set by Perl Code problem and solutions cracked by Doug and Geoffrey Revision ChangesPath 1.2 +31 -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.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- troubleshooting.pod 2 Sep 2002 06:40:29 - 1.1 +++ troubleshooting.pod 29 Nov 2002 07:16:18 - 1.2 @@ -43,7 +43,38 @@ =head1 Runtime +=head2 C Libraries Don't See C%ENV Entries Set by Perl Code +For example some people have reported problems with CDBD::Oracle +(whose guts are implemented in C), which doesn't see environment +variables (like CORACLE_HOME, CORACLE_SID, etc.) set in the perl +script and therefore fails to connect. + +The issue is that the C array Cenviron[] is not thread-safe. +Therefore mod_perl 2.0 unties C%ENV from the underlying Cenviron[] +array under the +ILperl-script|docs::2.0::user::config::config/perl_script handler. + +The CDBD::Oracle driver or client library uses Cgetenv() (which +fetches from the Cenviron[] array). When C%ENV is untied from +Cenviron[], Perl code will see C%ENV changes, but C code will not. + +The ILmodperl|docs::2.0::user::config::config/modperl handler does +not untie C%ENV from Cenviron[]. Still one should avoid setting +C%ENV values whenever possible. And if it is required, should be +done at startup time. + +In the particular case of the CDBD:: drivers, you can set the +variables that don't change (C$ENV{ORACLE_HOME} and +C$ENV{NLS_LANG} in the startup file, and those that change pass via +the Cconnect() method, e.g.: + + my $sid = 'ynt0'; + my $dsn = 'dbi:Oracle:'; + my $user = 'username/password'; + my $password = ''; + $dbh = DBI-connect($dsn$sid, $user, $password) + or die Cannot connect: . $DBI::errstr; - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
cvs commit: modperl-docs/src/docs/2.0/user/troubleshooting troubleshooting.pod
stas2002/11/28 23:20:22 Modified:src/docs/2.0/user/troubleshooting troubleshooting.pod Log: extra caution note by Geoffrey Revision ChangesPath 1.3 +5 -1 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.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- troubleshooting.pod 29 Nov 2002 07:16:18 - 1.2 +++ troubleshooting.pod 29 Nov 2002 07:20:22 - 1.3 @@ -76,7 +76,11 @@ $dbh = DBI-connect($dsn$sid, $user, $password) or die Cannot connect: . $DBI::errstr; - +Also remember that CDBD::Oracle requires that IORACLE_HOME (and +any other stuff like INSL_LANG stuff) be in C%ENV when +CDBD::Oracle is loaded (which might happen indirectly via the CDBI +module. Therefore you need to make sure that wherever that load +happens C%ENV is properly set by that time. =head1 Maintainers - To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]