On Thu, Aug 14, 2003 at 08:58:13AM -0400, Ted Beatie wrote:
> it /looks/ like something is clobbering the symbol table.  if I do this;

Ok, so I figured out what this problem is (at least on tcb's box, YMMV).
I'll end up writing an FAQ section about it, but here's the short short
version:

"spamassassin" and "spamd" both do a "use lib" call (changes @INC)
to specify where to look for the installed SA libraries.  Most systems
don't need this, but if someone installs SA in a non-standard place,
it's useful.

This typically isn't a problem, but in this case, the new path order
made an old Digest::SHA1 module the default (2.01).  However, a newer
version (2.04) was installed (in a different, but standard, directory).
Since Digest::SHA1 has XS code (compiled libs), what was happening was
that perl was reading the 2.01 pm file, then finding the 2.04 libs,
and perl's Dynaloader was barfing.  All of that happens from the
Razor2::Client::Agent call, so it looks like a Razor2 issue.

The solution was to remove the left over v2.01 file, and everything
worked like a champ after that.


The slightly longer version:

All the same as above, but here's how I figured it out:

# note: the use lib command was copied from the "spamassassin" script.
$ perl -e 'use lib "/usr/lib/perl5/site_perl/5.6.0"; use Razor2::Client::Agent;'
Digest::SHA1 object version 2.04 does not match bootstrap parameter 2.01 at
/usr/lib/perl5/5.6.0/ppc-linux/DynaLoader.pm line 219.
Compilation failed in require at 
/usr/lib/perl5/site_perl/5.6.0/ppc-linux/Razor2/String.pm line 4.
BEGIN failed--compilation aborted at 
/usr/lib/perl5/site_perl/5.6.0/ppc-linux/Razor2/String.pm line 4.
Compilation failed in require at (eval 7) line 3.
        ...propagated at /usr/lib/perl5/5.6.0/base.pm line 62.
BEGIN failed--compilation aborted at 
/usr/lib/perl5/site_perl/5.6.0/ppc-linux/Razor2/Client/Core.pm line
22.
Compilation failed in require at (eval 1) line 3.
        ...propagated at /usr/lib/perl5/5.6.0/base.pm line 62.
BEGIN failed--compilation aborted at 
/usr/lib/perl5/site_perl/5.6.0/ppc-linux/Razor2/Client/Agent.pm line
18.
Compilation failed in require at -e line 1.
BEGIN failed--compilation aborted at -e line 1.


It was then pretty simple to search around /usr/lib/perl5 and see multiple
Digest/SHA1.pm files in different directories.


Merry Christmas. :)

-- 
Randomly Generated Tagline:
"Q. Why is this so clumsy?
  A. The trick is to use Perl's strengths rather than its weaknesses."
                   - Larry Wall

Attachment: pgp00000.pgp
Description: PGP signature

Reply via email to