On Mon, 13 Dec 1999, Doug MacEachern wrote:
> are you still stuck on this?
Yes. To reiterate:
Solaris 2.5.1 sparc, gcc 2.95, perl 5.005_03 (configured with Solaris hints),
mod_perl 1.21, apache 1.3.9, mod_fastcgi 2.2.2.
Everything works fine EXCEPT when I try to "use" a dynamically loaded module
(Data::Dumper or Storable, for example) inside a mod_perl handler. I have no
trouble using these modules in regular perl scripts, mod_cgi scripts, or
mod_fastcgi scripts.
> did you link mod_perl static or dso? if dso, try static.
All of my Apache modules are compiled statically.
> you can also try configuring Perl with -Dusemymalloc=n,
> but that comes with a large performance hit.
I've tried it both ways, using perl's malloc or Solaris', and both
give me the same result in my error logs:
[Tue Dec 14 08:36:01 1999] [error] Can't load
'/usr/local/lib/perl5/5.00503/sun4-solaris/auto/Data/Dumper/Dumper.so' for module
Data::Dumper: ld.so.1: /usr/local/web/bin/httpd: fatal: relocation error: symbol not
found: main: referenced in
/usr/local/lib/perl5/5.00503/sun4-solaris/auto/Data/Dumper/Dumper.so at
/usr/local/lib/perl5/5.00503/sun4-solaris/DynaLoader.pm line 169.
All I need to do is add "use Data::Dumper;" in a handler to trigger this.
And as I mentioned in my previous messages, this same setup works fine under
Linux and FreeBSD. I can also get the problem to go away on Solaris by
downgrading perl to 5.004_05 or upgrading it to 5.005_62.
A co-worker who understands Perl internals better than I do seems to have
tracked it down to a problem with Dynaloader's dlopen() call, though looking
at ext/Dynaloader/dl_dlopen.xs in the various Perl sources there have
apparently been no changes to it since 1994(?!). So maybe the problem lies
elsewhere. Perl has caused my C skills to atrophy so we're getting into
territory I don't really understand. Would something like gdb help diagnose
the problem?