Frage

I have an application that works perfectly with my MacBook (Mavericks).

After trying it with a virtual machine (OSX Lion), it crashes with this 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.

Do you have an idea to solve this bug ?

War es hilfreich?

Lösung

Your answer is right there in the dump: _psutil_osx.so (from /Users/user/Public/Drop Box/SafeDrive.app/Contents/Resources/)

is missing the symbol strlcat_chk which it is trying to import from libSystem.B, during runtime using dlopen(). The _Chk variant is a safer version of strlcat (a string concatenation function) which checks its arguments for buffer overflows. Apps built with a certain version of XCode and later will default to this function, rather than strlcat. It's part of LibC in Mavericks, which I believe is version 997.

If you have the source of that shared object, change the _chk to the non check symbol version (i.e. strlcat) and that should fix it. Else, you could trying patching the string table of the binary (assuming it doesn't violate the code signature, if any). You can recompile with -mmin-osx-version 10.7 (or even 10.6), which will potentially fix the problem.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top