MacBook Pro System Freezes
Despite having spilled a half-quart of apple juice straight into the innards of my Mid 2014 MacBook Pro Retina, the uptime has been astounding. The only notable time that the system has been offline was during a keyboard replacement just over a year ago. Turns out apple juice, no matter how well you think you’ve cleaned it out of the guts of the MacBook, tends to stick around. Literally. A little less than a year after the mishap one of the keys was stuck as always being pressed. Turns out that makes it hard to boot the system. $1200 (yikes! MacBook repairs from an Apple Authorized Repair Center are costly!) and a few days later and evertyhing was back to new.
Until this week. 14 months later my MacBook Pro system freezes with almost no warning. Last week it was getting sluggish after some software updates and I assumed that was it. This week it would stop responding to keyboard input, then a few moments later the trackpad would stop responding. Evenutally the “Spinning Beachball” or “Spinning Pizza Of Death” (SPOD) comes up and I can no longer close apps or get to the Apple system menu to do a clean restart. My only option was to hold down the power button and do a hard restart. That is not good for the system or my productivity.
The problem has quickly gotten worse. I’ve been learning a few things along the way while I struggle through the problem and try to find a solution that costs less than a new MacBook Pro. My “crib notes” are here for both my future self and to possibly help anyone that stumbles across this article.
Checking The Log Files
On some, but not all, of my system hangs I did notice that the system logs were showing a SMART HDD access failure “terminating after 5 attempts”. You can check your systems logs by opening the Console app from the Launch app.
System boot errors and hard failures like to show up in the Kernel logs under the System section. Looking at the log file names you an quickly discern which items that are being logged may be related to the system freezing by looking at the dates. In my case it almost always, but not every time, had a Kernel log file with a date and time of a failed restart.
In my case the Smart HDD failure appears to be a red herring, a false indicator of the a problem. Since I have an solid state drive it is very unusual, but not unheard of, for it to fail. A more common issue is a bad cable, but that too is rare unless it was damaged during repair. Possible but that would typically show up in a month or less not a year after a repair.
Resetting SMC and PRAM
The first time I noticed a problem was when I disconnected from my desktop setup with two displays attached, a Thunderbolt and a mini-displayport monitor. Often the system would not power up after taking it out of “clamshell mode” (a term for a laptop that is on with the lid closed, typically used with external monitors and a keyboard). If this happens on a regular basis the go-to advice is to reset SMC. Might as well reset the PRAM while you are at it.
While this did resolve the issue of my MacBook hanging immediately when connecting/disconnecting the external devices it did NOT stop the MacBook from freezing at random times. It is still a good idea to perform this non-destructive (you won’t loose any data) reset.
System Management Controller (SMC) Reset
- Plug your MacBook Pro into a power source.
- Power it off with a full shut down or hard power-off (hold down the power button) if necessary.
- Hold down Shift + Control + Option and the Power button at the same time for about 1 second.
- Release all the keys and power button.
The power indicator should flash a different color, either green flashing to amber or amber flashing to green. The System Management Controller should now be reset.
Power on your MacBook Pro.
What is SMC? It is a lower-level system on your Intel-based MacBook that manages temperature sensors, fan speeds, and other interfaces that are closer to the “electronic components” of the system. It manages those systems so the core CPU can spend time running your apps.
Parameter RAM (PRAM) Reset
- Plug your MacBook Pro into a power source.
- Power it off with a full shut down or hard power-off (hold down the power button) if necessary.
- Press the power button.
- IMMEDIATELY press and hold the Command + Option + P + R keys down at the same time and keep them pressed until you hear a second startup sound from the MacBook.
The Parameter RAM will now be reset.
Let go of the keys and let the MacBook start up as usual.
What is PRAM? Also known as Parameter RAM is it a type of non-volatile memory where various settings such as mouse and display parameters are kept. These settings help the software and firmware on the system work more effectively with the specific hardware installed in your MacBook. Things like display scaling and mouse orientation are stored here.
Safe Boot
Yes, MacOS also has a safe mode. Starting in safe mode will clear out various operating system caches and disable any kernel extensions that are non-standard if you installed applications on your system. It can help root out any problems with speciality software or clean up performance-related caches that may have become corrupt. It also disables the accelearated graphics on a MacBook Pro which means you will see various video anomolies while in this mode.
- Plug your MacBook Pro into a power source.
- Power it off with a full shut down or hard power-off (hold down the power button) if necessary.
- Press the power button.
- IMMEDIATELY press and hold the Shift key and keep them pressed until the Apple logo appears.
Login as usual.
You will likely notice some “tearing” and white bars scrolling even during the login process. You will notice performance issues as well as graphics anomolies when using any graphics intensive apps including web pages in Safari that have lots of things going on (such as JavaScript loading dynamic content such as ads).
If you have set your dock to be transparent it will now be opaque, a good indicator you are in safe mode. To verify go to System Information (under the Apple logo) and look under the Software main entry for “Boot Mode”. It will show “Safe” when in Safe mode.
If problems go away while in Safe mode you likely have login items or other software that has been installed that is causing a runaway process. Go to System Preferences | Users and disable your login items to see if that is the cause.
In my case this did not help, more debugging please…
Hardware Diagnostics
After resetting the SMC and PRAM my problem did not go away completely. I decided to dig a bit deeper into possible hardware issues. After all I did dump liquids into this thing and over time the salts and sugars in that liquid will etch away the delicate electrical connections in the laptop.
- Plug your MacBook Pro into a power source.
- Power it off with a full shut down or hard power-off (hold down the power button) if necessary.
- Press the power button.
- IMMEDIATELY press and hold the D key down until you see a screen asking you to select a language.
- Run the Hardware Diagnostic. It takes around 3 minutes on a Mid-2014 MacBook Pro Retina.
My system did show a possible system issue with the fans. Code PPF004 and PPF003. This led to a trip to a local Apple Repair Shop, which as it turns out going to a non-Apple Certified shop is FAR less costly than an Apple Certified Shop. With a laptop more than 2-years out-of-warranty with known liquid damage this turns out to be a great option.
What is NOT a great option is the 3 day diagnostic time PLUS another week or so for parts. I also didn’t want to spend what was starting to sound like another “$500 or so” on a logic board, what they are guessing based on the system behavior and “juice incident”.
I deided to bring the laptop back home with me so I could copy my virtual machines and other tools over to a backup system while my laptop is out of for service. I also decided to try one more thing.
Guest Login
In my case I had disabled a handful of apps and login items, reset my SMC and PRAM, and run the hardware diagnostics. Nothing obvious was coming up. Along the way I did read something online about eliminating as many software variables as possible and one great way to do this was to use Guest login.
That is starting to look like some solid advice. For the past 2 days I’ve been unable to perform simple tasks for more than a few hours before my MacBook would hang. I stopped using my virtual machines via VirtualBox , my phpStorm code editor, my SmartGit utilities, and a dozen other applications I use during a typical coding project. Instead I decided to focus on marketing Store Locator Plus and writing some technical articles. I can do all of this in WordPress, still be productive, and limit the “depth of software” in use on my MacBook.
It turns out the even with actively using only Safari (plus a few background apps on the MacBook) the system would hang. Sometimes in a few hours. Sometimes in as litle as 45 minutes. I went to “Guest Mode”.
Turning on Guest Mode is easy enough.
- Go to the System Preferences and look for Users. Unlock the interface and enable Guest.
- Shut down the MacBook and restart as usual.
- Login as Guest.
This works great if the ONLY thing you need is a web browser. It boots up in a “Super Safe” boot mode that installs almost NOTHING for software. It is the hardware, a very basic shell of an operating system, and the Safari Web Browser. You don’t even get a full-blown browser as many of the extensions and other options are disabled.
I am still learning about what this mode actually does, but one thing it will do is let you konw if there is a fundamental problem with the hardware. My guess is that it still runs at least a shell of MacOS with Safari on top and is likely using at least the Intel CPU and the base, if not advanced, graphics hardware. It is certainly going to be running the SMC and PRAM subsystems, so at the very least it helps isolate where a hardware problem might be but I’m guessing it is doing more to completely separate an issue from being “hardware vs. software” based. If my guess is correct, being able to run for hours without a problem in Guest mode is a strong indicator that the problem with my laptop is buried deep in the complex stack of sotware that I have running on this system.
Creating A Test Account
With Guest accounts working well it is time to “up the ante” and create a Test user. This will create a “vanilla” user without all the extra apps running on a “well used” account. In my case I will set it up as a non-administrator account and only use Safari and my password manager extension. If the system runs for a day or two (or more!) without any issues then it is very likely a rogue application that is hard-crashing MacOS.
Like a Guest account you set it up under System Preferences:
- Go to the System Preferences and look for Users. Unlock the interface.
- Click the + to create a new user.
- Keep it as a standard user.
- Assign a simple username and password you will remember. This is only temporary (hopefully) until we sort out the issue.
- Shutdown.
- Reboot and login as the new Test user.
I am in the midst of using the Test user now. Everything seems to be working well which means I am likely (hopefully, fingers-crossed, wishful-thinking that it is not a logic board) to be writing an article on “how to find hard-to-discover badly-behaving apps and squash them before they kill your Mac”. With any luck that will be a new article soon.
Lots of great information and very helpful. Keep up the great work!! Thank you!
Lance, just curious, did you eventually find and correct the problem with your MacBook Pro?
Thanks for the information.