https://github.com/python/cpython/commit/326119d3731f784aa9f5d4afa7b687dd1ab1d916
commit: 326119d3731f784aa9f5d4afa7b687dd1ab1d916
branch: main
author: Sam Gross <[email protected]>
committer: colesbury <[email protected]>
date: 2024-02-14T16:41:29-05:00
summary:
gh-112529: Use _PyThread_Id() in mimalloc in free-threaded build (#115488)
The free-threaded GC uses mimallocs segment thread IDs to restore
the overwritten `ob_tid` thread ids in PyObjects. For that reason, it's
important that PyObjects and mimalloc use the same identifiers.
files:
M Include/internal/mimalloc/mimalloc/prim.h
M Include/internal/pycore_mimalloc.h
diff --git a/Include/internal/mimalloc/mimalloc/prim.h
b/Include/internal/mimalloc/mimalloc/prim.h
index 4b9e4dc4194d77..8a60d528458e6c 100644
--- a/Include/internal/mimalloc/mimalloc/prim.h
+++ b/Include/internal/mimalloc/mimalloc/prim.h
@@ -131,7 +131,13 @@ extern bool _mi_process_is_initialized; // has
mi_process_init been
static inline mi_threadid_t _mi_prim_thread_id(void) mi_attr_noexcept;
-#if defined(_WIN32)
+#ifdef MI_PRIM_THREAD_ID
+
+static inline mi_threadid_t _mi_prim_thread_id(void) mi_attr_noexcept {
+ return MI_PRIM_THREAD_ID();
+}
+
+#elif defined(_WIN32)
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
diff --git a/Include/internal/pycore_mimalloc.h
b/Include/internal/pycore_mimalloc.h
index 1e7ed5a4ca62e2..14c98108ec131e 100644
--- a/Include/internal/pycore_mimalloc.h
+++ b/Include/internal/pycore_mimalloc.h
@@ -20,9 +20,12 @@ typedef enum {
#include "pycore_pymem.h"
#ifdef WITH_MIMALLOC
-#define MI_DEBUG_UNINIT PYMEM_CLEANBYTE
-#define MI_DEBUG_FREED PYMEM_DEADBYTE
-#define MI_DEBUG_PADDING PYMEM_FORBIDDENBYTE
+# ifdef Py_GIL_DISABLED
+# define MI_PRIM_THREAD_ID _Py_ThreadId
+# endif
+# define MI_DEBUG_UNINIT PYMEM_CLEANBYTE
+# define MI_DEBUG_FREED PYMEM_DEADBYTE
+# define MI_DEBUG_PADDING PYMEM_FORBIDDENBYTE
#ifdef Py_DEBUG
# define MI_DEBUG 1
#else
_______________________________________________
Python-checkins mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]