Date: Thu, 7 Oct 2004 00:45:22 -0500 From: Dan Nelson <dnelson@allantgroup.com> To: Marc Balmer <marc@msys.ch> Cc: freebsd-hackers@freebsd.org Subject: Re: syslog() reentrant when compiling with -pthread? Message-ID: <20041007054521.GA7104@dan.emsphone.com> In-Reply-To: <A3E829CE-1820-11D9-AB94-003065F9345A@msys.ch> References: <FFEC3743-17A3-11D9-BB63-0003938168B2@msys.ch> <20041006144800.GB87201@dan.emsphone.com> <A3E829CE-1820-11D9-AB94-003065F9345A@msys.ch>
next in thread | previous in thread | raw e-mail | index | archive | help
In the last episode (Oct 07), Marc Balmer said: > 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. 4) make syslog() use strerror_r() Actually, for known errno values, strerror() is thread-safe on FreeBSD. It just returns a pointer into sys_errlist[]. For invalid values it stuffs "Unknown error: ##" into a static buffer and returns a pointer to that. I'll update the PR to make syslog call strerror_r(). http://www.freebsd.org/cgi/query-pr.cgi?pr=standards/72394 -- Dan Nelson dnelson@allantgroup.com
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20041007054521.GA7104>