Title: TSan data races from test_queue with free threading · Issue #133473 · python/cpython · GitHub
Open Graph Title: TSan data races from test_queue with free threading · Issue #133473 · python/cpython
X Title: TSan data races from test_queue with free threading · Issue #133473 · python/cpython
Description: Bug report Bug description: In a --with-thread-sanitizer --disable-gil build, running the test_queue test with high levels of --parallel-threads causes TSan to report several data races within the garbage collector. All appear low-severi...
Open Graph Description: Bug report Bug description: In a --with-thread-sanitizer --disable-gil build, running the test_queue test with high levels of --parallel-threads causes TSan to report several data races within the ...
X Description: Bug report Bug description: In a --with-thread-sanitizer --disable-gil build, running the test_queue test with high levels of --parallel-threads causes TSan to report several data races within the ...
Opengraph URL: https://github.com/python/cpython/issues/133473
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"TSan data races from test_queue with free threading","articleBody":"# Bug report\n\n### Bug description:\n\nIn a `--with-thread-sanitizer --disable-gil` build, running the `test_queue` test with high levels of `--parallel-threads` causes TSan to report several data races within the garbage collector. All appear low-severity to me -- the worst they can do is cause the garbage collector to make bad decisions about whether to run a collection -- but I thought I'd report them anyway.\n\nStack traces have been truncated as how we got into the garbage collector isn't germane to the problem, and each individual conflict is only noted once.\n\n```\n$ ./python -E -Wd -m test --parallel-threads 16 test_queue\nUsing random seed: 3119004105\n0:00:00 load avg: 0.87 Run 1 test sequentially in a single process\n0:00:00 load avg: 0.87 [1/1] test_queue\n==================\nWARNING: ThreadSanitizer: data race (pid=373472)\n Write of size 4 at 0x55ba3261501c by thread T469:\n #0 gc_should_collect_rss Python/gc_free_threading.c:2072 (python+0x4e9921)\n ...\n Previous atomic read of size 4 at 0x55ba3261501c by thread T481:\n #0 _Py_atomic_load_int_relaxed Include/cpython/pyatomic_gcc.h:307 (python+0x4e978b)\n #1 gc_should_collect Python/gc_free_threading.c:2081 (python+0x4e978b)\n ...\n\n Atomic read of size 8 at 0x55ba32615100 by thread T481:\n #0 _Py_atomic_load_ssize_relaxed Include/cpython/pyatomic_gcc.h:383 (python+0x4e9829)\n #1 gc_should_collect_rss Python/gc_free_threading.c:2050 (python+0x4e9829)\n ...\n Previous write of size 8 at 0x55ba32615100 by thread T469:\n #0 gc_should_collect_rss Python/gc_free_threading.c:2071 (python+0x4e9912)\n ...\n\n Write of size 4 at 0x55ba3261501c by thread T493:\n #0 gc_should_collect_rss Python/gc_free_threading.c:2072 (python+0x4e9921)\n ...\n Previous atomic write of size 4 at 0x55ba3261501c by thread T509:\n #0 _Py_atomic_add_int Include/cpython/pyatomic_gcc.h:15 (python+0x4eb18b)\n #1 record_allocation Python/gc_free_threading.c:2111 (python+0x4eb18b)\n ...\n\n Atomic write of size 4 at 0x55ee8e6c301c by thread T115:\n #0 _Py_atomic_add_int Include/cpython/pyatomic_gcc.h:15 (python+0x4eb18b)\n #1 record_allocation Python/gc_free_threading.c:2111 (python+0x4eb18b)\n ...\n Previous read of size 4 at 0x55ee8e6c301c by thread T114:\n #0 gc_should_collect_rss Python/gc_free_threading.c:2071 (python+0x4e9903)\n ...\n\n Write of size 8 at 0x558a95f2c0f8 by thread T982:\n #0 gc_collect_internal Python/gc_free_threading.c:2242 (python+0x4f1227)\n ...\n Previous read of size 8 at 0x558a95f2c0f8 by thread T975:\n #0 gc_should_collect_rss Python/gc_free_threading.c:2060 (python+0x4e9846)\n ...\n```\n\nI can send a patch for these if it is felt to be worthwhile.\n\n### CPython versions tested on:\n\nCPython main branch\n\n### Operating systems tested on:\n\nLinux","author":{"url":"https://github.com/zackw","@type":"Person","name":"zackw"},"datePublished":"2025-05-05T21:24:55.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":2},"url":"https://github.com/133473/cpython/issues/133473"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:1d577e0f-ee44-2c32-a4e0-ae8884b71546 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | BEBC:367C3D:C0D186:10519A0:6A531EF9 |
| html-safe-nonce | 834a30d0f39c2f8785c31127776d8a694089e82e6ca6106e720a040c81015d35 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCRUJDOjM2N0MzRDpDMEQxODY6MTA1MTlBMDo2QTUzMUVGOSIsInZpc2l0b3JfaWQiOiI0MTI0MDY2Mzk1ODQyNjE3MDgxIiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0= |
| visitor-hmac | 69e7e5d03533dbe481e817c0afb7e701ec4ff414d03e993d69b1bf32914d902c |
| hovercard-subject-tag | issue:3040866492 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/python/cpython/133473/issue_layout |
| twitter:image | https://opengraph.githubassets.com/c7549fd9d92fd9b3201a862c525e47643e2e3e4a0800b7a1e4e0540c1da456e8/python/cpython/issues/133473 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/c7549fd9d92fd9b3201a862c525e47643e2e3e4a0800b7a1e4e0540c1da456e8/python/cpython/issues/133473 |
| og:image:alt | Bug report Bug description: In a --with-thread-sanitizer --disable-gil build, running the test_queue test with high levels of --parallel-threads causes TSan to report several data races within the ... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | zackw |
| hostname | github.com |
| expected-hostname | github.com |
| None | b9a586c06a05a7a86fc7e3f4dbd03e42f6869085879aa184aa6369456dbd50fb |
| turbo-cache-control | no-preview |
| go-import | github.com/python/cpython git https://github.com/python/cpython.git |
| octolytics-dimension-user_id | 1525981 |
| octolytics-dimension-user_login | python |
| octolytics-dimension-repository_id | 81598961 |
| octolytics-dimension-repository_nwo | python/cpython |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 81598961 |
| octolytics-dimension-repository_network_root_nwo | python/cpython |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 07a982c1d40157c619b364352b704c3ce66bb332 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width