Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: west от Февраль 09, 2008, 12:33



Название: QThread object destroyed while thread is still running
Отправлено: west от Февраль 09, 2008, 12:33
Смысл сообщения понятен, причина - тож. Неясно как найти место, потоков в приложении пускается очень много и разных. А бяка эта лезит нестабильно, под валгридом или gdb ее вообще не видно. Как бы ее поискать поэффективнее?


Название: Re: QThread object destroyed while thread is still running
Отправлено: pastor от Февраль 09, 2008, 22:20
Найти место в Qt (~QThread() ) где выводиться это сообщение и поставить точку останова. Запустить прогу, точка сработает и далее посмотреть стек вызовов, при каких обстоятельствах это возникает. Этот как вариант :) Далее сделать корректное завершение потока перед его удалением.


Название: Re: QThread object destroyed while thread is still running
Отправлено: west от Февраль 11, 2008, 12:02
Цитировать
и поставить точку останова
Цитировать
А бяка эта лезит нестабильно, под валгридом или gdb ее вообще не видно
- если в дебагере пускаться, то подобной проблемы не вознкает.  Во время работы приложения на стандартный вывод переодически выскакивает, причем повторяется от случая к случаю.


Название: Re: QThread object destroyed while thread is still running
Отправлено: pastor от Февраль 11, 2008, 13:53
В таком случае нужно просто корректно завершить поток. В деструкторе своего класса потока дописать примерно такй код:

Код:
...

if (!isRunning())
    return;

    //завершение потока   

    wait();

....


Название: Re: QThread object destroyed while thread is still running
Отправлено: west от Февраль 14, 2008, 09:11
Да это все понятно, и даже уже написанно.


Название: Re: QThread object destroyed while thread is still running
Отправлено: skydion от Март 12, 2010, 11:13
И как побороли эту фигню? У меня приблизительно тоже самое  ???

Завершаю поток при выходе из программы, а потом сама програма висит,
не завершается, хотя по отладочным сообщениям поток завершился...


Название: Re: QThread object destroyed while thread is still running
Отправлено: pastor от Март 12, 2010, 14:39
Покажи код потока и как ты его завершаешь


Название: Re: QThread object destroyed while thread is still running
Отправлено: skydion от Март 12, 2010, 16:25
Спасибо за отзыв, проблемку решил.
Неправильно убивал поток...