[New-bugs-announce] [issue36184] test_gdb.test_threads() is specific to _POSIX_THREADS, fail on FreeBSD
STINNER Victor
report at bugs.python.org
Mon Mar 4 09:23:48 EST 2019
New submission from STINNER Victor <vstinner at redhat.com>:
On my FreeBSD VM, _POSIX_THREADS is not defined:
sys.thread_info: sys.thread_info(name='pthread', lock='semaphore', version=None)
test_gdb fails with:
Verify that "py-bt" indicates threads that are waiting for the GIL ... FAIL
======================================================================
FAIL: test_threads (test.test_gdb.PyBtTests)
Verify that "py-bt" indicates threads that are waiting for the GIL
----------------------------------------------------------------------
Traceback (most recent call last):
File "/usr/home/vstinner/prog/python/master/Lib/test/test_gdb.py", line 826, in test_threads
self.assertIn('Waiting for the GIL', gdb_output)
AssertionError: 'Waiting for the GIL' not found in 'Breakpoint 1 at 0x49e5d0: file Python/bltinmodule.c, line 1203.\n[New LWP 100742 of process 68315]\n[New LWP 100749 of process 68315]\n[New LWP 100751 of process 68315]\n[New LWP 100766 of process 68315]\n\nThread 1 hit Breakpoint 1, builtin_id (self=, v=42) at Python/bltinmodule.c:1203\n1203\t return PyLong_FromVoidPtr(v);\n\nThread 5 (LWP 100766 of process 68315):\nTraceback (most recent call first):\n File "<string>", line 10, in run\n File "/usr/home/vstinner/prog/python/master/Lib/threading.py", line 917, in _bootstrap_inner\n self.run()\n File "/usr/home/vstinner/prog/python/master/Lib/threading.py", line 885, in _bootstrap\n self._bootstrap_inner()\n\nThread 4 (LWP 100751 of process 68315):\nTraceback (most recent call first):\n File "<string>", line 10, in run\n File "/usr/home/vstinner/prog/python/master/Lib/threading.py", line 917, in _bootstrap_inner\n self.run()\n File "/usr/home/vstinner/prog/python/master/Lib/threading.py", line 885, in _bootstrap\n self._bootstrap_inner()\n\nThread 3 (LWP 100749 of process 68315):\nTraceback (most recent call first):\n File "<string>", line 10, in run\n File "/usr/home/vstinner/prog/python/master/Lib/threading.py", line 917, in _bootstrap_inner\n self.run()\n File "/usr/home/vstinner/prog/python/master/Lib/threading.py", line 885, in _bootstrap\n self._bootstrap_inner()\n\nThread 2 (LWP 100742 of process 68315):\nTraceback (most recent call first):\n File "<string>", line 10, in run\n File "/usr/home/vstinner/prog/python/master/Lib/threading.py", line 917, in _bootstrap_inner\n self.run()\n File "/usr/home/vstinner/prog/python/master/Lib/threading.py", line 885, in _bootstrap\n self._bootstrap_inner()\n\nThread 1 (LWP 100559 of process 68315):\nTraceback (most recent call first):\n <built-in method id of module object at remote 0x800bccde8>\n File "<string>", line 18, in <module>\n'
=> 'Waiting for the GIL' cannot be found in the output, because python-gdb.py failed to detect that a threading is waiting for the GIL.
The problem can be found in Tools/gdb/libpython.py:
def is_waiting_for_gil(self):
'''Is this frame waiting on the GIL?'''
# This assumes the _POSIX_THREADS version of Python/ceval_gil.h:
name = self._gdbframe.name()
if name:
return 'pthread_cond_timedwait' in name
pthread_cond_timedwait() is too close to POSIX threads. We can make this function more portable by checking for 'take_gil' function instead.
----------
components: Library (Lib)
messages: 337120
nosy: vstinner
priority: normal
severity: normal
status: open
title: test_gdb.test_threads() is specific to _POSIX_THREADS, fail on FreeBSD
versions: Python 3.8
_______________________________________
Python tracker <report at bugs.python.org>
<https://bugs.python.org/issue36184>
_______________________________________
More information about the New-bugs-announce
mailing list