Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 7 Oct 2004 07:20:45 +0200
From:      Marc Balmer <marc@msys.ch>
To:        Dan Nelson <dnelson@allantgroup.com>
Cc:        freebsd-hackers@freebsd.org
Subject:   Re: syslog() reentrant when compiling with -pthread?
Message-ID:  <A3E829CE-1820-11D9-AB94-003065F9345A@msys.ch>
In-Reply-To: <20041006144800.GB87201@dan.emsphone.com>
References:  <FFEC3743-17A3-11D9-BB63-0003938168B2@msys.ch> <20041006144800.GB87201@dan.emsphone.com>

next in thread | previous in thread | raw e-mail | index | archive | help

Am 06.10.2004 um 16:48 schrieb Dan Nelson:

> The only unsafe part is openlog(), so set that up before you start any
> threads and you'll be okay.  Once the log fd is opened, the syslog()
> call looks to be thread-safe.  Everything in there is done with local
> variables and atomic writes.

At least on OpenBSD I can use "%m" in the syslog() format string.  This 
results in a call to strerror(), which is not thread safe, AFAIK.  This 
probably is true for FreeBSD as well, so we have the following three 
conditions for thread safe syslog():

1) openlog() must be called before any threads that use syslog() are 
started.
2) The first argument to openlog() must not be NULL.
3) The "%m" Format String must not be used in syslog() calls.

Any comments?

- Marc



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?A3E829CE-1820-11D9-AB94-003065F9345A>