You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@spamassassin.apache.org by dvogel <dv...@intercarve.net> on 2007/09/14 19:33:27 UTC

Mail log errors about PerMsgStatus.pm

I've been seeing these errors in my mail log. This is SpamAssassin version
3.2.3 running on Perl version 5.8.8. Installed via apt on debian/stable.
I've tried to `apt-get install --reinstall spamassassin spamc`, but that did
not work. Is this likely the result of a misconfiguration on my part or is
it more likely a bug in spamassassin that I should report to -dev?


Sep 14 12:51:28 moose spamd[29477]: Use of uninitialized value in
concatenation (.) or string at
/usr/share/perl5/Mail/SpamAssassin/PerMsgStatus.pm line 2669.
Sep 14 12:51:28 moose spamd[29477]: Number found where operator expected at
(eval 303) line 10, near "}
Sep 14 12:51:28 moose spamd[29477]:
Sep 14 12:51:28 moose spamd[29477]:  1"
Sep 14 12:51:28 moose spamd[29477]:  (Missing operator before
Sep 14 12:51:28 moose spamd[29477]:
Sep 14 12:51:28 moose spamd[29477]:  1?)
Sep 14 12:51:28 moose spamd[29477]: rules: failed to run header tests,
skipping some: syntax error at (eval 303) line 11, near ";
Sep 14 12:51:28 moose spamd[29477]: }"


For reference, here is the function in PerMsgStatus.pm that it is
complaining about, with line numbers:

2666 sub register_plugin_eval_glue {
2667   my ($self, $pluginobj, $function) = @_;
2668
2669   my $evalstr = <<"ENDOFEVAL";
2670 {
2671     package Mail::SpamAssassin::PerMsgStatus;
2672
2673         sub $function {
2674           my (\$self) = shift;
2675           my \$plugin = \$self->{conf}->{eval_plugins}->{$function};
2676           return \$plugin->$function (\$self, \@_);
2677         }
2678
2679         1;
2680 }
2681 ENDOFEVAL
2682   eval $evalstr;
2683
2684   if ($@) {
2685     warn "rules: failed to run header tests, skipping some: $@\n";
2686     $self->{rule_errors}++;
2687   }
2688 }
-- 
View this message in context: http://www.nabble.com/Mail-log-errors-about-PerMsgStatus.pm-tf4444172.html#a12680362
Sent from the SpamAssassin - Users mailing list archive at Nabble.com.


Re: Mail log errors about PerMsgStatus.pm

Posted by Matt Kettler <mk...@verizon.net>.
dvogel wrote:
> I've been seeing these errors in my mail log. This is SpamAssassin version
> 3.2.3 running on Perl version 5.8.8. Installed via apt on debian/stable.
> I've tried to `apt-get install --reinstall spamassassin spamc`, but that did
> not work. Is this likely the result of a misconfiguration on my part or is
> it more likely a bug in spamassassin that I should report to -dev?
>
>
> Sep 14 12:51:28 moose spamd[29477]: Use of uninitialized value in
> concatenation (.) or string at
> /usr/share/perl5/Mail/SpamAssassin/PerMsgStatus.pm line 2669.
>   

Something is corrupted about your SA install.. The PerMsgStatus.pm that
comes with 3.2.3 is only 2604 lines long.

Did you have a borked upgrade that would up leaving two
PerMsgStatus.pm's on your system in different directories?

> For reference, here is the function in PerMsgStatus.pm that it is
> complaining about, with line numbers:
>
> 2666 sub register_plugin_eval_glue {
> 2667   my ($self, $pluginobj, $function) = @_;
> 2668
> 2669   my $evalstr = <<"ENDOFEVAL";
> 2670 {
> 2671     package Mail::SpamAssassin::PerMsgStatus;
> 2672
>
>   

That is not the correct code for register_plugin_eval_glue for SA 3.2.3.
It looks like the one from a 3.1.x version of SpamAssassin, as it 
matches the one found in 3.1.8.

It should start off as such:
------------------------------
sub register_plugin_eval_glue {
  my ($self, $function) = @_;

  if (!$function) {
    warn "rules: empty function name";
    return;
  }

  # only need to call this once per fn (globally)
  return if exists $TEMPORARY_EVAL_GLUE_METHODS{$function};
  $TEMPORARY_EVAL_GLUE_METHODS{$function} = undef;
------------------------------

And that much is the same for both 3.2.3 and 3.2.0.