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
pgp00000.pgp
Description: PGP signature