If you follow me on Twitter then you will know that I recently tweeted an issue in which Time Machine was failing causing my MacBook Pro to crash in what is essentially akin to the BSOD for Windows users. The first time this happened I wasn’t even using the laptop. The second time I was sending an e-mail in Notes. So, it was unlikely to be anything that I did. Now, I did get crash data with each crash of the Mac but paid it little attention on the first crash assuming it was a one-time thing. On the second crash, which was about 2 hours later, I did pay attention because it was the same crash data. This is what I had:
panic(cpu 0 caller 0x0031E569): "hfs_getnewvnode: bad ca_blocks (too small)"@/SourceCache/xnu/xnu-1228.4.31/bsd/hfs/hfs_cnode.c:660 Backtrace, Format - Frame : Return Address (4 potential args on stack) 0x52bef5a8 : 0x12b0f7 (0x4581f4 0x52bef5dc 0x133230 0x0) 0x52bef5f8 : 0x31e569 (0x484f4c 0x65b52ec 0x14 0xf2d92) 0x52bef698 : 0x32f7d4 (0x10802804 0x0 0x52bef788 0x52bef7b0) 0x52bef7e8 : 0x32facf (0x10802804 0x66d10b 0x52bef93c 0x1) 0x52bef848 : 0x1f66f4 (0x5c15260 0x66d10b 0x0 0x52bef93c) 0x52bef898 : 0x1d524a (0x5c15260 0x66d10b 0x0 0x52bef93c) 0x52bef958 : 0x1c3708 (0x52befa00 0x1040ec9c 0x52bef9c8 0x19d8da) 0x52beff78 : 0x3dcf13 (0x5ae3c50 0x779bc20 0x779bc64 0x6d498c4) 0x52beffc8 : 0x19f1c3 (0x6456a60 0x0 0x1a20b5 0x851a7d8) No mapping exists for frame pointer Backtrace terminated-invalid frame pointer 0xb0101218 BSD process name corresponding to current thread: backupd
See, what I overlooked in the first set of crash data was that very important line at the bottom referencing backupd which is the Linux backup daemon. Backup, eh? I do have Time Machine running, but it backups every hour, so shouldn’t my Mac have been crashing hourly? A quick Google search revealed this very informative blog post from just a few months ago. And, thankfully, the solution was also provided. Not to take the bang away from the referenced post because it is worth reading and explains why I wasn’t crashing hourly, but the solution is to repair the backup bundle (mine was on a Time Capsule, but this should be of little consequence) by running Disk Utility. Because I know many who read this are new to the Mac, I’ll walk you through it:
- Disable Time Machine. This done in System Preference -> Time Machine. Set the big On/Off switch to Off.
- Mount your bundle. In Finder open the drive that contains your Time Machine backup. Find and double-click on your backup bundle. It will be named <your-machine-name>_<long-number>.sparsebundle. Double-click on this file. You will see a window stating that it is checking the volume. Click the Skip button. You should now have a new drive mounted on your desktop named “Backup of <your-machine-name>”.
- Repair the bundle. Open Disk Utility (usually found under Applications -> Utilities). One of the options should be “Backup of <your-machine-name>”. Select it and then press the Repair Disk button.
- Re-enable Time Machine. That’s right, set the big switch back to On (the one you set to Off in step 1).
In the post I linked to the author complains that he should have done his repair over wired Ethernet because over wi-fi it took 8 hours to repair a 140GB bundle. However, over a 100 gigabit network connection it took me just over 8 hours to repair a 147GB bundle, so while I would do this wired versus wireless if I had the choice, I’m not sure how much of a difference it will make time-wise.