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: