ReportCrash High CPU & How to Disable reportcrash in Mac OSX
For a while now, all of my MacBooks have run extremely hot and the fans have gone nuts. While troubleshooting the issue, Activity Monitor showed that an app named reportcrash has run very high on the CPU and has killed my battery life. Force quitting the app didn’t help as it would start right back up in a few seconds and climb back to 80-100% usage of the CPU.
What is CrashReporter?
CrashReporter runs in any time an application crashes and it’s designed to saves the application state to aid developers in working out why the app crashed. Basically a process is launching, crashing (and invoking CrashReporter) and then re-launching, repeating this cycle never ending.
How to Identify What’s Crashing
To show which process is triggering this cycle and stop it, CrashReporter is pretty verbose in its logging which makes finding the problem app somewhat easier. Open up the console.app (/Applications/Utilities/Console.app) and look towards the end of your system.log to see what app is crashing.
Unfortunately for me, the problem is a driver by some company called EFI and getting the latest drivers didn’t resolve the issue. The next obvious solution was to disable reportcrash.
How to Disable ReportCrash
Fire up terminal and run the following commands to disable reportcrash:
launchctl unload -w /System/Library/LaunchAgents/com.apple.ReportCrash.plist sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.ReportCrash.Root.plist
How to Enable ReportCrash
If you need to reenable crash report, run the following commands in terminal:
launchctl load -w /System/Library/LaunchAgents/com.apple.ReportCrash.plist sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.ReportCrash.Root.plist
How to flatten a directory on Mac through terminal
Recently, I was handed a project with pre-built ANT scripts that zip folders up into individual directories. The zip files in each folder needed to be uploaded to an FTP site without the folder so having to navigate into each was a bit annoying and time consuming for 40 files.
If you find yourself in need of merge or flatten a folder/directory, use this snippet to flatten everything into a single directory. If a file exists with the same name, you’ll be prompted to overwrite or leave in the existing folder.
find $PWD -mindepth 2 -type f -exec mv -i '{}' $PWD/ ';'
In my case, there was an extra file generated within each folder that was not used and I didn’t want to be prompted 40 times to overwrite so changing the -i to -n will force files to be overwritten. I’d recommend using caution with this and only use it when you know the duplicate files don’t matter.
find $PWD -mindepth 2 -type f -exec mv -n '{}' $PWD/ ';'
How to stop CouchDB on Mac OS
I have been working on a proof of concept using CouchDB. After getting the proof of concept working, I spun up a digital ocean droplet and proceeded to setup CouchDB on the server. I went to enable the SSH tunnel so I could access the CouchDB Futon instance and promptly ran into an error because my local instance of CouchDB was using the same port, 5984. I had a lot of trouble finding out an easy way to stop CouchDB because the documentation in the Wiki wasn’t accurate:
sudo launchctl unload \ /usr/local/Library/LaunchDaemons/org.apache.couchdb.plist
As a workaround, in Terminal, run
launchctl list | grep couchdb
This will output something like:
99093 0 org.apache.couchdb.288008
Grab the highlighted portion and run
launchctl stop "org.apache.couchdb.288008"
Substitute the process name accordingly and you should be able to run the ‘launchctl list’ command again and see the process is no longer present.