On macOS, fix a crash in syslog.syslog() in multi-threaded
applications. On macOS, the libc syslog() function is not
thread-safe, so syslog.syslog() no longer releases the GIL to call
it.
(cherry picked from commit
d4b91663857e85eab1f309cacec4d27b5f6657ec)
Co-authored-by: Victor Stinner <vstinner@python.org>
--- /dev/null
+On macOS, fix a crash in :func:`syslog.syslog` in multi-threaded applications.
+On macOS, the libc ``syslog()`` function is not thread-safe, so
+:func:`syslog.syslog` no longer releases the GIL to call it. Patch by Victor
+Stinner.
*/
PyObject *ident = S_ident_o;
Py_XINCREF(ident);
+#ifdef __APPLE__
+ // gh-98178: On macOS, libc syslog() is not thread-safe
+ syslog(priority, "%s", message);
+#else
Py_BEGIN_ALLOW_THREADS;
syslog(priority, "%s", message);
Py_END_ALLOW_THREADS;
+#endif
Py_XDECREF(ident);
Py_RETURN_NONE;
}