https://bugzilla.novell.com/show_bug.cgi?id=723708
https://bugzilla.novell.com/show_bug.cgi?id=723708#c25
Michael Schröder changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEEDINFO |NEW
CC| |mls@suse.com
InfoProvider|mls@suse.com |
--- Comment #25 from Michael Schröder 2011-11-21 13:47:33 UTC ---
To shed some light on this, perl-5.14 uses prctl() to set $0, perl-5.12 did not
do this. Here's the perldelta entry:
Assignment to C<$0> sets the legacy process name with C on Linux
On Linux the legacy process name will be set with L, in
addition to altering the POSIX name via C as perl has done
since version 4.000. Now system utilities that read the legacy process
name such as ps, top and killall will recognize the name you set when
assigning to C<$0>. The string you supply will be cut off at 16 bytes,
this is a limitation imposed by Linux.
amavisd reads $0 (which results in /usr/sbin/amavisd), modifies it, and writes
it back to $0. perl then does the prctl() call with the new name.
One can argue that perl should just use the basename for the prctl() call, to
be somewhat compatible to the kernel's setup_new_exec() call. But I don't think
this would fix the bug, as amavisd modifies $0 by appending/prepending stuff,
so checkproc probably won't detect a match (but maybe it cuts off after a
space?).
Seems like there's no trace of the old name left when a prctl(PR_SET_NAME) has
been done.
--
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.