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 <rep...@bugs.python.org>
<http://bugs.python.org/issue17833>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to