Application launches on OS X 10.8.5 but not on 10.9.2



  • I built my application with Desktop Qt 5.2.1 clang 64bit on OS X 10.8.5. I can launch the app on the machines with OS X 10.8.5 installed but failed to launch it on OS X 10.9.2. The error message is like this:

    Process: MyExe [626]
    Path: /Applications/MyApp.app/Contents/MacOS/MyExe
    Identifier: com.yummy.launcher
    Version: ???
    Code Type: X86-64 (Native)
    Parent Process: launchd [136]
    Responsible: MyExe [626]
    User ID: 501

    Date/Time: 2014-07-21 18:36:02.451 -0400
    OS Version: Mac OS X 10.9.2 (13C1021)
    Report Version: 11
    Anonymous UUID: 6C05C571-DF55-9FA8-AF94-51C283E9FA93

    Sleep/Wake UUID: 71ABCFAE-1808-456B-BCCB-BEA64EA9B818

    Crashed Thread: 0

    Exception Type: EXC_BREAKPOINT (SIGTRAP)
    Exception Codes: 0x0000000000000002, 0x0000000000000000

    Application Specific Information:
    dyld: launch, loading dependent libraries

    Dyld Error Message:
    Symbol not found: __ZSt13set_terminatePFvvE
    Referenced from: /usr/lib/libobjc.A.dylib
    Expected in: /Applications/MyApp.app/Contents/MacOS/../Resources/libs/libc++abi.dylib
    in /usr/lib/libobjc.A.dylib

    Binary Images:
    0x111d40000 - 0x111da8ff7 +libc++.1.dylib (65.1) <20E31B90-19B9-3C2A-A9EB-474E08F9FE05> /Applications/MyApp.app/Contents/Resources/libs/libc++.1.dylib
    0x111e06000 - 0x111e2bff7 +libc++abi.dylib (24.4) <E7BD9363-1D25-3551-A68A-2E2FF6ABECD7> /Applications/MyApp.app/Contents/Resources/libs/libc++abi.dylib
    0x7fff68fd6000 - 0x7fff69009817 dyld (239.4) <2B17750C-ED1B-3060-B64E-21897D08B28B> /usr/lib/dyld
    /System/Library/Frameworks/ImageIO.framework/Versions/A/Resources/libTIFF.dylib
    0x7fff8a155000 - 0x7fff8a17aff7 com.apple.ChunkingLibrary (2.0 - 155.1) <B845DC7A-D1EA-31E2-967C-D1FE0C628036> /System/Library/PrivateFrameworks/ChunkingLibrary.framework/Versions/A/ChunkingLibrary
    0x7fff8a1af000 - 0x7fff8a212ff7 com.apple.SystemConfiguration (1.13 - 1.13) <63B985ED-E7E4-3095-8D12-63C9F1DB0F3D> /System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration
    /System/Library/PrivateFrameworks/PerformanceAnalysis.framework/Versions/A/PerformanceAnalysis
    0x7fff8d4a5000 - 0x7fff8d50fff7 com.apple.framework.IOKit (2.0.1 - 907.90.2) <A779DE46-BB7E-36FD-9348-694F9B09718F> /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit
    0x7fff8d66c000 - 0x7fff8d66ffff com.apple.TCC (1.0 - 1) <32A075D9-47FD-3E71-95BC-BFB0D583F41C> /System/Library/PrivateFrameworks/GenerationalStorage.framework/Versions/A/GenerationalStorage
    0x7fff93684000 - 0x7fff93690ff7 com.apple.OpenDirectory (10.9 - 173.90.1) <E5EF8E1A-7214-36D0-AF0D-8D030DF6C2FC> /System/Library/Frameworks/OpenDirectory.framework/Versions/A/OpenDirectory
    0x7fff936bc000 - 0x7fff936ebfd2 libsystem_m.dylib (3047.16) <B7F0E2E4-2777-33FC-A787-D6430B630D54> /usr/lib/system/libsystem_m.dylib
    0x7fff9372b000 - 0x7fff9385bff7 com.apple.desktopservices (1.8.2 - 1.8.2) <76D6ED93-9D5A-3941-8B88-A1773290AE74> /System/Library/PrivateFrameworks/DesktopServicesPriv.framework/Versions/A/DesktopServicesPriv
    0x7fff9385c000 - 0x7fff9388bfff com.apple.DebugSymbols (106 - 106) <E1BDED08-523A-36F4-B2DA-9D5C712F0AC7> /System/Library/PrivateFrameworks/DebugSymbols.framework/Versions/A/DebugSymbols
    0x7fff938a4000 - 0x7fff93968ff7 com.apple.backup.framework (1.5.2 - 1.5.2) <A3C552F0-670B-388F-93FA-D917F96ACE1B> /System/Library/PrivateFrameworks/Backup.framework/Versions/A/Backup
    0x7fff93969000 - 0x7fff93978ff8 com.apple.LangAnalysis (1.7.0 - 1.7.0) <8FE131B6-1180-3892-98F5-C9C9B79072D4> /System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/LangAnalysis.framework/Versions/A/LangAnalysis

    Model: MacBookAir6,2, BootROM MBA61.0099.B00, 2 processors, Intel Core i5, 1.3 GHz, 8 GB, SMC 2.13f7
    Graphics: Intel HD Graphics 5000, Intel HD Graphics 5000, Built-In, 1024 MB
    Memory Module: BANK 0/DIMM0, 4 GB, DDR3, 1600 MHz, 0x80AD, 0x483943434E4E4E384A544D4C41522D4E544D
    Memory Module: BANK 1/DIMM0, 4 GB, DDR3, 1600 MHz, 0x80AD, 0x483943434E4E4E384A544D4C41522D4E544D
    AirPort: spairport_wireless_card_type_airport_extreme (0x14E4, 0x117), Broadcom BCM43xx 1.0 (6.30.223.154.63)
    Bluetooth: Version 4.2.3f10 13477, 3 services, 15 devices, 1 incoming serial ports
    Network Service: Wi-Fi, AirPort, en0
    Serial ATA Device: APPLE SSD SD0128F, 121.33 GB
    USB Device: Internal Memory Card Reader
    USB Device: Microsoft Basic Optical Mouse
    USB Device: BRCM20702 Hub
    USB Device: Bluetooth USB Host Controller
    Thunderbolt Bus: MacBook Air, Apple Inc., 23.6

    I checked the app bundle and /Applications/MyApp.app/Contents/MacOS/../Resources/libs/libc++abi.dylib is there. I did some search and there are many similar casees but I can't figure out why. I need some help. Thanks!


  • Lifetime Qt Champion

    Hi and welcome to devnet,

    Can you show your main.cpp content ?



  • Why is libc++abi.dylib, a system library located at /usr/lib/libc++abi.dylib, is in your Resources?

    /usr/lib/libobjc.dylib depends on libc++abi.dylib and I don't think mixing 10.8 and 10.9 libs in this way will ever give you stable results. You're lucky it does not launch...



  • @SGaist: Thank you for your msg. Actually it's a software from the third party. We are trying to make updates to the software. The third party built the update1.pkg and we built the update2.pkg. We use the same source codes. We can install and launch update1.app on Os x 10.8.5 and 10.9.4 but we can only launch update2.app on 10.8.5 and not on 10.9.4. Then we used the .app file supplied by the third party to make update3.pkg file. This time we are able to launch update3.app on both 10.8.5 and 10.9.4.
    When we use Sparkle to update current version to update1, the app updates and launches on Os x 10.8.5 and 10.9.4. However, when we update from update1 to update3, the update succeeds but the app launches only on 10.8.5 not on 10.9.4. I got the same error msg as I reported. I am not sure if this is related to SDK. I am using MacOSX10.8.sdk.



  • @sandy.martel: As I mentioned, it's a software from the third party. I need to figure out why libc++abi.dylib is in Resources.



  • Wow, so they are trying to ship their own full stack of C++ standard libraries from llvm instead of using the OS ones, libc++.1.dylib and libc++abi.dylib:

    /Applications/MyApp.app/Contents/Resources/libs/libc++.1.dylib
    /Applications/MyApp.app/Contents/Resources/libs/libc++abi.dylib

    Why? are they trying to use C++11 on an older OS version (10.6) that doesn't have those?

    I have no idea if this is possible at all in an application that uses objective-c...



  • @sandy.martel: They ship C++ source, .pro file and related frameworks. C++ standard libraries should be from OS itself. The compilation command line is:

    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -headerpad_max_install_names -F/Library/Frameworks -Wl,-syslibroot,/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk -stdlib=libc++ -mmacosx-version-min=10.7-F/Applications/QT5.2.1/5.2.1/clang_64/lib -framework Appkit -framework Foundation -F/Library/Frameworks -framework SPARKLE -framework QtWebKitWidgets -framework QtQuick -framework QtQml -framework QtNetwork -framework QtCore -framework QtGui -framework QtMultimediaWidgets -framework QtMultimedia -framework QtWidgets -framework QtOpenGL -framework QtPrintSupport -framework QtWebKit -framework QtSql -framework QtPositioning -framework QtSensors -framework QtXml -framework OpenGL -framework AGL

    When I build the project,

    MyApp.app/Contents/Resources/libs/libc++.1.dylib
    MyApp.app/Contents/Resources/libs/libc++abi.dylib
    MyApp.app/Contents/Resources/libs/libSystem.B.dylib

    are already there. We have the following in .pro file:

    CPP 11

    CPLUSPLUSELEVEN.files = libs
    CPLUSPLUSELEVEN.path = Contents/Resources
    QMAKE_BUNDLE_DATA += CPLUSPLUSELEVEN
    CONFIG += c++11

    But macosx-version-min=10.7.

    In your first email, you mentioned /usr/lib/libobjc.dylib depends on libc++abi.dylib and they are from 10.8 and 10.9 libs, respectively?



  • You can deploy applications compiled with -std=c++11 -stdlib=libc++ from 10.7 and up, no need to ship additional c++ libs. Keep the CONFIG+= c++11, get rid of the rest. Note that stock Qt is still compiled for 10.6, so linked against a different c++ lib (the gcc one), you might have to recompile Qt yourself with the c++11 config.



  • Hi Sandy, I did what you suggested and it worked out. Thanks! I also checked that the application is only linked against system libs now.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.