gpt4 book ai didi

c++ - OSX - Qt 应用程序在接收系统事件 QEvent::FileOpen 时崩溃

转载 作者:太空宇宙 更新时间:2023-11-04 13:57:07 25 4
gpt4 key购买 nike

我正在使用 plist 文件以允许我的 Qt 应用程序能够直接从查找器打开文件。不幸的是,有时在某些系统上(如下所述)应用程序崩溃/卡住。

此问题仅在某些客户端计算机上出现,并且仅当我在使用 10.6.8 OSX 的生产计算机上编译应用程序时才会出现。当我在我的 10.9.1 OSX 上编译它时,一切正常。

我在我们的应用程序中尝试了一些更改和注释大量代码,但是当整个 QApplication::event() 方法被注释时,应用程序也会崩溃。在我看来,这是 10.8.6 OSX/3.2.6 Xcode 中的一些错误。不幸的是,由于一些向后兼容性问题,我现在无法将它更新到更新的版本。

我正在使用来自 git 的最新 Qt 4.8.6,并且在官方 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>@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>

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

完整的调用堆栈是 posted to pastebin .

谢谢你的建议卢德克

最佳答案

我们决定重新安装两台构建机器,一台安装到 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 编译器内部。

如果有人遇到类似的问题,最简单且耗时较少的解决方法是将他的构建机器更新到较新的版本。

关于c++ - OSX - Qt 应用程序在接收系统事件 QEvent::FileOpen 时崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20955880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com