Je travaille avec un conseiller technique principal d'Apple sur cette question depuis plus d'un an, et je travaillais avec un autre conseiller principal depuis quelque temps déjà. Nous avons fait des "captures de données" à envoyer aux ingénieurs d'Apple à plusieurs reprises et fait des enregistrements d'écran à plusieurs reprises pour démontrer ce qui se passe dans le moniteur d'activité, la capture d'image, et, finalement, dans une plist qu'icdd maintient à /Users/nom_utilisateur/Bibliothèque/Application Support/icdd/deviceInfoCache.plist (en l'affichant dans Xcode).
À ce stade, voici ma meilleure estimation de ce qui se passe :
Le processus icdd (Image Capture Device Database) voit les scanners aller et venir sur un réseau occupé. Il tente de conserver une liste de leurs fichiers d'icône dans une table de hachage, qu'il écrit également dans le fichier deviceInfoCache.plist mentionné ci-dessus. Oui - cela semble fou - il conserve des références aux fichiers d'icône des scanners. Mais ce qui est encore plus fou, c'est que, pour une raison quelconque, presque toutes les entrées de ce fichier pointent vers des fichiers .icns qui n'existent pas. Sur plusieurs systèmes que j'ai examinés, il y avait plusieurs milliers d'entrées dans le fichier, mais seuls quelques fichiers .icns existaient sur l'une des machines, et aucun sur les autres. Je pense que lorsque ce fichier devient volumineux, icdd passe beaucoup de temps à essayer de vérifier l'existence d'entrées dans le fichier .plist et à modifier le fichier. Je le pense pour deux raisons. Tout d'abord, lorsque je ramène mon ordinateur portable à la maison, le processus icdd continue parfois à fonctionner à environ 100 % de l'unité centrale, mais lorsque je le tue ensuite, il revient à la "normale" d'environ 0,0 à 0,1 %, à chaque fois. Par conséquent, je pense qu'il essaie parfois encore de traiter des informations sur les entrées lorsque je l'ouvre à la maison. Mais lorsque je l'arrête alors que je suis sur le réseau occupé, il revient souvent à près de 100% immédiatement. Lorsque le nombre de scanners affichés dans Image Capture diminue (ce qui est souvent le cas, mais peut périodiquement atteindre un pic pour une raison quelconque), icdd finit par se stabiliser. Ensuite, la suppression du fichier deviceInfoCache.plist permet à icdd de se comporter raisonnablement pendant un court moment - jusqu'à ce que le nombre d'entrées augmente à nouveau. Notez qu'icdd maintient une copie de ces entrées en mémoire, donc si vous supprimez le fichier du compte utilisateur, icdd le réécrit immédiatement. Et, bien sûr, vous ne pouvez pas tuer icdd assez longtemps pour supprimer le fichier, vous devez donc vous déconnecter et supprimer le fichier à partir d'un autre compte administrateur via le terminal. icdd recréera le fichier lorsque vous vous reconnecterez, mais il aura relativement peu d'entrées et se comportera bien pendant un certain temps.
Pour donner une idée des échelles, les ingénieurs d'Apple ont été choqués de voir que j'avais jusqu'à 85 scanners s'affichant dans Image Capture. Souvent, cependant, ce nombre se stabilise à environ 6 sur le même système et pendant les mêmes périodes. Le fichier deviceInfoCache.plist avait entre 8 000 et 12 600 entrées sur les systèmes que j'ai examinés et qui avaient des problèmes d'icdd - le mien est le plus grand, et je crois que cela a été reporté d'une machine plus ancienne puisque j'avais des problèmes d'icdd depuis que j'ai installé mon nouveau MacBook Pro en 2016-Dec. Lorsque j'ai supprimé le fichier plist, le nombre d'entrées initiales dans le fichier nouvellement créé était de 44, et pendant quelques jours, l'utilisation du cpu d'icdd a oscillé près de 0,0%. Cependant, après environ 5 jours sur le campus, mon fichier plist a 964 entrées, et l'utilisation icdd cpu va régulièrement rebondir entre 30% et 90% sur le réseau occupé de l'université. Lorsque je suis à la maison, le fichier plist n'augmente son nombre d'entrées que de 0 à 2 au cours d'une journée. Sur les 12 600 entrées de mon précédent fichier plist, seules 2 d'entre elles contiennent un "deviceName", le reste contient un "iconPathLocation", qui pointent tous vers des fichiers .icns inexistants. Avec le fichier plist actuel, il y a toujours exactement 2 entrées qui contiennent un "deviceName", et le reste contient un "iconPathLocation" qui n'existe pas.
Ainsi, la solution à court terme est de supprimer le fichier plist à partir d'un autre compte administrateur via le terminal tout en étant déconnecté de votre compte utilisateur. J'espère qu'avec ces informations fournies par mon conseiller principal, les ingénieurs d'Apple disposeront de suffisamment d'informations pour comprendre pourquoi icdd agit de cette manière et résoudre le problème. Bien sûr, il serait probablement utile que vous puissiez vérifier ma solution à court terme et continuer à rapporter ce que vous trouvez à Apple.
0 votes
Cette solution n'était pas applicable à mon problème. @klanomath Je n'ai aucun périphérique externe connecté à mon MacBook.
0 votes
@Zach lcdd est contrôlé par un agent de lancement. Il contient une clé "Enable pressure exit" qui est désactivée par défaut. Vous pouvez l'activer temporairement (=kill lcdd si la pression mémoire devient trop élevée) et vérifier le résultat. Comme bmike l'a déjà mentionné, la vraie raison est probablement une fuite de mémoire...
0 votes
Je dépanne ce problème depuis quelques semaines maintenant, c'est une consommation importante de la batterie. Il se déclenche toutes les quelques minutes et brûle environ 5% de la batterie en quelques secondes, en faisant tourner un ou plusieurs cœurs à 100%.
0 votes
Tout ce que j'ai pu comprendre, c'est qu'il se présente pour scanner le réseau à la recherche de scanners en réseau. Cela semble se produire toutes les quelques minutes (et, dans une université, il y a un grand nombre de scanners en réseau, apparemment). En regardant la console, on constate qu'il ajoute et supprime constamment des scanners en réseau.
0 votes
De plus, j'ai essayé de désactiver SIP et de modifier le fichier com.apple.icdd.plist pour activer la sortie de la mémoire sous pression ; cela ne donne rien. En fait, j'ai essayé presque tous les paramètres de cette liste ; la désactivation empêche le problème de se produire, mais casse aussi complètement Preview.app.
1 votes
Vous n'êtes pas la première personne à avoir ce problème. Voyez si cette réponse vous aide : superuser.com/questions/748933/
1 votes
Icdd est lié à l'Image Capture.app/service. Avez-vous des périphériques tels qu'un scanner, une imprimante-scanner ou un appareil photo connectés ?
0 votes
De plus, si vous vous déconnectez puis vous reconnectez, comment les 7.24 utilisés (1.08 App, 1.75 Wired. 4.41 Compressed) changent-ils ? Il pourrait s'agir d'une simple fuite de mémoire que la déconnexion et l'ouverture de session effacent. Si ce n'est pas le cas, j'essaierais de désactiver l'antivirus et de redémarrer pour voir si la mémoire grimpe aussi vite.