You are viewing a plain text version of this content. The canonical link for it is here.
Posted to docs-cvs@perl.apache.org by st...@apache.org on 2004/04/12 21:08:06 UTC

cvs commit: modperl-docs/src/docs/1.0/guide troubleshooting.pod Changes.pod

stas        2004/04/12 12:08:06

  Modified:    src/docs/1.0/guide troubleshooting.pod Changes.pod
  Log:
  'relocation errors' or 'undefined symbol' problems
  Submitted by:	William McKee <wi...@knowmad.com>
  
  Revision  Changes    Path
  1.27      +68 -0     modperl-docs/src/docs/1.0/guide/troubleshooting.pod
  
  Index: troubleshooting.pod
  ===================================================================
  RCS file: /home/cvs/modperl-docs/src/docs/1.0/guide/troubleshooting.pod,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -u -r1.26 -r1.27
  --- troubleshooting.pod	7 Apr 2004 17:12:53 -0000	1.26
  +++ troubleshooting.pod	12 Apr 2004 19:08:06 -0000	1.27
  @@ -60,6 +60,74 @@
   This section talks about errors reported when you attempt to start the
   server.
   
  +
  +=head2 'relocation errors' or 'undefined symbol'
  +
  +Although the httpd executable was successfully built, you can still
  +have make failures. The output could include the following errors:
  +
  +  relocation error:
  +  undefined symbol: PL_dowarn
  +
  +This class of errors is often due to multiple installations of
  +Perl. Having F<libperl.so> in I</usr/lib/> is a great reason for lots
  +of obscure problems, when you have one more perl installed
  +elsewhere. That's why perl puts its F<libperl.so> under its private
  +tree (e.g., I</usr/lib/perl5/5.8.3/i686/CORE/>). But some
  +distributions decide to put it along with the rest of system
  +libraries, not expecting that users will have extra perl
  +installations.
  +
  +To resolve the problem you need to check what perl library the
  +application finds. This is easy to check with the help of C<ldd(1)>.
  +
  +If your mod_perl is statically linked with httpd, you need to check
  +the httpd executable whether it's linked against F<libperl.so>:
  +
  +  % ldd /path/to/apache/bin/httpd
  +
  +If the output includes F<libperl.so> check that the path is to the
  +version of Perl you've built mod_perl with. If your httpd executable
  +is reported to link against the wrong F<libperl.so> file, you've found
  +the cause of the problem. You should either ask your distributor to
  +not put the perl library into the global system libs directory, or use
  +some other solution to force the loading of the right library, which
  +is usually very platform specific. For example on Linux one can
  +preload a specific library path using the C<LD_PRELOAD> environment
  +variable. So if the wanted library is located at
  +I</usr/lib/perl5/5.8.3/i686/CORE/libperl.so> you can make httpd use it
  +with:
  +
  +  % LD_PRELOAD=/usr/lib/perl5/5.8.3/i686/CORE/libperl.so httpd
  +
  +for more information on Linux loader referer to the C<ld.so(8)>
  +C<ldconfig(8)> manpages.
  +
  +If mod_perl is built as DSO, you will need to check the mod_perl
  +module (and not C<httpd>) with C<ldd>. Confusingly, mod_perl 1.0
  +module name is the same as of Perl: F<libperl.so>. If for example the
  +mod_perl module is located in I</path/to/apache/libexec/>, the command
  +would be:
  +
  +  % ldd /path/to/apache/libexec/libperl.so
  +
  +There could be another variation of the problem where a Perl used to
  +build mod_perl is statically linked and again, during the build time a
  +wrong static archive (e.g., F</usr/lib/libperl.a>) is picked by the
  +linker. If Perl is statically linked, running:
  +
  +  % perl -V:useshrplib
  +
  +will say:
  +
  +    useshrplib='true'
  +
  +Again, the solution may vary from system to system, but moving
  +F</usr/lib/libperl.a> away while building mod_perl is probably the
  +simplest.
  +
  +
  +
   =head2 SegFaults During Startup
   
   Possible reasons and solutions:
  
  
  
  1.40      +5 -0      modperl-docs/src/docs/1.0/guide/Changes.pod
  
  Index: Changes.pod
  ===================================================================
  RCS file: /home/cvs/modperl-docs/src/docs/1.0/guide/Changes.pod,v
  retrieving revision 1.39
  retrieving revision 1.40
  diff -u -u -r1.39 -r1.40
  --- Changes.pod	22 Dec 2003 02:24:22 -0000	1.39
  +++ Changes.pod	12 Apr 2004 19:08:06 -0000	1.40
  @@ -49,6 +49,11 @@
    o Note about browser not rendering immediately even under $|=1.
      [Lee Goddard <home (at) LeeGoddard.com>]
   
  +* troubleshooting.pod
  +
  +  o 'relocation errors' or 'undefined symbol' problems [William McKee
  +    <wi...@knowmad.com>]
  +
   =head1 Jul 14 2002 ver 1.32
   
   * snippets.pod:
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: docs-cvs-unsubscribe@perl.apache.org
For additional commands, e-mail: docs-cvs-help@perl.apache.org