Я использую файл plist, чтобы мое приложение Qt могло открывать файлы непосредственно у искателя. К сожалению, иногда и на некоторых системах (описанных ниже) приложение аварийно завершает/замораживает.OSX - приложение Qt разбилось при получении системного события QEvent :: FileOpen
Эта проблема возникает только на некоторых клиентских компьютерах и только при компиляции приложения на нашем производственном компьютере с 10.6.8 OSX. Когда я скомпилирую его на моем 10.9.1 OSX, все работает нормально.
Я пробовал несколько изменений и комментировал много кода в нашем приложении, но приложение также срабатывает, когда весь метод QApplication :: event() комментируется. Мне кажется, что это ошибка в 10.8.6 OSX/3.2.6 Xcode. К сожалению, сейчас я не могу обновить его до более новой версии из-за некоторых проблем с обратной совместимостью.
Я использую последний Qt 4.8.6 от git, и такое же поведение было на официальной версии 4.8.2.
Есть ли какое-либо известное обходное решение или какой-либо совет, как найти/исправить эту ошибку? Это очень сложно, потому что это событие не может быть протестировано из отладчика, а трассировка с QMessageBox тоже рушилась независимо от того, обрабатывается ли событие или нет. Также аварийный столбец не показывает ничего полезного (смотрите ниже).
Мой файл PLIST Приложение имеет следующий формат:
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeName</key> <string>ORM Designer project file</string>
<key>CFBundleTypeRole</key> <string>Editor</string>
<key>CFBundleTypeIconFile</key> <string>@[email protected]</string>
<key>LSHandlerRank</key> <string>Owner</string>
<key>LSIsAppleDefaultForType</key> <true/>
<key>CFBundleTypeExtensions</key>
<array>
<string>ormdesigner</string>
<string>ormdes</string>
<string>ormdesigner2</string>
<string>ormdes2</string>
</array>
</dict>
</array>
CallStack захвачен ночлежка Google:
Крушение Причина: EXC_BAD_ACCESS/0x0000000d Краш Адрес: 0x0
Thread 0 (crashed)
0 QtCore + 0x7cd6a
rbx = 0x00000000ffffffff r12 = 0x6163696c7070412f
r13 = 0x00007fff5fbfbe30 r14 = 0x00007fff5fbfbfb0
r15 = 0x0000000000007fff rip = 0x00000001054bed6a
rsp = 0x00007fff5fbfbe00 rbp = 0x00007fff5fbfbe20
Found by: given as instruction pointer in context
1 QtCore + 0x13f2cb
rip = 0x00000001055812cc rsp = 0x00007fff5fbfbe30
rbp = 0x00007fff5fbfbe70
Found by: stack scanning
2 QtGui + 0x38b4e
rip = 0x00000001057b6b4f rsp = 0x00007fff5fbfbe80
rbp = 0x00007fff5fbfc000
Found by: stack scanning
3 libobjc.A.dylib + 0x78e1
rip = 0x00007fff8cce48e2 rsp = 0x00007fff5fbfbee0
rbp = 0x00007fff5fbfc000
Found by: stack scanning
4 libobjc.A.dylib + 0x121db
rip = 0x00007fff8ccef1dc rsp = 0x00007fff5fbfbf50
rbp = 0x00007fff5fbfc000
Found by: stack scanning
5 CoreFoundation + 0x1a9eef
rip = 0x00007fff8752aef0 rsp = 0x00007fff5fbfbf68
rbp = 0x00007fff5fbfc000
Found by: stack scanning
Полная CallStack является posted to pastebin.
Спасибо за любые советы Людеком
Какая версия Qt? Отказоустойчивая обратная связь была бы полезна (попробуйте с 'export DYLD_IMAGE_SUFFIX = _debug'. Вероятно, что-то, что нужно сообщить в отладчике ошибок проекта Qt. –
Первоначально я нашел эту ошибку в 4.8.2. Я также попробовал обновить Qt до последней версии 4.8.6 от git , но без различий. –
Я забыл ответить на остальную часть вашего комментария. Предложение «export» не работает, потому что ошибка возникает только тогда, когда приложение выполняется из Finder, поэтому нет консоли для отладочного представления. И из того, что я выяснилось, что проблема решена в версии 10.7, поэтому, я полагаю, нет необходимости сообщать об этом. –