On 2011-07-27 16:55:29, Davide Brini wrote:
> Hi, I'm using the stable mon-1.2.0-1 under Ubuntu 11.04 (Perl 5.10.1), and I
> noticed that mon wasn't logging anything at all in syslog. Further
> inspection revealed that the problem seems to be in the redefined syslog()
> function:
> 
> no warnings; # Redefining syslog
> sub syslog {
>    eval {
>        local $SIG{"__DIE__"}= sub { }; 
>        my @log = map { s/\%//mg; } @_;
>        Sys::Syslog::syslog(@log);
>    }
> }
> 
> since $_ is aliased in a map {} block, when the function is passed constant
> strings, the map {} on @_ fails with a "modification of a read-only value
> attempted". However this is not apparent, not even in debug mode, since it
> happens inside the eval{} block.
> 
> Suggested change (for example):
> 
> no warnings; # Redefining syslog
> sub syslog {
>    eval {
>        local $SIG{"__DIE__"}= sub { };
>        my @log = @_;
>        s/\%//mg for (@log);
>        Sys::Syslog::syslog(@log);
>    }
> }

Debian fixed this with Bug#611751 I believe.  Surprised if that 
did not make it upstream.


/Allan
-- 
Allan Wind
Life Integrity, LLC
<http://lifeintegrity.com>

_______________________________________________
mon mailing list
mon@linux.kernel.org
http://linux.kernel.org/mailman/listinfo/mon

Reply via email to