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

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: [1]
1  Qt / Общие вопросы / Re: Диалог открытия файлов порождает ошибку : Июнь 17, 2014, 10:30
На это не похоже?
http://www.prog.org.ru/topic_27069_0.html
похоже. только по вине другой dll. но делать-то чего?

я бы заменил строчку с вызовом диалога на результат его выполнения, чтобы проверить, что это именно он, а не открываемый файл
Я так давно и сделал, потому и говорю, что вся соль проявляется, только если вызвать диалог, а если не вызывать, то и проблемы не будет.
2  Qt / Общие вопросы / Re: Диалог открытия файлов порождает ошибку : Июнь 16, 2014, 17:05
а почему остальной код не попадает на распил? я же говорю, можно часами гонять программу в интенсивном режиме без этого диалога открытия файлов, и ничего не упадет. А можно попробовать обратный сценарий: запустить приложение, вызвать в нем диалог открытия файлов, закрыть, и потом вообще ничего не делать (а таймеров там никаких нет), можно даже свернуть приложение.  В результате оно все равно через пару минут упадет.
3  Qt / Общие вопросы / Диалог открытия файлов порождает ошибку : Июнь 16, 2014, 14:38
Ситуация, которую уже давно не могу решить. Есть приложение, написанное на Qt4, немало строчек кода.
Пользователь может часами работать с приложением без его падения, только если не вызывает диалог открытия файлов QFileDialog::getOpenFileName. Как только вызвал - приложение падает примерно через минуту, может и чуть дольше. Бывает, это воспроизводится часто, бывает, и не очень. Поменял строку
кода в произвольном месте и перекомпилировал - может измениться частота возникновения этой ошибки. У нас в команде, которая пишет это приложение, только у одного человека на компьютере это воспроизводится. Debug ничего не дает, поскольку в call-stack'е только вызовы системных DLL, то есть ошибка возникает не в коде, написанном нами.
Характерны 3 вещи:
1) среди выполняющихся потоков присутствует поток RPC Callback Thread, который создается при вызове диалога открытия файлов, но падение происходит не в нем.
2) до падения несколько раз в окне вывода (Output в Visual Studio) выводится сообщение
First-chance exception at 0x7684c41f in scanner.exe: 0x000006BA: Сервер RPC недоступен.
или
First-chance exception at 0x7684c41f in scanner.exe: 0x800401FD: Объект не подключен к серверу.
или
First-chance exception at 0x7684c41f in scanner.exe: 0x80010108: Вызванный объект был отключен от клиентов.
3) При падении в окне пишется пишется следующее:
First-chance exception at 0x7684c41f in scanner.exe: 0x80010108: Вызванный объект был отключен от клиентов.
First-chance exception at 0x74bcc99e in scanner.exe: 0xC0000005: Access violation reading location 0xfeeefeee.
First-chance exception at 0x7684c41f in scanner.exe: 0x80010108: Вызванный объект был отключен от клиентов.
Unhandled exception at 0x74bcc99e in scanner.exe: 0xC0000005: Access violation reading location 0xfeeefeee.

То, что возникает не всегда, похоже на порчу памяти, но тогда совсем не понятно: если память портится где-то в коде, написанном нами, то почему это не проявляется без диалога вызова файлов, хотя перераспределений памяти и вычислений разного характера много? Видимо, диалог открытия файлов подгружет разные специфические dll для ОС (типа dll системы контроля версий, которая подсвечивает специальными иконками статус файлов, поставленных на контроль), но почему эти DLL "живут" после закрытия этого диалога и пытаются подключаться к какому-то серверу? Как вычислить ту DLL, из-за которой падение?
4  Qt / Пользовательский интерфейс (GUI) / Re: Восстановление tabwidget'ов работает неодинаково в разных версиях Qt : Апрель 25, 2013, 18:52
Еще можно добавить. Неправильность возникает когда приложение до закрытия открыто на весь экран. Тогда после повторного открытия табы, которые были вверху центрального виджета, "жмутся" к верху, а те, что ниже - "жмутся" к низу. Если же приложение хоть на пару пикселов не дотягивало до полного экрана, то все нормально!
5  Qt / Пользовательский интерфейс (GUI) / Восстановление tabwidget'ов работает неодинаково в разных версиях Qt : Апрель 25, 2013, 18:22
Столкнулся с такой непонятной проблемой. Пытаюсь сохранять размеры и взаимное расположение окон (табов) в QMainWindow между запусками приложения. Делаю все как в официальной документации сказано, через функции restoreGeometry, restoreState и класс QSettings. При этом работает не всегда правильно! Неправильность заключается в том, что общий размер окна приложения остается таким же, а вот размеры подокон (табов) куда-то сдвигаются по непонятным законам. Все правильно только в версии 4.6.0 (коммерческая), а стоит мне пересобрать на 4.7.4 или 4.8.3 (open source), как неправильность проявляется. Еще добавлю, что показ (и ассоциированное с ним создание) виджета в табе и скрытие его присходят по статусу кнопки, вынесенной в меню: кнопка нажата -> создается виджет и показывается в табе, кнопка отпущена -> виджет не создается и таб не показывается.
6  Qt / Общие вопросы / Re: странности с сигналами и слотами в qt dll, разное поведение в debug и release : Март 20, 2013, 18:00
Смотрите лучше что и как, ваши дебажные длл должны собираться с дебажными qt
Да!!! В этом и есть дело. в AdditionalDependencies вместо QtCored4.lib стояло QtCore4.lib. Ошибка в одной букве так печальна! Спасибо большое!
7  Qt / Общие вопросы / Re: странности с сигналами и слотами в qt dll, разное поведение в debug и release : Март 20, 2013, 17:05
Может dll релизные?
Да, не, ну как они релизные будут, все же видно в Configuration Properties для solution'а - туда-то я точно посмотрел
8  Qt / Общие вопросы / Re: странности с сигналами и слотами в qt dll, разное поведение в debug и release : Март 20, 2013, 17:04
Ахз что происходит, ситуация у вас очень мутная и непонятна необходимость разбивки проекта на dll.
Разбивка определяется тем, что это нужно в целях повторного использования в других приложениях. Но не в этом вопрос
9  Qt / Общие вопросы / странности с сигналами и слотами в qt dll, разное поведение в debug и release : Март 20, 2013, 16:39
Имеется приложение, написанное на Qt и существующее в виде единого проекта в Visual Studio. Пытаюсь разделить этот проект на несколько проектов, чтобы каждый собирался в свою dll, а главный проект в exe. И тут возникает странная дилемма. Если собираю под Release, то все работает, как надо, без нареканий. А если под Debug, то возникает куча проблем. Во-первых, перестают соединяться сигналы из exe со слотами в dll. Во-вторых, не хотят работать сигналы dll, посылаемые слотам внутри dll: програма падает и выдает Access Violation. В-третьих, куда-то пропали русские буквы и заменились на кракозябры. В-четвертых, после вызова деструктора объектов, экспортируемых из dll и содержащих сигналы и слоты, программа падает снова с Access Violation. Наверное, этот список можно продолжать и удивляться. Настройки компилятора и линкера в Visual Studio проверил, они вроде адекватные. Что вообще происходит?
Страниц: [1]

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