Allegro5 al_create_display() 在 Mac OS Catalina 上崩溃
Allegro5 al_create_display() crash on Mac OS Catalina
我遇到了以下问题:
我可以使用 make 文件编译我的 allegro 应用程序而不会出错,但是当我 运行 ./file 时,我收到一条 "zsh: illegal hardware instruction ./file" 消息。
我注释掉了代码的某些部分,看来问题是由 al_create_display() 函数引起的(或者这可能只是原因之一)。
我用一个非常简单的快板程序(基本上只是打开一个显示器)复制了这个问题。
我的allegro是用homebrew安装的,我用g++-9编译程序。
我使用的机器是 2016 年的 MacBook Pro,13 英寸无触摸条。该系统是 Mac OS Catalina。在更新到 Catalina 之前,没有发生过这样的问题。
崩溃报告中的一些信息:
Crashed Thread: 3
Exception Type: EXC_BAD_INSTRUCTION (SIGILL)
Exception Codes: 0x0000000000000001, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Termination Signal: Illegal instruction: 4
Termination Reason: Namespace SIGNAL, Code 0x4
Terminating Process: exc handler [1579]
Application Specific Information:
-[NSOpenGLContext update] must be called from the main thread if the context has a view.
And the thread that crashed:
Thread 3 Crashed:
0 com.apple.AppKit 0x00007fff3a4878a1 -[NSOpenGLContext update] + 520
1 liballegro.5.2.dylib 0x0000000102876943 create_display_win + 1079
2 liballegro.5.2.dylib 0x000000010283b3d4 al_create_display + 40
3 file 0x0000000102724e72 Display::Display() + 130
4 file 0x0000000102724f22 Display::instance() + 62
5 file 0x00000001026e2f4f _al_mangled_main + 508
6 liballegro.5.2.dylib 0x0000000102878d47 call_user_main + 23
7 liballegro.5.2.dylib 0x0000000102878d30 +[AllegroAppDelegate app_main:] + 9
8 com.apple.Foundation 0x00007fff3f58cef2 NSThread__start + 1064
9 libsystem_pthread.dylib 0x00007fff74405d76 _pthread_start + 125
10 libsystem_pthread.dylib 0x00007fff744025d7 thread_start + 15
库的开发人员已解决该问题:https://github.com/liballeg/allegro5/issues/1091。主分支上的当前版本不会导致问题。我自己尝试过,一切似乎都有效。唯一的问题是您必须使用 cmake 或 xcode 手动构建 allegro。不知道brew版本什么时候更新。
我遇到了以下问题: 我可以使用 make 文件编译我的 allegro 应用程序而不会出错,但是当我 运行 ./file 时,我收到一条 "zsh: illegal hardware instruction ./file" 消息。 我注释掉了代码的某些部分,看来问题是由 al_create_display() 函数引起的(或者这可能只是原因之一)。
我用一个非常简单的快板程序(基本上只是打开一个显示器)复制了这个问题。
我的allegro是用homebrew安装的,我用g++-9编译程序。 我使用的机器是 2016 年的 MacBook Pro,13 英寸无触摸条。该系统是 Mac OS Catalina。在更新到 Catalina 之前,没有发生过这样的问题。
崩溃报告中的一些信息:
Crashed Thread: 3
Exception Type: EXC_BAD_INSTRUCTION (SIGILL)
Exception Codes: 0x0000000000000001, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Termination Signal: Illegal instruction: 4
Termination Reason: Namespace SIGNAL, Code 0x4
Terminating Process: exc handler [1579]
Application Specific Information:
-[NSOpenGLContext update] must be called from the main thread if the context has a view.
And the thread that crashed:
Thread 3 Crashed:
0 com.apple.AppKit 0x00007fff3a4878a1 -[NSOpenGLContext update] + 520
1 liballegro.5.2.dylib 0x0000000102876943 create_display_win + 1079
2 liballegro.5.2.dylib 0x000000010283b3d4 al_create_display + 40
3 file 0x0000000102724e72 Display::Display() + 130
4 file 0x0000000102724f22 Display::instance() + 62
5 file 0x00000001026e2f4f _al_mangled_main + 508
6 liballegro.5.2.dylib 0x0000000102878d47 call_user_main + 23
7 liballegro.5.2.dylib 0x0000000102878d30 +[AllegroAppDelegate app_main:] + 9
8 com.apple.Foundation 0x00007fff3f58cef2 NSThread__start + 1064
9 libsystem_pthread.dylib 0x00007fff74405d76 _pthread_start + 125
10 libsystem_pthread.dylib 0x00007fff744025d7 thread_start + 15
库的开发人员已解决该问题:https://github.com/liballeg/allegro5/issues/1091。主分支上的当前版本不会导致问题。我自己尝试过,一切似乎都有效。唯一的问题是您必须使用 cmake 或 xcode 手动构建 allegro。不知道brew版本什么时候更新。