OK, being the compulsive fool I am, I stole minutes throughout the day, accessing my Mac Pro remotely through my iPhone, and managed to run some of the tools I built while chasing the race condition last year. I've come up with a patch (see below, and be sure to read the disclaimer first!). (As an aside, it's just amazing to be able to do something like this from a handheld device that could literally be anywhere. It's easy to take some of this technology for granted, but I still find it cool.)
Everything below was done remotely, and in a hurry, so none of it should be considered complete or exhaustive (or maybe even correct...).
There are at least two kexts that contain (nearly?) identical instances of
_compression_decode_buffer
, which contains unfiltered AVX code. The first one, we've previously identified as
AppleFSCompressionTypeZlib
. The other,
AppleDiskImagesUDIFDiskImage
, is a plugin for
IOHDIXController
. The latter seems to be referenced when handling some types of .DMG files.
_compression_decode_buffer
is referenced by parts of the Metal subsystem, numerous dyld_shared libraries,
corespeechd
(likely the source of the Siri/Voice Control issues), the XPC Services Disk Image Controller,
mediaanalysisd
, the ContextKit Context Service, some filesystems, and various other subsystems. Also, the unfiltered AVX code in
_compression_decode_buffer
only gets executed under certain cirumstances; this, along with the number of varied references above, might explain the odd and inconsistent constellation of symptoms we've seen surrounding 12.4.
I also found AVX code in apfs and corecrypto (both of which we knew about, and have to date been well-behaved), as well as AppleHV, AppleMesaLib, and OSvKernDSPLib. I haven't examined any of those to look for possible problems; for now, they've just joined the "usual suspects" for examination sometime in the future.
The following patch tries to deal with both kexts (
AppleFSCompressionTypeZlib
and
AppleDiskImagesUDIFDiskImage
). It should be inserted into the Kernel/Patch section of your OpenCore
config.plist
(that's the same section as where the SurPlus patch went). Before anyone points this out, yes - the patches are big and ugly. (They can't all be elegant... ;-)
IMPORTANT: This patch was devised and constructed remotely, under less-than-ideal conditions.
I personally have NOT tested it; I haven't had either the time or the access. @cdf was kind/brave enough to test it (thank you so much!), and he reports success.
Even so, THIS PATCH SHOULD BE CONSIDERED AN "ALPHA TEST" FOR THE TIME BEING. (EDIT 28may22 -
I have now tested the patch, and I consider it to be "beta" now; I'll update that status after more feedback from others.) Consider the pros and cons before applying it to a production system, or one containing precious data.
Good luck!
(
@cdf - if you'd be so kind, please compare the patch below to what you tested, just to be sure I didn't munge it while posting here. Thanks in advance!)