On 2006.11.28 at 01:09:00 +0000, 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?

Вообще говоря, необязательно. Qt - это не только ценный мех. Там есть,
скажем и работа с базами данных. Но судя по тому, чтоо висит в select,
это действительно ожидание событий от X-сервера (тем более что выше по
трассе там processEvents и enterLoop (имеется в виду "войти в цикл
обработки событий)

> Все остальные треды выглядят так, с различиями вроде бы только в цифрах:
> 
> #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
> 
> То есть реально внутри треда ничего не видно. 

Ожидание на некоей condition variable. Судя по тому, что функция на
уровне 6 называется applyForWork, это свободная нить, которая ожидает от
кого-то сигнала, что пора делать какую-то работу.

Скорее всего - от первой нити, к которой должно прийти событие.
Надо бы посмотреть на каких именно дескрипторах там select ждет.
Возможно он обрабатывает не только события от X-сервера, но и от рабочих
сокетов.


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Ответить