Depuis la mise à jour de novembre 2012 de Moutain Lion, je continue à avoir ces problèmes graphiques bizarres.
La liste des malheurs :
OpenCL se bloque au démarrage de l'application
Parfois, après que l'ordinateur portable se réveille d'une longue période de sommeil, lorsqu'on essaie de lancer des applications, elles se plantent toutes avec le type de trace de pile suivant, indiquant un problème dans 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
(Rapport d'accident coupé pour des raisons de commodité)
Corruption graphique
J'expérimente les mêmes artefacts graphiques (bruit blanc) de corruption superposés sur différents éléments de l'interface utilisateur comme les fenêtres ouvertes, les icônes du Finder dans la liste Cmd+Tab, l'image de fond,... comme ceci : Capture d'écran
Dans le cas de Windows corrompu, toute action qui provoque un repeint résout le problème mais les autres (icône du Finder, image d'arrière-plan) restent (probablement parce qu'ils ne se repeignent jamais) jusqu'à ce que l'ordinateur soit redémarré.
Icônes brisées
Dans ce qui est un problème persistant par la suite (même après le redémarrage), toutes les icônes de modèles (ou autres icônes traitées par shader en coulisse) disparaissent des endroits comme la barre d'état/barre d'outils/panneaux latéraux :
Capture d'écran de la zone de la barre d'outils
Pour cette dernière, les astuces habituelles consistant à créer un nouvel utilisateur ou à réinstaller une version antérieure fonctionnent au début, mais le problème refait surface par la suite.
Comme j'ai activé FileVault, je n'arrive pas non plus à démarrer en mode sans échec pour vider manuellement les caches des icônes (même problème de barre de chargement bloquée à 25-30 % que celui décrit ailleurs).
Le nettoyage de tout autre Caches
Le dossier que je peux trouver n'aide pas non plus.
Maintenant Ce qui est intéressant, c'est que le problème 1 et le problème 3 sont tous deux contournés par une action simple : lancer l'application manuellement à partir d'un terminal (c'est-à-dire sans passer par l'interface de l'application). open(1)
c'est-à-dire pas avec launchd
comme processus parent).
Dans ce cas, le rendu des icônes est parfait et il n'y a pas d'incident OpenCL bizarre pendant la durée de vie de cette instance, bien que le problème ne soit pas résolu pour les applications lancées normalement par la suite.
En parcourant l'Internet, je n'ai pas trouvé de personnes ayant exactement les mêmes problèmes. Il se peut donc que ma machine soit simplement défectueuse, mais je poste ici au préalable pour voir si quelqu'un a d'autres idées sur la façon de diagnostiquer le problème (et pour fournir un point d'entrée sur Google).