macOS: ReportCrash 程序吃掉 CPU 資源

同事抱怨他的 MacBook Pro 很慢, 開啟網頁常常都要等很久, 本來是以為網路慢或網頁開太多才會感覺到慢, 遠端連線之後才發現 CPU 資源都被 ReportCrash 程序吃掉, 而且就算把 ReportCrash 程序用 kill 指令終止, 該程序還是會不停的啟動, 因此懷疑是否有甚麼自動啟動的服務執行錯誤, 導致 launchd 重複啟動的過程下, 不停地驅動 ReportCrash 程序所導致。

診斷方式

  1. 終止 ReportCrash 程序, 釋放其所占用的 CPU 資源, 方便進行除錯。
    • sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.ReportCrash.Root.plist
  2. 觀察 /var/log/system.log 中是否有不停反覆被啟動的服務。
  3. 移除該服務。
  4. 啟動 ReportCrash 程序,若是依然會不停被啟動占用 CPU 資源,則回到步驟 1.
    • sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.ReportCrash.Root.plist
  5. 檢視被移除的服務, 若為必要使用的功能, 則前往該服務的來源網站, 檢查是否有後續更新版本可以使用。

處理結果

此次診斷同事的 MBP 發現不停被啟動的服務, 都是政府官方憑證常駐程式所引發, 包含了健保卡認證服務、 自然人憑證認證服務、 工商管理憑證認證服務, 還有一些銀行網路 ATM 服務等。 這些服務常駐程式, 被 launchd 啟動不久就因為執行錯誤結束, 因而驅動了 CrashReport 程序, 接著 launchd 又會嘗試再次啟動該服務, 因此就進入這種啟動服務、 服務崩潰 、 CrashReport 被驅動的反覆循環中,造成 CPU 資源耗用居高不下, 導致平常的功能搶不到 CPU 資源而感覺到系統卡卡的。

將這些服務通通移除之後, MBP 就恢復正常了。 至於同事會不會用到被移除的服務呢? 我想等到需要用到的時候, 那些服務的網頁就會提示同事進行相關服務元件的安裝了, 有問題應該還是會回頭來找我才是。

參考資料

發佈留言

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料