From 3f25e1219334d1f2c5e8a6c8acaf16aee4260a62 Mon Sep 17 00:00:00 2001 From: Ken Jin <28750310+Fidget-Spinner@users.noreply.github.com> Date: Sun, 28 Apr 2024 00:01:08 +0800 Subject: [PATCH 1/4] Fix data race in _PyEval_EvalFrameDefault --- Python/bytecodes.c | 2 ++ Python/generated_cases.c.h | 2 ++ Tools/tsan/suppressions_free_threading.txt | 1 - 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/Python/bytecodes.c b/Python/bytecodes.c index fe3d61362e6b02..e71a9179989e23 100644 --- a/Python/bytecodes.c +++ b/Python/bytecodes.c @@ -163,7 +163,9 @@ dummy_func( if ((oparg & RESUME_OPARG_LOCATION_MASK) < RESUME_AFTER_YIELD_FROM) { CHECK_EVAL_BREAKER(); } +#if ENABLE_SPECIALIZATION this_instr->op.code = RESUME_CHECK; +#endif } } diff --git a/Python/generated_cases.c.h b/Python/generated_cases.c.h index c27505fde3d9fa..11f5fc7ea9d8f3 100644 --- a/Python/generated_cases.c.h +++ b/Python/generated_cases.c.h @@ -4955,7 +4955,9 @@ if ((oparg & RESUME_OPARG_LOCATION_MASK) < RESUME_AFTER_YIELD_FROM) { CHECK_EVAL_BREAKER(); } + #if ENABLE_SPECIALIZATION this_instr->op.code = RESUME_CHECK; + #endif } DISPATCH(); } diff --git a/Tools/tsan/suppressions_free_threading.txt b/Tools/tsan/suppressions_free_threading.txt index 4b1a2fdf6dd43a..3ba8ad6fd48cd0 100644 --- a/Tools/tsan/suppressions_free_threading.txt +++ b/Tools/tsan/suppressions_free_threading.txt @@ -14,7 +14,6 @@ race:set_allocator_unlocked race:_add_to_weak_set race:_in_weak_set race:_mi_heap_delayed_free_partial -race:_PyEval_EvalFrameDefault race:_PyFunction_SetVersion race:_PyImport_AcquireLock race:_PyImport_ReleaseLock From f0e36131d4dc326ba7d695e962aec63d6b94c65c Mon Sep 17 00:00:00 2001 From: Ken Jin <28750310+Fidget-Spinner@users.noreply.github.com> Date: Sun, 28 Apr 2024 00:23:26 +0800 Subject: [PATCH 2/4] Re-enable supression --- Tools/tsan/suppressions_free_threading.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/Tools/tsan/suppressions_free_threading.txt b/Tools/tsan/suppressions_free_threading.txt index 3ba8ad6fd48cd0..4b1a2fdf6dd43a 100644 --- a/Tools/tsan/suppressions_free_threading.txt +++ b/Tools/tsan/suppressions_free_threading.txt @@ -14,6 +14,7 @@ race:set_allocator_unlocked race:_add_to_weak_set race:_in_weak_set race:_mi_heap_delayed_free_partial +race:_PyEval_EvalFrameDefault race:_PyFunction_SetVersion race:_PyImport_AcquireLock race:_PyImport_ReleaseLock From 179a69343e54deba582218cb38e922133726c51a Mon Sep 17 00:00:00 2001 From: Ken Jin <28750310+Fidget-Spinner@users.noreply.github.com> Date: Wed, 1 May 2024 03:46:55 +0800 Subject: [PATCH 3/4] formatting --- Python/bytecodes.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Python/bytecodes.c b/Python/bytecodes.c index 50a608aca927c8..18837aef74d78e 100644 --- a/Python/bytecodes.c +++ b/Python/bytecodes.c @@ -163,9 +163,9 @@ dummy_func( if ((oparg & RESUME_OPARG_LOCATION_MASK) < RESUME_AFTER_YIELD_FROM) { CHECK_EVAL_BREAKER(); } -#if ENABLE_SPECIALIZATION + #if ENABLE_SPECIALIZATION FT_ATOMIC_STORE_UINT8_RELAXED(this_instr->op.code, RESUME_CHECK); -#endif + #endif /* ENABLE_SPECIALIZATION */ } } From 0f0f2df065fdd3e8011c1d181bf566c387832211 Mon Sep 17 00:00:00 2001 From: Ken Jin <28750310+Fidget-Spinner@users.noreply.github.com> Date: Wed, 1 May 2024 05:12:20 +0800 Subject: [PATCH 4/4] regen cases --- Python/generated_cases.c.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Python/generated_cases.c.h b/Python/generated_cases.c.h index 987688776f809e..1444f5cdebba4b 100644 --- a/Python/generated_cases.c.h +++ b/Python/generated_cases.c.h @@ -4957,7 +4957,7 @@ } #if ENABLE_SPECIALIZATION FT_ATOMIC_STORE_UINT8_RELAXED(this_instr->op.code, RESUME_CHECK); - #endif + #endif /* ENABLE_SPECIALIZATION */ } DISPATCH(); }