MacOS Catalina app linked with GLFW3.3 crashes in Mojave

Hi All,

I am working on upgrading to glfw3 from glfw2 to better support retina displays. On the development machine (running Catalina), this all works fine. However, if I take the Catalina compiled binary to a Mojave machine, it crashes with some symbol not found. However, the symbol is coming from the glfwInit() call. Aside from trying to do a shared lib (Which I don’t want to since that itself has other cross platform compatibility issues), has anyone ran into similar issues?

P.S. I am setting the minimum-macosx-version flag of the Clang compiler to 10.11 when building my library, glfw3 is also built from source on the Catalina machine as static libs, without Vulkan.

Here’s the stack-trace when the crash happened:


Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_CRASH (SIGABRT)
Exception Codes:       0x0000000000000000, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Termination Reason:    DYLD, [0x4] Symbol missing

Application Specific Information:
dyld2 mode

Dyld Error Message:
  Symbol not found: _objc_alloc_init
  Referenced from: /Volumes/VOLUME/*/KinTek_Explorer.app/Contents/MacOS/KinTek_Explorer_Py
  Expected in: /usr/lib/libobjc.A.dylib

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   dyld                          	0x00000001152fb456 __abort_with_payload + 10
1   dyld                          	0x00000001152fac4d abort_with_payload_wrapper_internal + 82
2   dyld                          	0x00000001152fac7f abort_with_payload + 9
3   dyld                          	0x00000001152b8aea dyld::halt(char const*) + 343
4   dyld                          	0x00000001152b8c17 dyld::fastBindLazySymbol(ImageLoader**, unsigned long) + 170
5   libdyld.dylib                 	0x00007fff79e4ac1a dyld_stub_binder + 282
6   ???                           	0x000000010f0cd000 0 + 4547465216
7   KinTek_Explorer_Py            	0x000000010ec1ace6 glfwInit + 86
8   KinTek_Explorer_Py            	0x000000010e906cd7 zglfwInitialize() + 39
9   KinTek_Explorer_Py            	0x000000010e978c4b main + 539
10  libdyld.dylib                 	0x00007fff79e5eed9 start + 1

Thread 0 crashed with X86 Thread State (64-bit):
  rax: 0x0000000002000209  rbx: 0x0000000000000000  rcx: 0x00007ffee1402b88  rdx: 0x00007ffee1402ff0
  rdi: 0x0000000000000006  rsi: 0x0000000000000004  rbp: 0x00007ffee1402bd0  rsp: 0x00007ffee1402b88
   r8: 0x00007ffee1402bf0   r9: 0x0000000000000000  r10: 0x00000000000000e5  r11: 0x0000000000000246
  r12: 0x00000000000000e5  r13: 0x00007ffee1402ff0  r14: 0x0000000000000004  r15: 0x0000000000000006
  rip: 0x00000001152fb456  rfl: 0x0000000000000246  cr2: 0x0000000115369f40

Here’s the otool -L output on the app (aka ldd)

KinTek_Explorer_Py:
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1281.100.1)
	/System/Library/Frameworks/LDAP.framework/Versions/A/LDAP (compatibility version 1.0.0, current version 2.4.0)
	/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.11)
	/System/Library/Frameworks/AGL.framework/Versions/A/AGL (compatibility version 1.0.0, current version 1.0.0)
	/System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL (compatibility version 1.0.0, current version 1.0.0)
	/System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 23.0.0)
	/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0)
	/System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 1675.129.0)
	/System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio (compatibility version 1.0.0, current version 1.0.0)
	/System/Library/Frameworks/CoreVideo.framework/Versions/A/CoreVideo (compatibility version 1.2.0, current version 1.5.0)
	/System/Library/Frameworks/AudioUnit.framework/Versions/A/AudioUnit (compatibility version 1.0.0, current version 1.0.0)
	/System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox (compatibility version 1.0.0, current version 1000.0.0)
	/System/Library/Frameworks/CoreMIDI.framework/Versions/A/CoreMIDI (compatibility version 1.0.0, current version 69.0.0)
	/usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 902.1.0)
	/System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 1894.40.150)
	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 52.0.0)
	/System/Library/Frameworks/CoreGraphics.framework/Versions/A/CoreGraphics (compatibility version 64.0.0, current version 1355.13.0)
	/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (compatibility version 1.0.0, current version 1069.22.0)
	/System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 1675.129.0)
1 Like

I found the underlying issue. It was a snafu on my part. I built glfw3 without specifying minimum-macosx-version so it defaulted to my platform, and glfw3 was linked against my application, so it didnt’ matter how i changed the deployment target in xcode, the glfw3 library was still only for macos 10.15. After setting the deployment target while building glfw3, the problem is now gone.

2 Likes

Can you please elaborate how to specifying minimum-macosx-version in glfw3?

Logic pro x version 10.5.1 is able to run on Catalina but the latest version of Logic pro i.e. 10.6.0 doesn’t run. I encountered the same error message as you got in your above given problem. It says
Application Specific Information:

dyld2 mode

Dublin | 6b34edbe1e2428234532a9a90f0dda622834cd344de3e01f645f6cf5be04bce1 | 6929e9fa277a970fca0074748e47266d4dfd6072 | 2020-12-07_19:05:26

abort() called

application requires at least OS X version 10.15.7 (10.15.7), but is being run on 10.15.6 ( 10.15.6/19G2005), and so is exiting.

I am attaching the full ERROR Report. Please tell me how the app is made to run only in Specific Mac OS versoion and How can it be changed. I also don’t know how OPENGL i.e. glfw3 is implemented in mac. I thought mac to use some different graphic language.

We can’t help you with reverse engineering proprietary software.

Also LOGIC PRO X doesn’t use GLFW.

We cannot help - please stop using this forum reverse engineering proprietary software and for issues unrelated to GLFW.

Ok sorry sir. I won’t trouble you now.

Also the error had occured by just using logic pro x in older mac os Catalina version which has nothing to do with reverse engineering.

It is a common error on older mac os versions. If anyone try to use latest softwares meant for M1 chip only and try to run on older macs with intel chip, it shows an **error message with BAD CPU TYPE and Dyld2 mode error. ** I had just copy pasted the report on google to find out what is it about and the first google search result was this page. So i had asked my query on this page!

I repeat, it is just a normal error if you operate newer mac os apps on older macs. There is nothing illegal as it is not related to reverse engineering. If you own a old mac then you can try it yourself.

I am an law abiding citizen in my country and i have good profile as a hardware repair person. I just wanted to learn more about softwares so i asked you. I don’t have any other motive and i simply asked you to teach me how OPENGL works. I hope you co-operate.