[Mimedefang] mimedefang.pl spilling "Use of inherited AUTOLOAD for non-method" errors

Chris Hoogendyk hoogendyk at bio.umass.edu
Tue Feb 15 18:03:10 EST 2011


On 2/12/11 7:51 PM, Jan-Pieter Cornet wrote:
> On 2011 Feb 12, at 23:31 , kd6lvw at yahoo.com wrote:
>> --- On Sat, 2/12/11, Kenneth Porter<shiva at sewingwitch.com>  wrote:
>>> PM -0800 kd6lvw at yahoo.com wrote:
>>>> Try updating your Perl interpreter.  5.8.8 is years out of date.
>>>> 5.12.3 is the current release.
>>> 5.8.8 is the version available for the widely-deployed RHEL5....
>> And that is your problem.  Upgrade it from source.
> That won't help. The bug isn't in perl, it's in Unix::Syslog. perl5.12 will give the same error.
>
> It is likely caused by the fact that the OP's syslog.h is missing a couple of constants, that are mentioned in the original errors:
>> Feb 11 06:46:31 marlin mimedefang-multiplexor[1229]: [ID 980602 mail.info] Slave 3 stderr: Use of inherited AUTOLOAD for non-method Unix::Syslog::LOG_AUTHPRIV() is deprecated at (eval 103) line 1.
>> Feb 11 06:46:31 marlin mimedefang-multiplexor[1229]: [ID 980602 mail.info] Slave 3 stderr: Use of inherited AUTOLOAD for non-method Unix::Syslog::LOG_FTP() is deprecated at (eval 104) line 1.
>> Feb 11 06:46:31 marlin mimedefang-multiplexor[1229]: [ID 980602 mail.info] Slave 3 stderr: Use of inherited AUTOLOAD for non-method Unix::Syslog::LOG_PERROR() is deprecated at (eval 118) line 1.
>> Feb 11 06:46:31 marlin mimedefang-multiplexor[1229]: [ID 980602 mail.info] Slave 3 stderr: Use of inherited AUTOLOAD for non-method Unix::Syslog::LOG_FAC() is deprecated at (eval 121) line 1.
>> Feb 11 06:46:31 marlin mimedefang-multiplexor[1229]: [ID 980602 mail.info] Slave 3 stderr: Use of inherited AUTOLOAD for non-method Unix::Syslog::LOG_PRI() is deprecated at (eval 123) line 1.
>> Feb 11 06:46:31 marlin mimedefang-multiplexor[1229]: [ID 980602 mail.info] Slave 3 stderr: Use of inherited AUTOLOAD for non-method Unix::Syslog::LOG_MAKEPRI() is deprecated at (eval 125) line 1.
> I can reproduce a similar error like this:
>
> $ perl -MUnix::Syslog -we 'eval { Unix::Syslog::LOG_FOO() }'
> Use of inherited AUTOLOAD for non-method Unix::Syslog::LOG_FOO() is deprecated at -e line 1.
>
> (the function then fails, but you do not see the failure because of the eval). If your syslog.h doesn't define LOG_AUTHPRIV, fetching the constant Unix::Syslog::LOG_AUTHPRIV() will give the same warning. I don't exactly know what triggers this, could be something in mimedefang.pl.
>
> The best fix seems to be to not use Unix::Syslog.
>
>> Also, what are the consequences? Does this mean there are other errors occuring that are not getting logged?
> Not likely. It looks like your Unix::Syslog is limited, but not completely crippled. If Sys::Sylog works better, I suggest you use that instead (if you installed Unix::Syslog especially for this, remove it).
>
>> If I put my change in and just let it use Sys::Syslog, would that actually work?
> Yes.
>
>> What would I lose by doing that?
> The ability to easily upgrade when a new mimedefang version comes out.


Thank you, Jan-Pieter!

We believe your's is the definitive response. We believe we fixed the problem by editing 
Unix/Syslog.pm and removing the items from EXPORT that were not defined in our environment. We 
believe none of those were used in mimedefang. Following is the segment showing what we changed:

=====================
# The following has been modified from the distribution Syslog.pm that had originally
# been installed from the source. Comments include George's commentary along with the
# original code. The uncommented lines are the modified code.

# Items to export into callers namespace by default. Note: do not export
# names by default without a very good reason. Use EXPORT_OK instead.
# Do not simply export all your public functions/methods/constants.

# NOTE: the following are the original macros.  Of these LOG_AUTHPRIV, LOG_FTP,
#       LOG_PERROR, LOG_FAC, LOG_PRI, and LOG_MAKEPRI are not defined on Solaris
#       and so generate an error.  Those are removed from the non-commented text
#       below.  GFD 15 Feb 2011
#
#@EXPORT_OK = qw(LOG_EMERG LOG_ALERT LOG_CRIT LOG_ERR LOG_WARNING LOG_NOTICE
#               LOG_INFO LOG_DEBUG LOG_KERN LOG_USER LOG_MAIL LOG_DAEMON
#               LOG_AUTH LOG_SYSLOG LOG_LPR LOG_NEWS LOG_UUCP LOG_CRON
#               LOG_AUTHPRIV LOG_FTP LOG_LOCAL0 LOG_LOCAL1 LOG_LOCAL2
#               LOG_LOCAL3 LOG_LOCAL4 LOG_LOCAL5 LOG_LOCAL6 LOG_LOCAL7
#               LOG_PID LOG_CONS LOG_ODELAY LOG_NDELAY LOG_NOWAIT LOG_PERROR
#               LOG_NFACILITIES LOG_FACMASK LOG_FAC LOG_MASK LOG_PRI LOG_UPTO
#               LOG_MAKEPRI closelog openlog syslog setlogmask priorityname
#               facilityname);
#
#%EXPORT_TAGS = ("macros" => [qw(LOG_EMERG LOG_ALERT LOG_CRIT LOG_ERR
#                               LOG_WARNING LOG_NOTICE LOG_INFO LOG_DEBUG
#                               LOG_KERN LOG_USER LOG_MAIL LOG_DAEMON LOG_AUTH
#                               LOG_SYSLOG LOG_LPR LOG_NEWS LOG_UUCP LOG_CRON
#                               LOG_AUTHPRIV LOG_FTP LOG_LOCAL0 LOG_LOCAL1
#                               LOG_LOCAL2 LOG_LOCAL3 LOG_LOCAL4 LOG_LOCAL5
#                               LOG_LOCAL6 LOG_LOCAL7 LOG_PID LOG_CONS
#                               LOG_ODELAY LOG_NDELAY LOG_NOWAIT LOG_PERROR
#                               LOG_NFACILITIES LOG_FACMASK LOG_FAC LOG_MASK
#                               LOG_PRI LOG_UPTO LOG_MAKEPRI)],
#               "subs"  => [qw(closelog openlog syslog setlogmask priorityname
#                              facilityname)]);

@EXPORT_OK = qw(LOG_EMERG LOG_ALERT LOG_CRIT LOG_ERR LOG_WARNING LOG_NOTICE
                 LOG_INFO LOG_DEBUG LOG_KERN LOG_USER LOG_MAIL LOG_DAEMON
                 LOG_AUTH LOG_SYSLOG LOG_LPR LOG_NEWS LOG_UUCP LOG_CRON
                 LOG_LOCAL0 LOG_LOCAL1 LOG_LOCAL2
                 LOG_LOCAL3 LOG_LOCAL4 LOG_LOCAL5 LOG_LOCAL6 LOG_LOCAL7
                 LOG_PID LOG_CONS LOG_ODELAY LOG_NDELAY LOG_NOWAIT
                 LOG_NFACILITIES LOG_FACMASK LOG_MASK LOG_UPTO
                 closelog openlog syslog setlogmask priorityname
                 facilityname);

%EXPORT_TAGS = ("macros" => [qw(LOG_EMERG LOG_ALERT LOG_CRIT LOG_ERR
                                 LOG_WARNING LOG_NOTICE LOG_INFO LOG_DEBUG
                                 LOG_KERN LOG_USER LOG_MAIL LOG_DAEMON LOG_AUTH
                                 LOG_SYSLOG LOG_LPR LOG_NEWS LOG_UUCP LOG_CRON
                                 LOG_LOCAL0 LOG_LOCAL1
                                 LOG_LOCAL2 LOG_LOCAL3 LOG_LOCAL4 LOG_LOCAL5
                                 LOG_LOCAL6 LOG_LOCAL7 LOG_PID LOG_CONS
                                 LOG_ODELAY LOG_NDELAY LOG_NOWAIT
                                 LOG_NFACILITIES LOG_FACMASK LOG_MASK
                                 LOG_UPTO)],
                 "subs"  => [qw(closelog openlog syslog setlogmask priorityname
                                facilityname)]);

$VERSION = '1.1';

bootstrap Unix::Syslog $VERSION;
=====================



-- 
---------------

Chris Hoogendyk

-
    O__  ---- Systems Administrator
   c/ /'_ --- Biology&  Geology Departments
  (*) \(*) -- 140 Morrill Science Center
~~~~~~~~~~ - University of Massachusetts, Amherst

<hoogendyk at bio.umass.edu>

---------------

Erdös 4





More information about the MIMEDefang mailing list