https://github.com/python/cpython/commit/65312531958931136c34ddcfa7ad40c08a5d7c63
commit: 65312531958931136c34ddcfa7ad40c08a5d7c63
branch: 3.13
author: Serhiy Storchaka <[email protected]>
committer: serhiy-storchaka <[email protected]>
date: 2026-07-20T23:04:40+03:00
summary:

[3.13] gh-154283: Make threading.get_native_id() unique across processes on 
DragonFly (GH-154287) (GH-154298)

On DragonFly BSD lwp_gettid() is only unique within a process (the main
thread is always LWP 1), so combine it with the process id, like Solaris.
(cherry picked from commit 53597df11e2d9f01ade2529c147df24b49685878)

Co-authored-by: Claude Opus 4.8 (1M context) <[email protected]>

files:
A Misc/NEWS.d/next/Library/2026-07-20-21-36-40.gh-issue-154283.Xip7xE.rst
M Python/thread_pthread.h

diff --git 
a/Misc/NEWS.d/next/Library/2026-07-20-21-36-40.gh-issue-154283.Xip7xE.rst 
b/Misc/NEWS.d/next/Library/2026-07-20-21-36-40.gh-issue-154283.Xip7xE.rst
new file mode 100644
index 000000000000000..a278d67e1824d58
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2026-07-20-21-36-40.gh-issue-154283.Xip7xE.rst
@@ -0,0 +1,2 @@
+On DragonFly BSD, :func:`threading.get_native_id` now returns a value that is
+unique across processes, matching the other platforms.
diff --git a/Python/thread_pthread.h b/Python/thread_pthread.h
index da4058242448f3e..8e7b9589615b124 100644
--- a/Python/thread_pthread.h
+++ b/Python/thread_pthread.h
@@ -407,8 +407,8 @@ PyThread_get_thread_native_id(void)
     lwpid_t native_id;
     native_id = _lwp_self();
 #elif defined(__DragonFly__)
-    lwpid_t native_id;
-    native_id = lwp_gettid();
+    // lwp_gettid() is only unique within a process, so combine it with the 
pid.
+    unsigned long native_id = (unsigned long)getpid() << 32 | lwp_gettid();
 #endif
     return (unsigned long) native_id;
 }

_______________________________________________
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]

Reply via email to