![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
qtshnik |
![]()
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 8 Регистрация: 3.12.2010 Пользователь №: 2240 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Ситуация, которую уже давно не могу решить. Есть приложение, написанное на 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, из-за которой падение? |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 16.7.2025, 11:43 |