
多位开发者在苹果开发者论坛反映,macOS 15.8.2 候选版本(RC)存在严重缺陷,导致应用程序窗口内的 OpenGL 绘图功能失效,窗口呈现空白状态。该问题由用户 gongty 率先披露,其在将搭载 M1 Pro 芯片的 MacBook Pro 从 macOS 15.8 升级至构建版本为 24H219 的 15.8.2 RC 后触发了此故障。
技术细节显示,附加到窗口的每个 OpenGL 上下文均缺失默认帧缓冲区(framebuffer),直接影响 NSOpenGLView 和 -[NSOpenGLContext setView:] 的正常使用。调试发现,glCheckFramebufferStatus 返回 GL_FRAMEBUFFER_UNDEFINED (0x8219),glClear 触发 GL_INVALID_FRAMEBUFFER_OPERATION (0x506),内核日志则频繁记录来自 IOGPUFamily 的“无效表面 ID”错误。值得注意的是,同一上下文中的离屏帧缓冲区仍工作正常,CAOpenGLLayer 和 NSOpenGLLayer 也未受波及,故障仅局限于窗口表面路径。
发帖人已提交反馈报告 FB25133383,并附带最小化示例应用、内核日志及调用跟踪。测试表明,无论是原生 arm64 代码还是通过 Rosetta 运行的 x86_64 代码,均复现了该问题。在实际应用中,索尼 Imaging Edge Desktop Viewer 和 DJI Studio 等软件均受影响。此外,GitHub 上关于 kitty、Alacritty、Godot 和 Bambu Studio 的报告也指向相同症状,涉及 M1、M4、M4 Pro 及 M4 Max 等多种机型。另有反馈指出,macOS 15.8.1 版本表现正常。
随着讨论发酵,更多受影响软件被曝光。有用户在 Apple Silicon MacBook Pro 上复现了该 Bug,发现 Ableton Live 12 等通过 NSOpenGLView 绘制界面的音频插件受到冲击;FreeCAD、PrusaSlicer 和 OrcaSlicer 的 3D 视图区域也无法正常渲染。KiCad 论坛用户同样报告在打开文件时出现“switching framebuffer: invalid framebuffer operation”错误。
随后发布的第二个候选版本(构建版本 24H225)并未修复该问题。10 月 14 日,仍有用户在该版本上测试失败。针对此事,一名苹果 DTS 工程师回复称:“我无法评论已知问题,也无法说明修复程序何时或是否会发布。”他建议开发人员继续测试新构建版本,将结果更新至 FB25133383,并附上重现问题后的 sysdiagnose 诊断数据。
目前,社区建议的临时解决方案是将渲染目标改为基于 IOSurface 的帧缓冲区,并在 CALayer 中呈现,或直接使用 CAOpenGLLayer。部分开发者已开始寻求长期替代方案,KiCad 开发者 Seth_h 于 10 月 13 日透露,旨在将 KiCad 迁移至 Mac 原生 Metal 的代码已于当周推送,将在 v11 周期中作为实验性功能与 OpenGL 路径并存。