OSX — сбой приложения Qt при получении системного события QEvent :: FileOpen

я использую PLIST файл, чтобы мое приложение Qt могло открывать файлы непосредственно из искателя. К сожалению, иногда и в некоторых системах (описанных ниже) происходит сбой / зависание приложения.

Эта проблема возникает только на некоторых клиентских компьютерах и только когда я компилирую приложение на нашем рабочем компьютере с 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 также завершилась сбоем, независимо от того, обрабатывается событие или нет. Также аварийный вызов callstack не показывает ничего полезного (смотрите ниже).

Файл моего приложения 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>@ICON@</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 CrashPad:

Причина сбоя: 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

Полный вызов опубликовано в pastebin.

Спасибо за любой совет
Ludek

1

Решение

Мы решили переустановить две наши сборочные машины, одну на Mac OSX 10.6.8 и одну на OSX 10.7.5.

Мы установили абсолютно одинаковое программное обеспечение на обеих машинах с единственным отличием в Xcode. 10.6.8 это была последняя версия 3.2.6, а 10.7.5 — 4.6.3.

Когда мы создавали наше приложение на обеих машинах, версия, созданная в версии 10.7, прекрасно работала без сбоев. Приложение построено на 10.6. вылетает снова. Так что из всего, что мы попробовали (мы потратили около 30 часов на эту ошибку), я почти уверен, что проблема в компиляторе Xcode.

Если у кого-то есть подобная проблема, самый простой и менее трудоемкий способ ее решения — обновить свою сборочную машину до более новой версии.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]