Название: Очень странное поведение Qt Отправлено: once_again_abc от Октябрь 22, 2011, 12:34 В процессе разработки приложения (компиляция, запуски) в один "прекрасный" момент приложение виснет при очередном запуске и висит бесконечно в qeventdispatcher_win.cpp:QEventDispatcherWin32::processEvents:DispatchMessage(&msg);
Помогает _только_ перезагрузка системы (Виндовс 7) Что это может быть? Глюк винды или Qt? ??? Название: Re: Очень странное поведение Qt Отправлено: BRE от Октябрь 22, 2011, 12:54 Что это может быть? Глюк винды или Qt? ??? Если операционная система ничего не может сделать с приложением пользователя - это чей глюк? :)Название: Re: Очень странное поведение Qt Отправлено: once_again_abc от Октябрь 22, 2011, 14:02 Что это может быть? Глюк винды или Qt? ??? Если операционная система ничего не может сделать с приложением пользователя - это чей глюк? :)обычно в 99.99% глюк в приложении как вы тонко намекаете =) но в моем случае это возможно и не так. собственно поэтому я и вынес вопрос сюда. в Qt есть еще миллион + 1 глюков, я в этом уверен. и вполне возможно, что проявляется один из них. вы запускаете приложение потом закрываете его. убеждаетесь что висящих процессов и утечек памяти нет. затем повторяете цикл и так эндцать тысяч раз... и в один прекрасный момент (это может быть в тот же день, может быть через три дня (если не перезагружать систему)) приложение виснет на самом интересном месте в DispatchMessage в ядре Qt - это чей глюк? :) Название: Re: Очень странное поведение Qt Отправлено: BRE от Октябрь 22, 2011, 16:26 Я как раз говорил про ОС. Если ОС ничего не может сделать с одним из своих процессов, то это ее глюк! АднАзначнА! :)
И не важно чем это вызвано, ошибкой в приложении или в оси. Название: Re: Очень странное поведение Qt Отправлено: Igors от Октябрь 22, 2011, 17:13 Удовлетворение от выяснения "а чей же баг" мне понятно (Вындоуз способно на очень, очень многое), но оно мало что меняет, спросят-то с программиста. Поэтому для начала надо сделать static build Qt и попробовать вставить туда хоть какие-то принты в лог - ну и конечно прицепить сам лог. Дело не быстрое но другого не видно.
Название: Re: Очень странное поведение Qt Отправлено: once_again_abc от Октябрь 23, 2011, 06:27 Удовлетворение от выяснения "а чей же баг" мне понятно (Вындоуз способно на очень, очень многое), но оно мало что меняет, спросят-то с программиста. Поэтому для начала надо сделать static build Qt и попробовать вставить туда хоть какие-то принты в лог - ну и конечно прицепить сам лог. Дело не быстрое но другого не видно. а какие-нибудь идеи вообще о том что это может быть? само поведение бага очень странное - как-будто какая-то ошибка накапливается (где?) и происходит такой вот странный глюк. я внимательно проверял - приложение нормально закрывается, его процесс не остается висеть; вся память взятая для приложения всегда возвращается в систему; само приложение с памятью работает корректно (профилировщик не запускал, но манагер процессов показывает отсутсвие утечек). у Qt есть какие-то глобальные обще-системные ресурсы (счетчики какие-нибудь и т.п.)? Название: Re: Очень странное поведение Qt Отправлено: BRE от Октябрь 23, 2011, 08:37 Идеи... попробуй отключить все антивирусы и т.д., а лучше по запускать программу на чистой машине.
Если ты точно определил место остановки (DispatchMessage), то скорее всего остановка происходит в момент запроса очередного сообщения от венды. Управление уходит в ядро системы и от туда не возвращается. Диспетчер сообщений в Qt это критическая, постоянно нагруженная подсистема, к тому же без возможности ее неправильной настройки. Поэтому, если бы там была подобная ошибка, она бы проявлялась значительно чаще и не только у тебя. Внутри программы ты "сам себе" сообщения не отправляешь? Может при каких-то условиях программа начинает генерировать сообщения непрерывно и ядро Qt не успевает их обслуживать? Название: Re: Очень странное поведение Qt Отправлено: once_again_abc от Ноябрь 15, 2011, 00:14 проблема не дает спать спокойно =(
Проявляется такое "зависание" не всегда, а только тогда, когда машина отключена от локальной сети и некоторые сетевые диски остаются "висеть". Прямой связи между зависанием программы и отключением от локальной сети нет, но такое поведение появляется тогда и только тогда, когда в системе "висят" подключения. Само сообщение, на котором спотыкается DispatchMessage такое: Код: typedef struct tagMSG { Название: Re: Очень странное поведение Qt Отправлено: vinnitu от Ноябрь 15, 2011, 11:08 мне кажется дело в антивирусах и т.п. - у вас они установлены?
Название: Re: Очень странное поведение Qt Отправлено: once_again_abc от Ноябрь 15, 2011, 11:34 мне кажется дело в антивирусах и т.п. - у вас они установлены? работает TrendMicro OfficeScan. но я не вижу абсолютно никакой связи между этим глюком и наличием антивируса. Просветите? похоже, что где-то в глубинах кьюта все же порылся таки жучок. Название: Re: Очень странное поведение Qt Отправлено: vinnitu от Ноябрь 15, 2011, 17:33 мне кажется дело в антивирусах и т.п. - у вас они установлены? работает TrendMicro OfficeScan. но я не вижу абсолютно никакой связи между этим глюком и наличием антивируса. Просветите? похоже, что где-то в глубинах кьюта все же порылся таки жучок. глубины возможно в атнивирусах потому что они проверяют откуда появляются файлы... я так предполагаю... например после компиляции появляется чуть-чуть изменённая вариация файла .exe с таким же именем в том же месте. Это возможно немного "удивляет" антивирус. В общем-то говоря у меня был Comodo (есть такой), и вот подобные проблемы имели место - и никто бы ничего не подумал, т.к. никаких сообщений не было, а вот как только удалили это чудо природы - всё стало работать отлично. Так же не дружит Касперский с девелоперами... Название: Re: Очень странное поведение Qt Отправлено: Igors от Ноябрь 15, 2011, 18:13 Само сообщение, на котором спотыкается DispatchMessage такое: По крайней мере у Вас есть hwnd окна - и можно посмотреть что это за окно. его родителя, не одна утилита это делает. Qt не использует нативных контролов, откуда вообще берется нативное сообщение для комбо - неясноКод: typedef struct tagMSG { Название: Re: Очень странное поведение Qt Отправлено: BRE от Ноябрь 15, 2011, 18:31 По крайней мере у Вас есть hwnd окна - и можно посмотреть что это за окно. Ну так это скорее всего hwnd top-окна Qt приложения и есть. |