Russian Qt Forum
Ноябрь 24, 2024, 11:53
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
Спонтанное закрытие GUI-приложения
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Спонтанное закрытие GUI-приложения (Прочитано 6516 раз)
astramax57
Гость
Спонтанное закрытие GUI-приложения
«
:
Декабрь 10, 2012, 17:12 »
Доброго всем!
Пришла беда откуда не ждали )
Итак, есть GUI-приложение, qt-4.7.1, статическая линковка, VS 2008. Главное окно - наследник от QMainWindow.
Приложение запускается на 12 серверах с WS2008 R2 и ровно через 3 суток корректно закрывается, причем
одновременно на всех серверах. В логах ничего странного, в журналах ОС тоже.
Провожу эксперимент. Запускаю приложение под отладкой, ставлю бряк на входе closeEvent. Проходит 3 суток - ничего. Проходит еще 14 часов - и бряк сработал.
Ниже привожу callStack. На первый взгляд смущает название функции sendSpontaneousEvent ). Погуглил - пишут что-от про флаг WA_QuitOnClose, но он определяет завершать работу приложения после закрытия окна или нет, а окно явно никто не закрывал.
Сейчас прога под отладкой висит. Думаю, что делать. Может кто сталкивался с таким поведением?
зы Сейчас перешел на 12 студию и кьют 4,8,4, но проблема все-равно актуальна именно для старых версий. Так что советы вроде "а не попробовать ли более новую версию" не совсем уместны. Может и поможет, но надо разобраться с непонятным поведением )
Заранее спасибо.
Итак, callStack
manager.exe!manager::closeEvent(QCloseEvent * e=0x0000000000229560) Line 2643 C++
manager.exe!QWidget::event(QEvent * event=0x0000000000229560) Line 8359 C++
manager.exe!QMainWindow::event(QEvent * event=0x0000000000229560) Line 1479 C++
> manager.exe!QApplicationPrivate::notify_helper(QObject * receiver=0x0000000001c77640, QEvent * e=0x0000000000229560) Line 4445 + 0x15 bytes C++
manager.exe!QApplication::notify(QObject * receiver=0x0000000001c77640, QEvent * e=0x0000000000229560) Line 4410 + 0x1d bytes C++
manager.exe!QCoreApplication::notifyInternal(QObject * receiver=0x0000000001c77640, QEvent * event=0x0000000000229560) Line 732 + 0x26 bytes C++
manager.exe!QCoreApplication::
sendSpontaneousEvent
(QObject * receiver=0x0000000001c77640, QEvent * event=0x0000000000229560) Line 218 + 0x4c bytes C++
manager.exe!QWidgetPrivate::close_helper(QWidgetPrivate::CloseMode mode=CloseWithSpontaneousEvent) Line 7765 C++
manager.exe!QETWidget::translateCloseEvent(const tagMSG & __formal={...}) Line 3860 C++
manager.exe!QtWndProc(HWND__ * hwnd=0x0000000000010648, unsigned int message=0x00000010, unsigned __int64 wParam=0x0000000000000000, __int64 lParam=0x0000000000000000) Line 2154 C++
user32.dll!00000000776a9bd1()
[Frames below may be incorrect and/or missing, no symbols loaded for user32.dll]
user32.dll!00000000776a72cb()
user32.dll!00000000776a6829()
ntdll.dll!0000000077901225()
user32.dll!00000000776a685a()
user32.dll!00000000776a68a2()
user32.dll!00000000776a760e()
uxtheme.dll!000007fefbe0795a()
uxtheme.dll!000007fefbe2637a()
uxtheme.dll!000007fefbe0168e()
uxtheme.dll!000007fefbe01445()
user32.dll!00000000776a89d3()
manager.exe!QWinInputContext::DefWindowProcW(HWND__ * hwnd=0x0000000000010648, unsigned int msg=0x00000112, unsigned __int64 wParam=0x000000000000f060, __int64 lParam=0x0000000000000555) Line 365 + 0x19 bytes C++
manager.exe!QtWndProc(HWND__ * hwnd=0x0000000000010648, unsigned int message=0x00000112, unsigned __int64 wParam=0x000000000000f060, __int64 lParam=0x0000000000000555) Line 2636 + 0x2b bytes C++
user32.dll!00000000776a8971()
user32.dll!00000000776a72cb()
user32.dll!00000000776a6829()
ntdll.dll!0000000077901225()
user32.dll!00000000776a685a()
user32.dll!00000000776a68a2()
user32.dll!00000000776a760e()
uxtheme.dll!000007fefbe0795a()
uxtheme.dll!000007fefbe26425()
uxtheme.dll!000007fefbe0168e()
uxtheme.dll!000007fefbe01445()
user32.dll!00000000776a89d3()
manager.exe!QWinInputContext::DefWindowProcW(HWND__ * hwnd=0x0000000000010648, unsigned int msg=0x000000a1, unsigned __int64 wParam=0x0000000000000014, __int64 lParam=0x0000000000000555) Line 365 + 0x19 bytes C++
manager.exe!QtWndProc(HWND__ * hwnd=0x0000000000010648, unsigned int message=0x000000a1, unsigned __int64 wParam=0x0000000000000014, __int64 lParam=0x0000000000000555) Line 2636 + 0x2b bytes C++
user32.dll!00000000776a9bd1()
user32.dll!00000000776a98da()
manager.exe!QEventDispatcherWin32::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> * flags=0x000000000022f660) Line 807 C++
manager.exe!QGuiEventDispatcherWin32::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> * flags=0x000000000022f6ac) Line 1170 + 0x26 bytes C++
manager.exe!QEventLoop::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> * flags=0x000000000022f718) Line 150 C++
manager.exe!QEventLoop::exec(QFlags<enum QEventLoop::ProcessEventsFlag> * flags=0x000000000022f7a0) Line 201 + 0x53 bytes C++
manager.exe!QCoreApplication::exec() Line 1009 + 0x23 bytes C++
manager.exe!QApplication::exec() Line 3720 C++
manager.exe!main(int argc=0x00000001, char * * argv=0x0000000001c63fb0) Line 129 + 0x5 bytes C++
manager.exe!WinMain(HINSTANCE__ * instance=0x000000013f610000, HINSTANCE__ * prevInstance=0x0000000000000000, char * __formal=0x0000000000265520, int cmdShow=0x00000001) Line 131 + 0x16 bytes C++
manager.exe!__tmainCRTStartup() Line 263 + 0x42 bytes C
manager.exe!WinMainCRTStartup() Line 182 C
kernel32.dll!00000000777a652d()
ntdll.dll!00000000778dc521()
Записан
Alex Custov
Джедай : наставник для всех
Offline
Сообщений: 2063
Re: Спонтанное закрытие GUI-приложения
«
Ответ #1 :
Декабрь 10, 2012, 19:00 »
прога получает close для основного окна. Возможно, это делает система по каким-то признакам для долго работающих приложений, раз вылетают сразу все проги на разных машинах, и событие имеет статус spontaneous.
Записан
astramax57
Гость
Re: Спонтанное закрытие GUI-приложения
«
Ответ #2 :
Декабрь 11, 2012, 07:46 »
Согласен.
Вот это - QtWndProc(HWND__ * hwnd=0x0000000000010648, unsigned int message=0x00000010, unsigned __int64 wParam=0x0000000000000000, __int64 lParam=0x0000000000000000) не что иное как WM_CLOSE.
Т.е. система явно закрывает приложение.
В чем причина? Приложение работает и с сетью, и с файлами, и память выделяет. То есть для системы оно явно не выглядит "спящим".
Записан
Serr500
Гость
Re: Спонтанное закрытие GUI-приложения
«
Ответ #3 :
Декабрь 11, 2012, 08:27 »
Возможно, приложение запускается планировщиком и в свойствах задания стоит максимальное время выполнения.
Записан
astramax57
Гость
Re: Спонтанное закрытие GUI-приложения
«
Ответ #4 :
Декабрь 11, 2012, 08:35 »
Да, на серверах (которых 12 штук ) оно запускается через планировщик, с другой машины! Очень похоже, что копать нужно именно в эту сторону. Спасибо.
Однако на моей машине под отладкой (соответственно без планировщика) возникла описанная выше ситуация.
«
Последнее редактирование: Декабрь 11, 2012, 08:41 от astramax57
»
Записан
Fregloin
Супер
Offline
Сообщений: 1025
Re: Спонтанное закрытие GUI-приложения
«
Ответ #5 :
Декабрь 11, 2012, 11:00 »
Может ОС думает что приложение зависло (мало ли по каким причинам) и шлет ему сигнал о закрытии главного окна - это как вариант.
Записан
astramax57
Гость
Re: Спонтанное закрытие GUI-приложения
«
Ответ #6 :
Декабрь 14, 2012, 09:46 »
Попробую с Qt 4.8.4 и под 11 студией
Записан
astramax57
Гость
Re: Спонтанное закрытие GUI-приложения
«
Ответ #7 :
Декабрь 20, 2012, 07:52 »
Итак, Qt 4.8.4 и 11 студия. Почти 6 суток, полет нормальный. Жду дальше.
Записан
astramax57
Гость
Re: Спонтанное закрытие GUI-приложения
«
Ответ #8 :
Декабрь 27, 2012, 14:48 »
Программа проработала почти 13 суток, дальше ждать не хочу.
Думаю проблема решена. Только вот не понятно, в чем именно была причина.
Записан
Alex Custov
Джедай : наставник для всех
Offline
Сообщений: 2063
Re: Спонтанное закрытие GUI-приложения
«
Ответ #9 :
Декабрь 27, 2012, 23:07 »
Цитата: astramax57 от Декабрь 27, 2012, 14:48
Программа проработала почти 13 суток, дальше ждать не хочу.
Думаю проблема решена. Только вот не понятно, в чем именно была причина.
а попробуй 4.7.1 с mingw
Записан
astramax57
Гость
Re: Спонтанное закрытие GUI-приложения
«
Ответ #10 :
Декабрь 29, 2012, 11:02 »
Цитата: Alex Custov от Декабрь 27, 2012, 23:07
а попробуй 4.7.1 с mingw
спасибо за предложение, но я не использую mingw
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...