Название: QThread + QProcess и краш программы Отправлено: XpycT от Январь 26, 2010, 04:53 Пытаюсь запустить в новом потоке батник, который в свою очередь запускает java. Проблема состоит в том, что при втором завершении дерева процессов программа вылетает в отладчик. Подскажите что не так.
serverthread.h Код serverthread.cpp Код
и вызов по кнопке старта и кила Код
Название: Re: QThread + QProcess и краш программы Отправлено: ilyagoo от Январь 26, 2010, 10:02 первое, что приходит в голову:
Код: th.run(); Код: th.start(); второе - соединяй сигналы со слотами между потоками с флагом Qt::QueuedConnection Название: Re: QThread + QProcess и краш программы Отправлено: Akaiten от Январь 26, 2010, 10:45 первое, что приходит в голову: Правильно подмечено, а то у тебя от потока только одно название, код выполняется в главном потоке.Код: th.run(); Код: th.start(); Обрати внимание, что QProcess::execute - статический метод и вместо Код в следующий раз пиши просто Код
А проблема краша мне кажется в то, что process->pid() возвращает 0, если процесс в текущий момент не выполняется, поэтому и указатель pinfo невалидный. Название: Re: QThread + QProcess и краш программы Отправлено: XpycT от Январь 26, 2010, 13:31 А проблема краша мне кажется в то, что process->pid() возвращает 0, если процесс в текущий момент не выполняется, поэтому и указатель pinfo невалидный. Спасибо за направление, все выше сказанное не помогло, а вот с pid'ом и была проблема, вернее сам process->pid() работает корректно и возвращает инфу всегда, но вот проблемный код был в Код Попросту вынес его из слота kill() в слот run() и краши пропали. Название: Re: QThread + QProcess и краш программы Отправлено: Akaiten от Январь 26, 2010, 17:07 QProcess::pid() под Windows возвращает указатель на структуру PROCESS_INFORMATION, при чём память под неё выделяется динамически... При завершении процесса память освобождается и указатель обнуляется.
Название: Re: QThread + QProcess и краш программы Отправлено: XpycT от Январь 27, 2010, 12:25 Вылезла еще одна проблема:
Скинул человеку, чтобы он проверил на Windows 7, и он говорит что при старте сервера программа крашится..получается идет создание ServerThread, в котором как раз вызывается Код и Код
Так вот как я понял тут может быть 3 причины: 1) Идет обращение к старому winAPI, которого как я понимаю в windows 7 может не быть 2) не верно на семерке обрабатывается директива #ifdef Q_WS_WIN...#endif 3) Что-то не так с созданием QProcess Может кто сталкивался? Название: Re: QThread + QProcess и краш программы Отправлено: Akaiten от Январь 27, 2010, 15:07 Уверен, что в этом дело? Может ему надо установить VS 2008 (или какая у тебя там студия) Redistributable Package?
Название: Re: QThread + QProcess и краш программы Отправлено: XpycT от Январь 27, 2010, 17:23 я open source сборку использую. и там с прогой mingw10.dll и libgcc_s_dw2-1.dll вкидывал
|