Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Ошибка при закрытии программы.
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Общие вопросы
silver47
Доброго времени суток. При закрытии программы, случается, что появляется сообщение о том, что программа выполнила недопустимую операцию и тд по списку. Научите, пожалуйста, как её отловить.

Qt 4.7.4 + QtCreator 2.3.0
Window 7
RazrFalcon
Копипаст текста ошибки в студию.
silver47
Скрин ошибки в файле 2.png
Файл 1.png содержит скрин дебагера сразу после вылета. Красным подчернул два моих метода.

Да приложение многопоточное, но потоки к тому моменту, как происходит вылет, уже отработали, завершились и были удалены (через сигнал fihished и слот deleteLater).

Понимаю, что наверняка, пытаюсь уничтожить то, что уничтожено ранее, но не знаю как это найти.
RazrFalcon
Я хз, но может
if (d->recursive()) { ...
Алексей1153
exception code 0xc0000005 - это попытка залезть в чужую память. Это либо выход за край динамического массива, либо попытка доступа к возвращённому в кучу блоку памяти

судя по всему, объект, на который указывает (-вал) указатель d - капут

ещё вариант (для дебага актуально ) - неинициализированный указатель. он там у тебя не нулевой, а что-нибудь вроде 0xcccccccc
silver47
Это 100% попытка доступа к памяти, возвращенной в кучу. Но указатель d, это не моё, это QMutex. Моё подчеркнуто красным, там всего 2 файла.
silver47
Эмм... кажется вопрос закрыт. Не совсем понимаю причем тут это.

В общем, создавался отдельный поток и запускался на выполнение не с помощью thread->start(); а напрямую: thread->run();. Заменил второе на первое и все как рукой сняло. Уже полчаса как не могу повторить вылет.

P.S. посоветуйте литературу про потоки на Qt.
Litkevich Yuriy
а программа не консольная?
silver47
Была когда-то консольной. С ней как раз проблем не было, после того как прикрутил ГУИ c треем, вот все и началось.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2025 IPS, Inc.