OSX10.9应用程序崩溃:未找到符号:___ strlcat_chk

时间:2014-04-30 15:21:06

标签: python xcode macos pyobjc psutil

我的应用程序与我的MacBook(Mavericks)完美配合。

使用虚拟机(OSX Lion)尝试后,它会使用此Traceback崩溃:


Mac-OS-X-Lion AppleFileServer[219]: _Assert: /SourceCache/afpserver/afpserver-585.2/afpserver/AFPRequest.cpp, 1502 (-5000)
 --- last message repeated 2 times --- 
Mac-OS-X-Lion [0x0-0x22022].Affinitic.SafeDrive[304]: Traceback (most recent call last):
Mac-OS-X-Lion [0x0-0x22022].Affinitic.SafeDrive[304]:   File "main.py", line 13, in <module>
Mac-OS-X-Lion [0x0-0x22022].Affinitic.SafeDrive[304]:     import SafeDriveController
Mac-OS-X-Lion [0x0-0x22022].Affinitic.SafeDrive[304]:   File "/Users/user/Public/Drop Box/SafeDrive.app/Contents/Resources/SafeDriveController.py", line 17, in <module>
Mac-OS-X-Lion [0x0-0x22022].Affinitic.SafeDrive[304]:     from safedrive.sftp import sftp_server
Mac-OS-X-Lion [0x0-0x22022].Affinitic.SafeDrive[304]:   File "/Users/user/Public/Drop Box/SafeDrive.app/Contents/Resources/safedrive/sftp/sftp_server.py", line 14, in <module>
Mac-OS-X-Lion [0x0-0x22022].Affinitic.SafeDrive[304]:     from safedrive.sftp.gpg_crypter import GpgCrypter
Mac-OS-X-Lion [0x0-0x22022].Affinitic.SafeDrive[304]:   File "/Users/user/Public/Drop Box/SafeDrive.app/Contents/Resources/safedrive/sftp/gpg_crypter.py", line 3, in <module>
Mac-OS-X-Lion [0x0-0x22022].Affinitic.SafeDrive[304]:     import gnupg
Mac-OS-X-Lion [0x0-0x22022].Affinitic.SafeDrive[304]:   File "/Users/user/Public/Drop Box/SafeDrive.app/Contents/Resources/gnupg/__init__.py", line 23, in <module>
Mac-OS-X-Lion [0x0-0x22022].Affinitic.SafeDrive[304]:     from . import gnupg
Mac-OS-X-Lion [0x0-0x22022].Affinitic.SafeDrive[304]:   File "/Users/user/Public/Drop Box/SafeDrive.app/Contents/Resources/gnupg/gnupg.py", line 46, in <module>
Mac-OS-X-Lion [0x0-0x22022].Affinitic.SafeDrive[304]:     from .         import _parsers
Mac-OS-X-Lion [0x0-0x22022].Affinitic.SafeDrive[304]:   File "/Users/user/Public/Drop Box/SafeDrive.app/Contents/Resources/gnupg/_parsers.py", line 34, in <module>
Mac-OS-X-Lion [0x0-0x22022].Affinitic.SafeDrive[304]:     from .      import _util
Mac-OS-X-Lion [0x0-0x22022].Affinitic.SafeDrive[304]:   File "/Users/user/Public/Drop Box/SafeDrive.app/Contents/Resources/gnupg/_util.py", line 32, in <module>
Mac-OS-X-Lion [0x0-0x22022].Affinitic.SafeDrive[304]:     import psutil
Mac-OS-X-Lion [0x0-0x22022].Affinitic.SafeDrive[304]:   File "/Users/user/Public/Drop Box/SafeDrive.app/Contents/Resources/psutil/__init__.py", line 148, in <module>
Mac-OS-X-Lion [0x0-0x22022].Affinitic.SafeDrive[304]:     import psutil._psosx as _psplatform
Mac-OS-X-Lion [0x0-0x22022].Affinitic.SafeDrive[304]:   File "/Users/user/Public/Drop Box/SafeDrive.app/Contents/Resources/psutil/_psosx.py", line 17, in <module>
Mac-OS-X-Lion [0x0-0x22022].Affinitic.SafeDrive[304]:     import _psutil_osx as cext
Mac-OS-X-Lion [0x0-0x22022].Affinitic.SafeDrive[304]: ImportError: dlopen(/Users/user/Public/Drop Box/SafeDrive.app/Contents/Resources/_psutil_osx.so, 2): Symbol not found: ___strlcat_chk
Mac-OS-X-Lion [0x0-0x22022].Affinitic.SafeDrive[304]:   Referenced from: /Users/user/Public/Drop Box/SafeDrive.app/Contents/Resources/_psutil_osx.so
Mac-OS-X-Lion [0x0-0x22022].Affinitic.SafeDrive[304]:   Expected in: /usr/lib/libSystem.B.dylib
Mac-OS-X-Lion [0x0-0x22022].Affinitic.SafeDrive[304]:  in /Users/user/Public/Drop Box/SafeDrive.app/Contents/Resources/_psutil_osx.so
Mac-OS-X-Lion SafeDrive[304]: *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '/Users/FrancoisB/EFounders/efounders.safedrive/SafeDrive/main.m:79 main() PyRun_SimpleFile failed with file '/Users/user/Public/Drop Box/SafeDrive.app/Contents/Resources/main.py'.  See console for errors.'
    *** First throw call stack:
    (   
        0   CoreFoundation                      0x00007fff8ea72fc6 __exceptionPreprocess + 198 
        1   libobjc.A.dylib                     0x00007fff91d28d5e objc_exception_throw + 43
        2   CoreFoundation                      0x00007fff8ea72dfa +[NSException raise:format:arguments:] + 106 
        3   CoreFoundation                      0x00007fff8ea72d84 +[NSException raise:format:] + 116 
        4   SafeDrive                           0x000000010000164e main + 1486
        5   SafeDrive                           0x0000000100001074 start + 52
    )   
Mac-OS-X-Lion [0x0-0x22022].Affinitic.SafeDrive[304]: terminate called throwing an exception
Mac-OS-X-Lion ReportCrash[306]: Attempting to read data: Called memoryAtAddress: 0x1042b650d, which is in an unmappable portion of [0x0 -> 0xffffffffffffffff] in PID# 304.

你有想法解决这个错误吗?

1 个答案:

答案 0 :(得分:3)

您的答案就在转储中: _psutil_osx.so(来自/ Users / user / Public / Drop Box / SafeDrive.app / Contents / Resources /)

在运行时使用dlopen()缺少它试图从libSystem.B导入的符号strlcat_chk。 _Chk变体是strlcat(字符串连接函数)的更安全版本,它检查其参数是否存在缓冲区溢出。使用特定版本的XCode构建的应用程序以后将默认使用此功能,而不是strlcat。它是小牛队中LibC的一部分,我相信它是版本997.

如果您拥有该共享对象的来源,请将_chk更改为非检查符号版本(即strlcat),并且应该修复它。否则,您可以尝试修补二进制的字符串表(假设它没有违反代码签名,如果有的话)。您可以使用-mmin-osx-version 10.7(甚至10.6)重新编译,这可能会解决问题。