0

I have built an audio host application which can host both Virtual Instruments and Effects Plugins in Auv3 format. While the virtual instruments load fine, numerous effects plugins fail to load. I need Apple's help troubleshooting why these plugins fail to load.

Here is a list of the plugins which fail to load: Altiverb, Lexicon Reverb, AUMatrixReverb, AUNewPitch, AURogerBeep, AUReverb2, AUSampleDelay

Here is a list of plugins which DO load correctly: Native Instruments (all), Spectrasonics Omnisphere, All other Apple AU plugins not listed above.

It should be noted that the two non-Apple plugins which don't load both require an iLok dongle with a license. The iLok is attached and the software is authorized when the bug occurs. Note these run fine on Logic Pro and Digital performer. Is there special code, permissions, or code signing necessary to use plugins that require an iLok? It is not certain whether or not this is the cause but it is worth exploring.

When attempting to load Altiverb the error messages are:

Fatal error: 100000

A fatal wrapper bootstrap error happened. This software cannot be loaded. Please contact the software publisher for support using this software.

Failed to load effect. Error: Error Domain=NSOSStatusErrorDomain Code=-1 "kCFStreamErrorHTTPParseFailure / kCFSocketError / kCFStreamErrorDomainCustom / kCSIdentityUnknownAuthorityErr / qErr / telGenericError / dsNoExtsMacsBug / kMovieLoadStateError / cdevGenErr: Could not parse the request/response. / / custom to the kind of stream in question / / queue element not found during deletion / / not a SysErr, just a placeholder / / General error; gray cdev w/o alert"

When attempting to load Lexicon the error messages are: 2020-09-21 09:38:42.609730-0700 Composer Bot Desktop[14189:5425867] [audiocomp] APComponent.mm:397 CFBundle 0x12d9226e0 </Library/Audio/Plug-Ins/Components/LexConcertHall.component> (bundle, not loaded): cannot load bundle: The bundle “LexConcertHallAU” couldn’t be loaded because it is damaged or missing necessary resources. (dlopen_preflight(/Library/Audio/Plug-Ins/Components/LexConcertHall.component/Contents/MacOS/LexConcertHall): no suitable image found. Did find: /Library/Audio/Plug-Ins/Components/LexConcertHall.component/Contents/MacOS/LexConcertHall: mmap() errno=13 at address=0x1798E1000, size=0x003AC000 segment=__DATA in Segment::map() mapping /Library/Audio/Plug-Ins/Components/LexConcertHall.component/Contents/MacOS/LexConcertHall) Failed to load effect. Error: Error Domain=NSOSStatusErrorDomain Code=-1 "kCFStreamErrorHTTPParseFailure / kCFSocketError / kCFStreamErrorDomainCustom / kCSIdentityUnknownAuthorityErr / qErr / telGenericError / dsNoExtsMacsBug / kMovieLoadStateError / cdevGenErr: Could not parse the request/response. / / custom to the kind of stream in question / / queue element not found during deletion / / not a SysErr, just a placeholder / / General error; gray cdev w/o alert"

Steps to Reproduce In the included folder which I will provide upon request, open the xcode project AudioFramework.xcodeproj Select the scheme: AudioFrameworkDemo Run the project A mixing board should appear In the first channel on the left, select the top Audio FX cell (not Input) In the dropdown, choose Altiverb or Lexicon (if you have any of those plugins) If you do not have these products, you may try any other third party plugin that requires an iLok dongle. (Again, we do not know if the iLok is the culprit) You will likely see an error message that these plugins cannot run in the presence of a debugger. Therefore, while the app is still running: In the dock below, right click the AudioFramework->Options->Keep in dock Quit the app, and launch again this time from the dock. Repeat the steps above.

You may check out the source code here on Github:

https://github.com/dmann200/AudioFramework

dmann200
  • 529
  • 4
  • 11

3 Answers3

0

I received an answer from PACE anti piracy, makers the iLok dongle. They told me the following which solved my problem and allowed the plugins to run:

It turns out that the following capabilities need to be added to the project under Signing and Capabilities->Hardened Runtime

Allow unsigned executable memory Disable library validation

The full message from PACE is here:

Entitlements needed for wrapping

If you’re wrapping an application that needs to be notarized, or if you’re notarizing a host application that includes wrapped bundles (like PACE protected plugins), then you will need to add the com.apple.security.cs.allow-unsigned-executable-memoryentitlement when signing. To do this, you should create an entitlements file with at least the following contents (add your own required entitlements as needed):

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.security.cs.allow-unsigned-executable-memory</key>
    <true/>
</dict>
</plist>

One of our engineers indicates "the issue with “different team IDs” (and maybe some others) must be solved by entitlements". He provides the following information from another matter he helped with from a few weeks ago:


I'm not an expert in this area, but I believe the pragmatic way to get around this is to adjust the entitlements plist for your application. You'll need to add this entitlement: com.apple.security.cs.disable-library-validation.

I have seen that DAW vendors have been doing this in recent releases, with a plist similar to this one:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.security.cs.allow-unsigned-executable-memory</key>
    <true/>
    <key>com.apple.security.cs.disable-library-validation</key>
    <true/>
    <key>com.apple.security.device.audio-input</key>
    <true/>
    <key>com.apple.security.personal-information.addressbook</key>
    <true/>
</dict>
</plist>
dmann200
  • 529
  • 4
  • 11
0

Regarding the above answer,

  • addressbook access is unrelated, sure thing.
  • allow-unsigned-executable-memory is not necessary ( use in apps that modify their own code while running )

So I think the only needed entitlement key needed is com.apple.security.cs.disable-library-validation

But, from my experience, you must also check that then sandbox is disabled.

It have lost a lot of time with this! :)

Moose
  • 2,607
  • 24
  • 23
0

I had the same error with an app that would show on other macs but never mine. The first answer helped me find my solution:

  1. Turned on "Allow Unsigned Executable Memory" in xcode as described in the first answer
  2. Wrapped app with PACE wraptool as usual with notarisation arguments included (--notarize-username and --notarize password)
  3. Run codesign with entitlements file generated by xcode
    codesign -f --options=runtime -s MySignID --entitlements myApp.entitlements MyApp.app
  1. Optional, use codesign -d to check app has com.apple.security.cs.allow-unsigned-executable-memory entitlement listed
   codesign -d --entitlements :- MyApp.app

monoceros
  • 1
  • 4