On Wed, 5 Sep 2001, Terry Lambert wrote:
> Mikhail Teterin wrote:
> > > Also, printf() allocates memory for floating point, so if that
> > > percentage is a floating point calculation, then you are in double
> > > trouble, since you are not allowed to call malloc() in a signal
> > > handler.
> >
> > That's interesting... I can modify it a bit, to round the percentage to
> > fit the %d if called as a signal handler. Thanks. Anything else?
>
> If setproctitle() calls malloc/strsave/etc., it is not safe
> to call in a signal handler.
Neither is setproctitle() (since it is not in the list of functions that
are safe to call in a signal handler), so this is moot.
> I'm not saying it does, I'm saying I haven't looked at the
> code in libc for the function, and you should, before using
> it in a signal handler...
setproctitle() directly calls the following functions that are not safe
to call in a signal handler (since they are not in the magic list).
snprintf, strlen, vsnprintf, sysctl, sysctlbyname
I think all of these are safe in practice.
It also accesses some variables that are not safe to access in a signal
handler (non-auto ones that are not of type "volatile sig_atomic_t" or
are accessed by reads). This is unsafe in practice. E.g., concurrent
calls to setproctitle() might corrupt the state of the ps_strings variable.
Bruce
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message