Saya telah bekerja dengan penasihat teknis senior di Apple untuk masalah ini selama lebih dari setahun, dan bekerja dengan penasihat senior lain untuk beberapa waktu sebelum itu. Kami telah melakukan "pengambilan data" untuk mengirim ke Apple Engineers pada beberapa kesempatan dan melakukan perekaman layar pada beberapa kesempatan untuk menunjukkan apa yang terjadi di Activity Monitor, Image Capture, dan, pada akhirnya, dalam sebuah plist yang disimpan oleh icdd di / Users / user_name / Library / Dukungan Aplikasi / icdd / deviceInfoCache.plist (dengan menampilkannya dalam Xcode).
Pada titik ini, inilah perkiraan terbaik saya tentang apa yang terjadi:
Proses icdd (Database Perangkat Pengambilan Gambar) melihat pemindai datang dan pergi di jaringan yang sibuk. Itu mencoba untuk menyimpan daftar file ikon mereka di tabel hash, yang juga menulis ke file deviceInfoCache.plist yang disebutkan di atas. Ya - ini terdengar gila - ia menyimpan referensi ke file ikon pemindai. Tetapi yang lebih gila lagi adalah, karena alasan tertentu, hampir semua entri dalam file ini menunjuk ke .icns file yang tidak ada. Dari beberapa sistem yang saya lihat, ada ribuan entri dalam file, namun hanya beberapa file .icns yang ada di salah satu mesin, dan tidak ada yang ada di yang lain. Saya percaya bahwa ketika file ini menjadi besar, icdd menghabiskan banyak waktu untuk memeriksa keberadaan entri dalam file .plist dan memodifikasi file tersebut. Saya percaya ini karena dua alasan. Pertama, ketika saya membawa pulang laptop saya, proses icdd kadang-kadang terus berjalan pada sekitar 100% CPU, tetapi ketika saya kemudian membunuhnya, ia kembali ke "normal" sekitar 0,0 hingga 0,1%, setiap saat. Oleh karena itu, saya pikir kadang-kadang masih mencoba untuk memproses informasi tentang entri ketika saya membukanya di rumah. Tetapi ketika saya membunuhnya saat berada di jaringan yang sibuk, sering kembali mendekati 100% segera. Ketika jumlah pemindai yang diperlihatkan dalam Pengambilan Gambar turun (yang sering terjadi, tetapi secara berkala akan melonjak karena suatu alasan), icdd akhirnya akan tenang. Dan kedua, menghapus file deviceInfoCache.plist menyebabkan icdd berperilaku wajar untuk sementara waktu - hingga jumlah entri bertambah. Perhatikan bahwa icdd menyimpan salinan entri ini dalam memori, jadi jika Anda menghapus file dari akun pengguna, icdd langsung menulis ulang segera. Dan tentu saja, Anda tidak dapat membunuh icdd cukup lama untuk menghapus file, jadi Anda harus keluar dan menghapus file dari akun administrator lain melalui terminal. icdd akan membuat ulang file ketika Anda masuk kembali, tetapi itu akan memiliki entri yang relatif sedikit dan berperilaku baik untuk sementara waktu.
Untuk memberikan gambaran tentang skala, Insinyur Apple terkejut melihat bahwa saya memiliki sebanyak 85 pemindai yang ditampilkan dalam Pengambilan Gambar. Namun, sering kali angka ini akan berkurang menjadi sekitar 6 pada sistem yang sama dan selama jangka waktu yang sama. File deviceInfoCache.plist memiliki antara 8.000 dan 12.600 entri pada sistem yang telah saya lihat yang memiliki masalah icdd - milik saya adalah yang lebih besar, dan saya percaya ini terbawa dari mesin yang lebih lama sejak saya mengalami masalah icdd sejak saya mengatur MacBook Pro baru saya di 2016-Des. Ketika saya menghapus file plist, jumlah entri awal dalam file yang baru dibuat adalah 44, dan selama beberapa hari penggunaan icdd cpu hampir mencapai 0,0%. Namun, setelah sekitar 5 hari di kampus, file plist saya memiliki 964 entires, dan penggunaan icdd cpu secara rutin akan meningkat antara 30% dan 90% di jaringan sibuk di universitas. Ketika saya di rumah, file plist hanya akan menambah jumlah entri sebanyak 0 hingga 2 selama sehari. Dari 12.600 entri dalam file plist saya sebelumnya, hanya 2 yang berisi "deviceName", sisanya berisi "iconPathLocation", yang semuanya mengarah ke file .icns yang tidak ada. Dengan plist saat ini, masih ada persis 2 entri yang berisi "deviceName", dan sisanya berisi "iconPathLocation" yang tidak ada. yang semuanya mengarah ke file .icns yang tidak ada. Dengan plist saat ini, masih ada persis 2 entri yang berisi "deviceName", dan sisanya berisi "iconPathLocation" yang tidak ada. yang semuanya mengarah ke file .icns yang tidak ada. Dengan plist saat ini, masih ada persis 2 entri yang berisi "deviceName", dan sisanya berisi "iconPathLocation" yang tidak ada.
Jadi, solusi jangka pendeknya adalah menghapus file plist dari akun administrator lain melalui terminal saat keluar dari akun pengguna Anda. Mudah-mudahan, dengan informasi ini sekarang diberikan kepada Apple Engineers dari Senior Advisor saya, Apple Engineers akan memiliki informasi yang cukup untuk mencari tahu mengapa icdd bertindak seperti ini dan memperbaiki masalah. Tentu saja, mungkin akan membantu jika Anda dapat memverifikasi solusi jangka pendek saya dan terus melaporkan apa yang Anda temukan ke Apple.