自2012年11月对Moutain Lion进行更新以来,我一直收到这些奇怪的图形问题。
麻烦列表:
应用程序启动期间OpenCL崩溃
有时,笔记本电脑从长时间的睡眠中唤醒后,尝试启动任何应用程序时,它们都崩溃,并在CoreImage / OpenCL中出现以下类型的堆栈跟踪问题:
Code Type: X86-64 (Native)
Parent Process: launchd [136]
OS Version: Mac OS X 10.8.3 (12D68)
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x000000010c8d0000
VM Regions Near 0x10c8d0000:
shared memory 000000010c8c0000-000000010c8d0000 [ 64K] r--/r-- SM=SHM
-->
CG shared images 000000011a442000-000000011a44a000 [ 32K] r--/r-- SM=SHM
Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0 libsystem_c.dylib 0x00007fff9371c6d3 strlen + 51
1 libsystem_c.dylib 0x00007fff9376a067 strdup + 21
2 libcldcpuengine.dylib 0x000000010c2a4e72 0x10c29e000 + 28274
3 libcldcpuengine.dylib 0x000000010c2a2ac6 glrCompBuildProgram + 96
4 com.apple.opencl 0x00007fff906cb398 0x7fff906a3000 + 164760
5 com.apple.opencl 0x00007fff906b3bc3 clBuildProgram + 904
6 com.apple.CoreImage 0x00007fff92542455 -[FEOpenCLContext _loadKernel:target:testOnly:] + 1156
7 com.apple.CoreImage 0x00007fff9263c35f -[FEContext(Kernel) loadKernel:target:] + 94
8 com.apple.CoreImage 0x00007fff9257e54f FEApplyTreeNode::render1(FETreeContext*, FEShape const&, fe_kernel_target_struct*, int, float*, FETreeTexture*) + 105
9 com.apple.CoreImage 0x00007fff9257f735 FEApplyTreeNode::render2(FETreeContext*, FEShape const*, void (*)(FEContext*, void*, FEFormat), void (*)(FEContext*, void*), void*) + 1583
10 com.apple.CoreImage 0x00007fff9257c7c7 FETreeNode::render_(FETreeContext*, FEShape const*, void (*)(FEContext*, void*, FEFormat), void (*)(FEContext*, void*), void*) + 169
11 com.apple.CoreImage 0x00007fff925804c5 FETreeNode::render(FETreeContext*, FEShape const&, void (*)(FEContext*, void*, FEFormat), void (*)(FEContext*, void*), void*) + 107
12 com.apple.CoreImage 0x00007fff92584211 FETreeContext::renderTree(FETreeNode*, FEShape const&, void (*)(FEContext*, void*, FEFormat), void (*)(FEContext*, void*), void*) + 277
13 com.apple.CoreImage 0x00007fff92584535 FETreeContext::renderImage_(FEImage*, CGRect, FEShape const*, CGAffineTransform, CGColorSpace*, FEFormat, bool, void (*)(FEContext*, void*, FEFormat), void (*)(FEContext*, void*), void*) + 703
14 com.apple.CoreImage 0x00007fff92584911 FETreeContext::renderImage(FEImage*, CGRect, FEShape const*, CGAffineTransform, CGColorSpace*, FEFormat, bool, void (*)(FEContext*, void*, FEFormat), void (*)(FEContext*, void*), void*) + 459
15 com.apple.CoreImage 0x00007fff9255b1a6 -[FEImage(Internal) _renderWithContext:bounds:transform:colorSpace:format:premultiplied:setupCallback:finishCallback:callbackData:] + 339
16 com.apple.CoreImage 0x00007fff9255a5bf -[FEImage getBitmap:withContext:origin:transform:colorSpace:] + 694
17 com.apple.CoreImage 0x00007fff9250fa9a -[CIContextImpl render:toBitmap:rowBytes:bounds:format:colorSpace:] + 427
18 com.apple.CoreImage 0x00007fff9250e968 -[CIContext render:toBitmap:rowBytes:bounds:format:colorSpace:] + 77
19 com.apple.coreui 0x00007fff938ff5fc _CUICreateImageByApplyingEffectsToImageViaCI(long, CUIDescriptor const*, __CFArray const*, CGImage*, double, unsigned char) + 16220
20 com.apple.coreui 0x00007fff938f9219 CUIArtFileRenderer::DrawImage(CGRect, long, CUIDescriptor const*) + 9651
21 com.apple.coreui 0x00007fff938e7887 CUIArtFileRenderer::Draw(CUIDescriptor const*, CGAffineTransform, CUIReturnInfo&) + 1571
22 com.apple.coreui 0x00007fff938c2895 CUIRenderer::Draw(CGRect, CGContext*, __CFDictionary const*, __CFDictionary const**) + 3343
23 com.apple.coreui 0x00007fff938edbcb CUIDraw + 180
Model: MacBookAir5,2, BootROM MBA51.00EF.B02, 2 processors, Intel Core i7, 2 GHz, 8 GB, SMC 2.5f7
Graphics: Intel HD Graphics 4000, Intel HD Graphics 4000, Built-In, 512 MB
(为方便起见,将崩溃报告删除)
图形损坏
我在不同的UI元素(如打开的窗口,Cmd + Tab列表中的Finder图标,背景图像等)上都遇到了相同的图形假象(白噪声)损坏,如下所示:屏幕截图
对于损坏的窗口,执行重绘的任何操作都可以解决问题,但其他操作(Finder图标,背景图像)将保留(可能是因为它们从未重绘),直到重新启动计算机。
残破的图标
之后(甚至在重新启动后)仍然存在的问题是,任何模板图标(或以其他方式由着色器处理过的场景图标)都会从状态栏/工具栏/侧面板中消失:
对于这最后一个,创建新用户或重新安装先前版本的通常技巧在一开始就起作用,但后来又浮出水面。
由于我已打开FileVault,所以我似乎也无法引导到安全模式下以手动刷新图标缓存(与其他地方所述的25-30%的加载栏卡死问题相同)。
清理任何Caches
我能找到的其他文件夹也无济于事。
现在,有趣的是,问题1和问题3都与绕过一个简单的动作:从一个终端手动运行的应用程序(如在,不经由open(1)
即不与launchd
作为父进程)。
在那种情况下,图标可以完美呈现,并且在此实例的生命周期内不会发生怪异的OpenCL崩溃,尽管此后它不能解决正常启动的应用程序的问题。
当我在互联网上搜寻时,找不到找不到完全相同问题的人,因此可能只是我的机器有故障,但我要事先在这里发布消息,看看是否有人对如何诊断问题有更多的想法(并为其提供Google入口点)。