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: 501Date/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-51C283E9FA93Sleep/Wake UUID: 71ABCFAE-1808-456B-BCCB-BEA64EA9B818
Crashed Thread: 0
Exception Type: EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000002, 0x0000000000000000Application Specific Information:
dyld: launch, loading dependent librariesDyld 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.dylibBinary 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/LangAnalysisModel: 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.6I 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!
-
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.dylibWhy? 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.dylibare already there. We have the following in .pro file:
CPP 11
CPLUSPLUSELEVEN.files = libs
CPLUSPLUSELEVEN.path = Contents/Resources
QMAKE_BUNDLE_DATA += CPLUSPLUSELEVEN
CONFIG += c++11But 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.