Russian Qt Forum
Ноябрь 24, 2024, 06:29 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Программа рушится при закрытии через крестик  (Прочитано 10290 раз)
Ginger_Ministrel
Гость
« : Июнь 06, 2014, 10:46 »

Подскажите, господа, какие могут быть причины того, что одна и та же программа иногда завершается крахом, а иногда нормально? Крах происходит после срабатывания всех деструкторов, вне зависимости от того, что я делал или не делал на окне. Конкретный код привести не могу, потому что его много и совершенно непонятно, что в нем приводит к такому.

UPD: дебаггер выдает вот такую ошибку:
Cannot find user-level thread for LWP: generic error

Как я понял, это что-то связанное с проблемами совместимости. Но больше ничего понять пока не вышло.
« Последнее редактирование: Июнь 09, 2014, 10:06 от Ginger_Ministrel » Записан
Swa
Самовар
**
Offline Offline

Сообщений: 170


Просмотр профиля
« Ответ #1 : Июнь 06, 2014, 10:58 »

99% что это результат обращения по нулевому указателю.
Записан
Ginger_Ministrel
Гость
« Ответ #2 : Июнь 06, 2014, 10:59 »

Возможно. Но почему оно возникает от случая к случаю, а не стабильно?
Записан
OKTA
Гость
« Ответ #3 : Июнь 06, 2014, 11:04 »

К сожалению, возможных причин уйма  В замешательстве Попробуй проанализировать через valgrind!
Записан
Figaro
Гость
« Ответ #4 : Июнь 06, 2014, 11:11 »

Операционка? Компилятор?
Записан
Ginger_Ministrel
Гость
« Ответ #5 : Июнь 06, 2014, 11:54 »

Figaro, CentOS 6.5, g++

Проблема вроде бы решилась заменой выхода через this->close() основного окна на qApp->exit( 0 ). Но остается непонятным, почему в той же программе не было такой проблемы на 16-й Федоре, а под Вендой я вообще не знал, что такая проблема существует.
Записан
Ginger_Ministrel
Гость
« Ответ #6 : Июнь 06, 2014, 14:44 »

Все-таки иногда крах продолжает случаться по непонятным причинам.
Какие базовые моменты стоит проверить?
Записан
Ginger_Ministrel
Гость
« Ответ #7 : Июнь 09, 2014, 10:04 »

Нашел момент, когда происходит крах - закрытие программы через стандартный крестик.
В принципе, можно переопределить closeEvent() у основного окна, но это костыль. Отчего такое может возникать? Что-то не чистится из памяти?
Записан
qate
Супер
******
Offline Offline

Сообщений: 1177


Просмотр профиля
« Ответ #8 : Июнь 09, 2014, 10:09 »

логгируй работу программы в stderr
Записан
Ginger_Ministrel
Гость
« Ответ #9 : Июнь 09, 2014, 10:25 »

Логирую по дефолту. В каждой функции - вход и выход, в каждом констркуторе и деструкторе сообщение об окончании работы.
Крах происходит после успешного срабатывания всех деструкторов. Буквально на самой последней строчке программы.
Записан
qate
Супер
******
Offline Offline

Сообщений: 1177


Просмотр профиля
« Ответ #10 : Июнь 09, 2014, 11:04 »

комментируй код (окна, классы) и смотри когда падает - так обычно помогает
переопределял ли чтото типа qInstallMessageHandler ?
Записан
Ginger_Ministrel
Гость
« Ответ #11 : Июнь 09, 2014, 11:22 »

Переопределял только timerEvent() у одного виджета и contextMenuEvent() у другого вложенного.
Насчет комментирования - сейчас попробую прогнать, посмотрим, что получится.
Записан
Ginger_Ministrel
Гость
« Ответ #12 : Июнь 09, 2014, 11:25 »

Есть один момент: интерфейс в основном сделан через дизайнер, то бишь, через подключение Ui.
Там есть какие-то моменты, которые могут рушить программу?

Явно что-то нехорошее происходит, связанное с closeEvent(), потому что при выходе через qApp->exit() все нормально.
Записан
qate
Супер
******
Offline Offline

Сообщений: 1177


Просмотр профиля
« Ответ #13 : Июнь 09, 2014, 12:29 »

Явно что-то нехорошее происходит, связанное с closeEvent(), потому что при выходе через qApp->exit() все нормально.

делай QApplication::exit в closeEvent
Записан
Ginger_Ministrel
Гость
« Ответ #14 : Июнь 09, 2014, 12:31 »

Я так и собираюсь делать. Но мне хочется все-таки докопаться до причины. Мало ли когда она еще вылезет, эта ошибка.
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.051 секунд. Запросов: 23.