crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Ошибка при закрытии программы., Где-то порчу память.
silver47
  опции профиля:
сообщение 10.9.2011, 21:48
Сообщение #1


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 1.4.2010
Пользователь №: 1584

Спасибо сказали: 40 раз(а)




Репутация:   6  


Доброго времени суток. При закрытии программы, случается, что появляется сообщение о том, что программа выполнила недопустимую операцию и тд по списку. Научите, пожалуйста, как её отловить.

Qt 4.7.4 + QtCreator 2.3.0
Window 7
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 10.9.2011, 22:22
Сообщение #2


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Копипаст текста ошибки в студию.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
silver47
  опции профиля:
сообщение 10.9.2011, 22:35
Сообщение #3


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 1.4.2010
Пользователь №: 1584

Спасибо сказали: 40 раз(а)




Репутация:   6  


Скрин ошибки в файле 2.png
Файл 1.png содержит скрин дебагера сразу после вылета. Красным подчернул два моих метода.

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

Понимаю, что наверняка, пытаюсь уничтожить то, что уничтожено ранее, но не знаю как это найти.
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 11.9.2011, 0:01
Сообщение #4


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Я хз, но может
if (d->recursive()) { ...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 11.9.2011, 0:06
Сообщение #5


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


exception code 0xc0000005 - это попытка залезть в чужую память. Это либо выход за край динамического массива, либо попытка доступа к возвращённому в кучу блоку памяти

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

ещё вариант (для дебага актуально ) - неинициализированный указатель. он там у тебя не нулевой, а что-нибудь вроде 0xcccccccc
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
silver47
  опции профиля:
сообщение 11.9.2011, 5:23
Сообщение #6


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 1.4.2010
Пользователь №: 1584

Спасибо сказали: 40 раз(а)




Репутация:   6  


Это 100% попытка доступа к памяти, возвращенной в кучу. Но указатель d, это не моё, это QMutex. Моё подчеркнуто красным, там всего 2 файла.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
silver47
  опции профиля:
сообщение 11.9.2011, 8:19
Сообщение #7


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 1.4.2010
Пользователь №: 1584

Спасибо сказали: 40 раз(а)




Репутация:   6  


Эмм... кажется вопрос закрыт. Не совсем понимаю причем тут это.

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

P.S. посоветуйте литературу про потоки на Qt.

Сообщение отредактировал silver47 - 11.9.2011, 8:38
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 11.9.2011, 8:47
Сообщение #8


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


а программа не консольная?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
silver47
  опции профиля:
сообщение 11.9.2011, 8:52
Сообщение #9


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 1.4.2010
Пользователь №: 1584

Спасибо сказали: 40 раз(а)




Репутация:   6  


Была когда-то консольной. С ней как раз проблем не было, после того как прикрутил ГУИ c треем, вот все и началось.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 26.12.2024, 18:51