Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
gh-98178: syslog() is not thread-safe on macOS (GH-98213)
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 d4b9166)

Co-authored-by: Victor Stinner <[email protected]>
  • Loading branch information
vstinner authored and miss-islington committed Oct 13, 2022
commit 7f51171a0e1dbb2908d4c098445facdf9a2b4753
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
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.
5 changes: 5 additions & 0 deletions Modules/syslogmodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -207,9 +207,14 @@ syslog_syslog(PyObject * self, PyObject * args)
*/
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;
}
Expand Down