]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
GH-112536: Add more TSan tests (#116911)
authorAntoine Pitrou <antoine@python.org>
Sun, 17 Mar 2024 08:47:14 +0000 (09:47 +0100)
committerGitHub <noreply@github.com>
Sun, 17 Mar 2024 08:47:14 +0000 (09:47 +0100)
These may all exercise some non-trivial aspects of thread synchronization.

Lib/test/libregrtest/tsan.py
Modules/_testinternalcapi.c

index c5aed436b829d134d1d6901ef8355d02f1d06562..dd18ae2584f5d8a741a303c217d229810f911067 100644 (file)
@@ -2,6 +2,9 @@
 # chosen because they use threads and run in a reasonable amount of time.
 
 TSAN_TESTS = [
+    # TODO: enable more of test_capi once bugs are fixed (GH-116908, GH-116909).
+    'test_capi.test_mem',
+    'test_capi.test_pyatomic',
     'test_code',
     'test_enum',
     'test_functools',
@@ -11,6 +14,9 @@ TSAN_TESTS = [
     'test_io',
     'test_logging',
     'test_queue',
+    'test_signal',
+    'test_socket',
+    'test_sqlite3',
     'test_ssl',
     'test_syslog',
     'test_thread',
index b3076a8f548b6217b017c8eda76c72cdf04032a6..1c10dd02138f3a4606731f55ed29567f14787ce4 100644 (file)
@@ -1287,8 +1287,8 @@ check_pyobject_forbidden_bytes_is_freed(PyObject *self,
 static PyObject *
 check_pyobject_freed_is_freed(PyObject *self, PyObject *Py_UNUSED(args))
 {
-    /* This test would fail if run with the address sanitizer */
-#ifdef _Py_ADDRESS_SANITIZER
+    /* ASan or TSan would report an use-after-free error */
+#if defined(_Py_ADDRESS_SANITIZER) || defined(_Py_THREAD_SANITIZER)
     Py_RETURN_NONE;
 #else
     PyObject *op = PyObject_CallNoArgs((PyObject *)&PyBaseObject_Type);