Looks like no one’s replied in a while. To start the conversation again, simply ask a new question.

Kextcache endless cycle

Kextcache seem to be runaway. It runs, fails, runs again. This is annoying normally, but it happens when I'm booted into the recovery console and prevents me from unmounting "/Volumes/Macintosh HD". It prevents me from installing most OS updates such as 2015-03 and it's preventing Xcode from installing most of its auxiliary software.


Here's the output of kextcache -update-volume / which matches the system.log output.

IOPCIFamily.kext has invalid signature; omitting.

kext file:///System/Library/Extensions/TACC.kext/ is in hash exception list, allowing to load

kext file:///System/Library/Extensions/SXHCD.kext/ is in hash exception list, allowing to load

kext file:///System/Library/Extensions/JMicronATA.kext/ is in hash exception list, allowing to load

kxld[com.apple.driver.AppleFWOHCI]: The following symbols are unresolved for this kext:

kxld[com.apple.driver.AppleFWOHCI]: IOPCIDevice::setTunnelL1Enable(IOService*, bool)

Link failed (error code 5).

Prelink failed for com.apple.driver.AppleFWOHCI; omitting from prelinked kernel.

kxld[com.apple.driver.AppleThunderboltNHI]: The following symbols are unresolved for this kext:

kxld[com.apple.driver.AppleThunderboltNHI]: IOPCIDevice::setTunnelL1Enable(IOService*, bool)

Link failed (error code 5).

Prelink failed for com.apple.driver.AppleThunderboltNHI; omitting from prelinked kernel.

kxld[com.apple.driver.AppleMCP89RootPortPM]: The super class vtable 'vtable for IOPCI2PCIBridge' for vtable 'vtable for AppleMCP89RootPortPM' is out of date. Make sure your kext has been built against the correct headers.

kxld[com.apple.driver.AppleMCP89RootPortPM]: The super class vtable 'vtable for IOPCI2PCIBridge' for vtable 'vtable for AppleMCP89RootPortPM' is out of date. Make sure your kext has been built against the correct headers.

Link failed (error code 5).

Prelink failed for com.apple.driver.AppleMCP89RootPortPM; omitting from prelinked kernel.

kxld[com.apple.driver.AppleACPIPlatform]: The super class vtable 'vtable for IOPCIBridge' for vtable 'vtable for AppleACPIPCI' is out of date. Make sure your kext has been built against the correct headers.

kxld[com.apple.driver.AppleACPIPlatform]: The super class vtable 'vtable for IOPCIBridge' for vtable 'vtable for AppleACPIPCI' is out of date. Make sure your kext has been built against the correct headers.

Link failed (error code 5).

Prelink failed for com.apple.driver.AppleACPIPlatform; aborting prelink.

Failed to generate prelinked kernel.

Child process /usr/sbin/kextcache[551] exited with status 71.

Error 107 rebuilding /System/Library/Caches/com.apple.kext.caches/Startup/kernelcache


Any ideas on how i can fix this? MBP 5,1 10.10.3


I've reformatted and reinstalled several times. As soon as I restore apps and user data in time machine, it comes back.

MacBook Pro, OS X Yosemite (10.10.3)

Posted on Apr 26, 2015 7:22 PM

Reply
12 replies

Apr 27, 2015 4:04 PM in response to Linc Davis

I used kextstat to identify the ones without com.apple and removed those, verified that the three at the top of the kextcache errors were NOT in that list, so I tracked those down with their sources as well. TACC is camtasia, the other two are from SonnetTech.


Same basic error:

/ locked; waiting for lock.

Lock acquired; proceeding.

IOPCIFamily.kext has invalid signature; omitting.

kxld[com.apple.driver.AppleFWOHCI]: The following symbols are unresolved for this kext:

kxld[com.apple.driver.AppleFWOHCI]: IOPCIDevice::setTunnelL1Enable(IOService*, bool)

Link failed (error code 5).

Prelink failed for com.apple.driver.AppleFWOHCI; omitting from prelinked kernel.

kxld[com.apple.driver.AppleThunderboltNHI]: The following symbols are unresolved for this kext:

kxld[com.apple.driver.AppleThunderboltNHI]: IOPCIDevice::setTunnelL1Enable(IOService*, bool)

Link failed (error code 5).

Prelink failed for com.apple.driver.AppleThunderboltNHI; omitting from prelinked kernel.

kxld[com.apple.driver.AppleMCP89RootPortPM]: The super class vtable 'vtable for IOPCI2PCIBridge' for vtable 'vtable for AppleMCP89RootPortPM' is out of date. Make sure your kext has been built against the correct headers.

kxld[com.apple.driver.AppleMCP89RootPortPM]: The super class vtable 'vtable for IOPCI2PCIBridge' for vtable 'vtable for AppleMCP89RootPortPM' is out of date. Make sure your kext has been built against the correct headers.

Link failed (error code 5).

Prelink failed for com.apple.driver.AppleMCP89RootPortPM; omitting from prelinked kernel.

kxld[com.apple.driver.AppleACPIPlatform]: The super class vtable 'vtable for IOPCIBridge' for vtable 'vtable for AppleACPIPCI' is out of date. Make sure your kext has been built against the correct headers.

kxld[com.apple.driver.AppleACPIPlatform]: The super class vtable 'vtable for IOPCIBridge' for vtable 'vtable for AppleACPIPCI' is out of date. Make sure your kext has been built against the correct headers.

Link failed (error code 5).

Prelink failed for com.apple.driver.AppleACPIPlatform; aborting prelink.

Failed to generate prelinked kernel.

Child process /usr/sbin/kextcache[455] exited with status 71.

Error 107 rebuilding /System/Library/Caches/com.apple.kext.caches/Startup/kernelcache


Next?

Apr 27, 2015 9:09 PM in response to Heli0x

1. This procedure is a diagnostic test. It changes nothing, for better or worse, and therefore will not, in itself, solve the problem. But with the aid of the test results, the solution may take a few minutes, instead of hours or days.

The test works on OS X 10.7 ("Lion") and later. I don't recommend running it on older versions of OS X. It will do no harm, but it won't do much good either.

Don't be put off by the complexity of these instructions. The process is much less complicated than the description. You do harder tasks with the computer all the time.

2. If you don't already have a current backup, back up all data before doing anything else. The backup is necessary on general principle, not because of anything in the test procedure. Backup is always a must, and when you're having any kind of trouble with the computer, you may be at higher than usual risk of losing data, whether you follow these instructions or not.

There are ways to back up a computer that isn't fully functional. Ask if you need guidance.

3. Below are instructions to run a UNIX shell script, a type of program. As I wrote above, it changes nothing. It doesn't send or receive any data on the network. All it does is to generate a human-readable report on the state of the computer. That report goes nowhere unless you choose to share it. If you prefer, you can act on it yourself without disclosing the contents to me or anyone else.

You should be wondering whether you can believe me, and whether it's safe to run a program at the behest of a stranger. In general, no, it's not safe and I don't encourage it.

In this case, however, there are a couple of ways for you to decide whether the program is safe without having to trust me. First, you can read it. Unlike an application that you download and click to run, it's transparent, so anyone with the necessary skill can verify what it does.

You may not be able to understand the script yourself. But variations of it have been posted on this website thousands of times over a period of years. The site is hosted by Apple, which does not allow it to be used to distribute harmful software. Any one of the millions of registered users could have read the script and raised the alarm if it was harmful. Then I would not be here now and you would not be reading this message. See, for example, this discussion.

Nevertheless, if you can't satisfy yourself that these instructions are safe, don't follow them. Ask for other options.

4. Here's a general summary of what you need to do, if you choose to proceed:

☞ Copy a particular line of text to the Clipboard.

☞ Paste into the window of another application.

☞ Wait for the test to run. It usually takes a few minutes.

☞ Paste the results, which will have been copied automatically, back into a reply on this page.

These are not specific instructions; just an overview. The details are in parts 7 and 8 of this comment. The sequence is: copy, paste, wait, paste again. You don't need to copy a second time.

5. Try to test under conditions that reproduce the problem, as far as possible. For example, if the computer is sometimes, but not always, slow, run the test during a slowdown.

You may have started up in "safe" mode. If the system is now in safe mode and works well enough in normal mode to run the test, restart as usual. If you can only test in safe mode, do that.

6. If you have more than one user, and the one affected by the problem is not an administrator, then please run the test twice: once while logged in as the affected user, and once as an administrator. The results may be different. The user that is created automatically on a new computer when you start it for the first time is an administrator. If you can't log in as an administrator, test as the affected user. Most personal Macs have only one user, and in that case this section doesn’t apply. Don't log in as root.

7. Load this linked web page (on the website "Pastebin.") The title of the page is "Diagnostic Test." Below the title is a text box headed by three small icons. The one on the right represents a clipboard. Click that icon to select the text, then copy it to the Clipboard on your computer by pressing the key combination command-C.

If the text doesn't highlight when you click the icon, select it by triple-clicking anywhere inside the box. Don't select the whole page, just the text in the box.

8. Launch the built-in Terminal application in any of the following ways:

☞ Enter the first few letters of its name into a Spotlight search. Select it in the results (it should be at the top.)

☞ In the Finder, select Go ▹ Utilities from the menu bar, or press the key combination shift-command-U. The application is in the folder that opens.

☞ Open LaunchPad and start typing the name.

Click anywhere in the Terminal window to activate it. Paste from the Clipboard into the window by pressing command-V, then press return. The text you pasted should vanish immediately.

9. If you see an error message in the Terminal window such as "Syntax error" or "Event not found," enter

exec bash

and press return. Then paste the script again.

10. If you're logged in as an administrator, you'll be prompted for your login password. Nothing will be displayed when you type it. You will not see the usual dots in place of typed characters. Make sure caps lock is off. Type carefully and then press return. You may get a one-time warning to be careful. If you make three failed attempts to enter the password, the test will run anyway, but it will produce less information. If you don't know the password, or if you prefer not to enter it, just press return three times at the password prompt. Again, the script will still run.

If you're not logged in as an administrator, you won't be prompted for a password. The test will still run. It just won't do anything that requires administrator privileges.

11. The test may take a few minutes to run, depending on how many files you have and the speed of the computer. A computer that's abnormally slow may take longer to run the test. While it's running, a series of lines will appear in the Terminal window like this:

[Process started]

Part 1 of 8 done at … sec

Part 8 of 8 done at … sec

The test results are on the Clipboard.

Please close this window.

[Process completed]

The intervals between parts won't be exactly equal, but they give a rough indication of progress. The total number of parts may be different from what's shown here.

Wait for the final message "Process completed" to appear. If you don't see it within about ten minutes, the test probably won't complete in a reasonable time. In that case, press the key combination control-C or command-period to stop it and go to the next step. You'll have incomplete results, but still something.

12. When the test is complete, or if you stopped it because it was taking too long, quit Terminal. The results will have been copied to the Clipboard automatically. They are not shown in the Terminal window. Please don't copy anything from there. All you have to do is start a reply to this comment and then paste by pressing command-V again.

At the top of the results, there will be a line that begins with the words "Start time." If you don't see that, but instead see a mass of gibberish, you didn't wait for the "Process completed" message to appear in the Terminal window. Please wait for it and try again.

If any private information, such as your name or email address, appears in the results, anonymize it before posting. Usually that won't be necessary.

13. When you post the results, you might see an error message on the web page: "You have included content in your post that is not permitted," or "The message contains invalid characters." That's a bug in the forum software. Please post the test results on Pastebin, then post a link here to the page you created.

14. This is a public forum, and others may give you advice based on the results of the test. They speak for themselves, not for me. The test itself is harmless, but whatever else you're told to do may not be. For others who choose to run it, I don't recommend that you post the test results on this website unless I asked you to.

______________________________________________________________

Copyright © 2014, 2015 by Linc Davis. As the sole author of this work (including the referenced "Diagnostic Test"), I reserve all rights to it except as provided in the Use Agreement for the Apple Support Communities website ("ASC"). Readers of ASC may copy it for their own personal use. Neither the whole nor any part may be redistributed.

Apr 27, 2015 10:51 PM in response to Linc Davis

That's a **** of a script. Where did you get it?


Looking through the results, I'm going to have to spend a bunch of time sterilizing confidential information, but I can already see a number of spots that I can use to move forward. For example, moving the third party kexts seems to not have actually removed them. They're showing up in another directory as well. One of my vendors apparently gave me grossly incomplete removal instructions for their software and I've found a number of other potential issues that I can work through.


From your perspective, what should I be looking for specifically?

May 12, 2015 6:30 PM in response to Linc Davis

The script helped. I did my weekly reformat/clean instal/restore and took MD5 sums of the files on the drive. On comparing them to the post-restore files, I noticed that the ones that were throwing errors had NOT changed. Particularly IOPCIFamily.kext.


What I did find, was a bunch of Sonnet kexts somewhere I was told by Sonnet that none had been installed. The kexts in question were:

IOPCIFamily.kext

P2PCCard.kext

SxS Memory Card.kext

If you'll notice, IOPCIFamily.kext seems to be an apple extension. It's not. It's a custom modified version from Sonnet as shown by the Info.plist:

<string>2.9.2f2, Copyright © 2000-2011 Apple Inc. All rights reserved. Copyright 2014 Sonnet Technologies, Inc.</string>

The other two have the same style of copyright modification. Yay for "find | xargs grep"


I found these in: /Library/Extensions


Sonnet support swore repeatedly that they only install in: /System/Library/Extensions

Even more strangely, I removed a bunch of Sonnet extensions from /System/Library/Extensions


Now, when I run:

kextcache -update-volume /

It returns without anything alarming.


I'm still testing, but this looks like the resolution. I'll be doing a search on every file on my drive searching for Sonnet droppings and nuking anything else I find. As a side note, my logic board went bad a week after I bought a Sonnet USB 3.0 Expresscard and had to be replaced out of warranty for $$. I can honestly say that the purchase of that card has been the worst decision I can remember making in the last 5 years. After about 20 format/reinstall/restore from backup cycles, migrating data around, having issues with FileVault having to be removed, re-added, reformatted, etc, system not being able to be rebooted cleanly, about 500 diskutil fscks, and many MANY hours of work over the last 6 months, I'm very likely to send Sonnet a rather large bill for my time.


Thank you for the help!! I never would have found those extensions without your script. If something changes, I'll update again. If not, I'll mark it as solved in a week or so.

Dec 1, 2015 3:13 PM in response to Linc Davis

Hi, this is a very well presented procedure, i wish i could test or fix the kernel cache error 107 on an endless loop booting MBP 4,1 with some equivalent terminal coding on a remote MacMini thru Firewire (at least that works!).

I can see this thread is not that fresh, and my trouble being different i’m going to start a new one. I hope i get help from some mac ninja of your kind 😉

Kextcache endless cycle

Welcome to Apple Support Community
A forum where Apple customers help each other with their products. Get started with your Apple ID.