c++ - Allegro5 al_create_display() 在 Mac OS Catalina 上崩溃

标签 c++ allegro macos-catalina

我遇到以下问题: 我能够使用 make 文件编译我的 allegro 应用程序而不会出现错误,但是当我运行 ./file 时,我收到一条“zsh:非法硬件指令 ./file”消息。 我注释掉了代码的某些部分,看来问题是由 al_create_display() 函数引起的(或者也许这只是原因之一)。

我用一个非常简单的 allegro 程序复制了这个问题(基本上只是打开一个显示器)。

我的 allegro 是用自制软件安装的,我用 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版本什么时候更新。

关于c++ - Allegro5 al_create_display() 在 Mac OS Catalina 上崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58466092/

相关文章:

c++ - Allegro 5 在基元上绘制位图

ios - 启动应用程序时出错 - Flutter - iOS

xcode - 错误 : unknown type name 'uint64_t' on MacOS while installing libraries

c++ - 使用 C++14 在堆上分配连续二维数组的最佳实践

c++ - 减少 C++ 中的转换困惑

c++ - 如何匹配模板类中的模板友元函数

c - 伪 3D 墙(自上而下的光线转换,有点)

c++ - 我正在尝试在 ALLEGRO c++ 中对许多墙进行整理

c++ - 如果在 C++ 中的基类中添加虚函数或非虚函数,是否必须重新编译整个类层次结构?

autocomplete - zsh 自动完成 ssh 很慢