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?

Reply via email to