Dave Malcolm added the comment:
Looking at test_gdb.out, the issue is that the threads waiting for the GIL have
e.g. this at the top of their backtrace:
Thread 2 (Thread 0x3fffb14af200 (LWP 37119)):
#0 0x0000008075181ea8 in __pthread_cond_timedwait (cond=0x103ea140 <gil_cond>,
mutex=0x103ea170 <gil_mutex>, abstime=0x3fffb14abf68) at
pthread_cond_timedwait.c:167
#1 0x00000000100f59f8 in PyCOND_TIMEDWAIT (cond=0x103ea140 <gil_cond>,
mut=0x103ea170 <gil_mutex>, us=5000) at
/home/dje/src/cpython/Python/condvar.h:103
#2 0x00000000100f5ffc in take_gil (tstate=0x1043b020) at
/home/dje/src/cpython/Python/ceval_gil.h:224
i.e. the topmost frame has name "__pthread_cond_timedwait" (two leading
underscores.
However, the gdb hooks (in Tools/gdb/libpython.py) have:
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 name.startswith('pthread_cond_timedwait')
i.e. no underscores, hence that name.startswith conditional doesn't match.
----------
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue17833>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com