[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Пытаюсь гонять gdb на kmail. запутался, просьба подсобить



Mikhail Ramendik wrote:
> Всем привет!
> 
> По здешнему совету поставил kdepim-dbg. После этого поймал зависание, 
> приаттачил gdb и сдал делать bt во всех тредах.
> 
> К сожалению, не очень понятно, полностью ли он находит эти самыпе debugging 
> symbols. В бектрейсах нечто вроде такого:
> 
> thread 1:
> 
> #0  0xb7f2b410 in ?? ()
> #1  0xbfaa9508 in ?? ()
> #2  0x080dbe64 in ?? ()
> #3  0x080dbce0 in ?? ()
> #4  0xb78af751 in select () from /lib/tls/i686/cmov/libc.so.6
> #5  0xb7033b5a in QEventLoop::processEvents () from /usr/lib/libqt-mt.so.3
> #6  0xb709d448 in QEventLoop::enterLoop () from /usr/lib/libqt-mt.so.3
> (etc)
> 
> Как я понимаю, раз libqt, занчит это GUI?
> 
> Все остальные треды выглядят так, с различиями вроде бы только в цифрах:
> 
> #0  0xb7f2b410 in ?? ()
> #1  0xb3d969f8 in ?? ()
> #2  0x00000000 in ?? ()
> #3  0x00000000 in ?? ()
> #4  0xb65b940e in pthread_cond_wait@@GLIBC_2.3.2 ()
>    from /lib/tls/i686/cmov/libpthread.so.0
> #5  0xb78c1ea6 in pthread_cond_wait () from /lib/tls/i686/cmov/libc.so.6
> #6  0xb7384849 in QWaitCondition::wait () from /usr/lib/libqt-mt.so.3
> #7  0xb68e263c in KPIM::ThreadWeaver::Weaver::applyForWork ()
>    from /usr/lib/libkdepim.so.1
> #8  0xb68e1785 in KPIM::ThreadWeaver::Thread::run ()
>    from /usr/lib/libkdepim.so.1
> #9  0xb707e75a in QThreadInstance::start () from /usr/lib/libqt-mt.so.3
> #10 0xb65b6ca3 in start_thread () from /lib/tls/i686/cmov/libpthread.so.0
> 
> То есть реально внутри треда ничего не видно. 
Не совсем так. 1й тред сейчас находится внутри select (в libc). Это
кстати и может быть причиной блокировки. Смотришь что это за селект и
действительно ли это он висит.
Второй поток чего-то ждет, судя по методу, опять же смотришь в доках на
qt что такое QWaitCondition::wait(), смотришь в коде, чего именно он
ждет (возможно сообщения от 1го потока, а может чего еще, я с
библиотекой KPIM::... не знаком). Вообще QWaitCondition это ожидания
события от другого треда, Так что может висит все в как раз в селекте.
> 
> Как бы заставить gdb подхватить эту самую debug information?
Контексты 0,1,2,3,4,5 - это либси, либптред и всякие либсишные
внутренности. Они тебе скорее всего не нужны. а вообще libc6-dbg
> На всякий случай 
> вот всё что он в начале вывел при аттаче:



Reply to: