繁体   English   中英

OSX-收到系统事件QEvent :: FileOpen时Qt应用程序崩溃

[英]OSX - Qt application crashed when receiving system event QEvent::FileOpen

我正在使用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捕获的Callstack:

崩溃原因: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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM