diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index fd5b36e9..bf9c5741 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -536,7 +536,7 @@ jobs: clang_TSAN: runs-on: ubuntu-24.04 - container: ghcr.io/nascheme/numpy-tsan:3.14t + container: ghcr.io/nascheme/numpy-tsan:3.15t-dev steps: - uses: actions/checkout@v4 @@ -547,7 +547,6 @@ jobs: - name: run tests under pytest-run-parallel run: | - TSAN_OPTIONS="suppressions=$PWD/suppressions_free_threading.txt" \ python -m pytest --parallel-threads=4 --skip-thread-unsafe=True -sv check: diff --git a/pyproject.toml b/pyproject.toml index 447621fb..ffe9e795 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -48,3 +48,7 @@ Download = "https://github.com/python-cffi/cffi/releases" Contact = "https://groups.google.com/forum/#!forum/python-cffi" "Source Code" = "https://github.com/python-cffi/cffi" "Issue Tracker" = "https://github.com/python-cffi/cffi/issues" + +[pytest] +faulthandler_timeout = 600 +faulthandler_exit_on_timeout = true \ No newline at end of file diff --git a/suppressions_free_threading.txt b/suppressions_free_threading.txt deleted file mode 100644 index 4437b870..00000000 --- a/suppressions_free_threading.txt +++ /dev/null @@ -1,52 +0,0 @@ -# This file contains suppressions for the free-threaded build. It contains the -# suppressions for the default build and additional suppressions needed only in -# the free-threaded build. -# -# reference: https://github.com/google/sanitizers/wiki/ThreadSanitizerSuppressions - -## Free-threaded suppressions - - -# These entries are for warnings that trigger in a library function, as called -# by a CPython function. - -# These warnings trigger directly in a CPython function. - -race_top:dump_traceback -race_top:fatal_error -race_top:_PyFrame_GetCode -race_top:_PyFrame_Initialize -race_top:_PyObject_TryGetInstanceAttribute -race_top:PyUnstable_InterpreterFrame_GetLine -race_top:write_thread_id - -# gh-129068: race on shared range iterators (test_free_threading.test_zip.ZipThreading.test_threading) -race_top:rangeiter_next - -# gh-129748: test.test_free_threading.test_slots.TestSlots.test_object -race_top:mi_block_set_nextx - -# https://gist.github.com/mpage/6962e8870606cfc960e159b407a0cb40 -thread:pthread_create - -# Range iteration is not thread-safe yet (issue #129068) -race_top:rangeiter_next - -# List resizing happens through different paths ending in memcpy or memmove -# (for efficiency), which will probably need to rewritten as explicit loops -# of ptr-sized copies to be thread-safe. (Issue #129069) -race:list_ass_slice_lock_held -race:list_inplace_repeat_lock_held - -# PyObject_Realloc internally does memcpy which isn't atomic so can race -# with non-locking reads. See #132070 -race:PyObject_Realloc - -# gh-133467. Some of these could be hard to trigger. -race_top:_Py_slot_tp_getattr_hook -race_top:slot_tp_descr_get -race_top:type_set_name -race_top:set_tp_bases -race_top:type_set_bases_unlocked - -race:partial_vectorcall_fallback