I'm getting reports from a few customers that my plugin is failing validation in Logic Pro. I can install the same plug on my development system and I get no errors or warnings. Just wondering if anyone else has seen this and has any idea of what might be going on. Below is a validation report sent to me by a customer. The interesting thing is that I'm using OS X 10.10.5 with Logic Pro 10.2 and my customer is using the exact same setup. His Logic validation log seems scrambled and apparently has trouble parsing the Info.Plist file.
The file looks good at first glance. I did notice that when I loaded the AU into Logic, it passed validation but Logic's plugin manager reported "invalid" for the version field. Closer examination revealed that all the other AUs were using three fields in the version string while I was using four. I checked Apple's documentation and sure enough they say that the version field in Info.plist should be three fields. So I changed the version to three fields and I no longer get the "invalid" warning. I'm going to give a new build to some of my users to try out and see if that fixes it. Even if this does work, it seems pretty inconsistent because some users are reporting validation failure while some aren't.
Ok I have corrected the "version" field and now the customer no longer gets the scrambled validation report. Now, however, the same customers are reporting a different validation failure. Here's the report.
validating Audio Unit Drum Gator by Bayou Media:
AU Validation Tool
Version: 1.6.1a1
Copyright 2003-2013, Apple Inc. All Rights Reserved.
Specify -h (-help) for command options
--------------------------------------------------
VALIDATING AUDIO UNIT: 'aufx' - 'DG02' - 'BAYU'
--------------------------------------------------
Manufacturer String: Bayou Media
AudioUnit Name: Drum Gator
Component Version: 1.0.3 (0x10003)
Component's Bundle Version: 1.0.3
* * PASS
--------------------------------------------------
TESTING OPEN TIMES:
COLD:
FATAL ERROR: OpenAComponent: result: -1,0xFFFFFFFF
validation result: couldn't be opened
Just to be clear I can load this just fine on my Mac with OS X 10.10.5 and Logic X 10.2. However, some customers are reporting validation failures. I would appreciate some help with this. It's only the AU format that seems to be causing problems.
Well it's not even loading the bundle's binary. There are many reasons for this: the most likely is that the "OSX Deployment Target" is greater than the OSX version on the users machine - or that there is a CPU archetecture mismatch (32-bit and/or 64-bit).
Universal binary 32 &64 bit. Deployment target is 10.7. Runs on my iMac OSX 10.10.5. Others with the same OS are reporting errors. Very frustrating.
I think it's reading the image but there's a reference that it can't find (see below).
dlopen(/Library/Audio/Plug-Ins/Components/DrumGator.component/Contents/MacOS/DrumGator, 262): Library not loaded: /usr/lib/libc++.1.dylib Referenced from: /Library/Audio/Plug-Ins/Components/DrumGator.component/Contents/MacOS/DrumGator Reason: image not found
Why is it looking for /usr/lib/libc++.1.dylib and why is it not found? And why is this only a problem on the AU version?
Looks like I had changed C++ Language Standard to C++ 11 and C++ Library to LLVM libc++, which apparently only exists on OS X 10.10.5 or greater. I'm changing them back to Default to see if that fixes it.
You'r right. I'm getting reports of validation failure on that build too. Time to start digging. Does anyone know of a tool tht can check the dependencies of an executable and see if they actually exist on a given system? I can use the "otool" command to see what the dependencies are but it doesn't tell you if they are present. The only way to do that is to actually try and load the plugin I suppose but auval doesn't always tell you WHY a plugin didn't load, just that it was unable to open.
Symbol not found: __tlv_bootstrap Referenced from: /Library/Audio/Plug-Ins/Components/DrumGator.component/Contents/MacOS/DrumGator Expected in: /usr/lib/libSystem.B.dylib
From a customer using OS X 10.6.8 and LP 9.1.8
2015-10-23 00:40:18.788 auvaltool[351:a07] Error loading /Library/Audio/Plug-Ins/Components/DrumGator.component/Contents/MacOS/DrumGator: dlopen(/Library/Audio/Plug-Ins/Components/DrumGator.component/Contents/MacOS/DrumGator, 262): Symbol not found: __tlv_bootstrap
Referenced from: /Library/Audio/Plug-Ins/Components/DrumGator.component/Contents/MacOS/DrumGator
Expected in: /usr/lib/libSystem.B.dylib
in /Library/Audio/Plug-Ins/Components/DrumGator.component/Contents/MacOS/DrumGator
FATAL ERROR: OpenAComponent: result: 4294967246,0xFFFFFFCE
On my development system, I dumped the symbol table for libSystem.B.dylib, and I don't see the symbol __tlv_bootstrap, but my plugin runs just fine.
That's not a juce symbol, or anything from the AU framework as far as I know. Must be some kind of compiler-generated or standard-library symbol.. Maybe try googling it? Probably just means you need to tweak a build setting somewhere.
Google was not much help on that. To be honest, most customers don't get that error so I'm going to look elsewhere for now. Most customers who have run auval only get this
TESTING OPEN TIMES: COLD: FATAL ERROR: OpenAComponent: result: -1,0xFFFFFFFF validation result: couldn't be opened
with no indication of why the plug couldn't be opened. Funny this is that it runs fine on my Mac and validates perfectly, which some subset of custmers get validation errors. It this point I think I'm going to open a support ticket with Apple to see if they can provide any insight.
I had a couple of customers do a directory listing of the component folder and got some curious permissions.
drwxrwxrwx@ 6 plaiss staff 204 23 oct 12:34 Contents
/Library/Audio/Plug-ins/Components/DrumGator.component/Contents:
total 16
-rwxrwxrwx@ 1 plaiss staff 1221 23 oct 03:05 Info.plist
drwxrwxrwx@ 3 plaiss staff 102 23 oct 12:34 MacOS
-rwxrwxrwx@ 1 plaiss staff 9 23 oct 03:05 PkgInfo
drwxrwxrwx@ 4 plaiss staff 136 23 oct 12:34 Resources
/Library/Audio/Plug-ins/Components/DrumGator.component/Contents/MacOS:
total 9640
-rwxrwxrwx@ 1 plaiss staff 4934652 23 oct 03:05 DrumGator
/Library/Audio/Plug-ins/Components/DrumGator.component/Contents/Resources:
total 16
-rwxrwxrwx@ 1 plaiss staff 786 23 oct 03:05 DrumGator.rsrc
-rwxrwxrwx@ 1 plaiss staff 2842 23 oct 03:05 RecentFilesMenuTemplate.nib
Everything has rwxrwxrwx@, whereas on my system it's more like rwx-r--r-- for everything. Also notice the @ indicating extended attributes. I'm going to have them list the extended attributes as well to see if there are any clues there.
The deployment target is set to OS X 10.7. I understand that this may not work on older systems but the main problem is that it fails validation on 10.7 and newer. I have one or two customers who don't have this problem on 10.10.5 (including my development system) but most report validation failure. The missing symbol is only reported by a couple of users with 10.6.8, which is most likely caused by my deployment target setting and is therefore a separate issue. Since most users are on 10.7 and later, i want to solve that problem first. I sent several users a diagnostic script that runs auval and looks at the AU component area of the filesystem, the idea being to look for anything out of the ordinary. That's how I got some of the results I posted earler. In several cases, auval was unable to parse the Plist.info file but in some cases it just reports failure to open the component.
On getting more data from customers, it looks like OS X has quarantined my AU component. I'm guessing that either my executable, the installer, or both need to be signed using my Apple developer ID.
I was recently able to obtain another Mac on which I was able to reproduce the problem. It turns out that OS X was quarantining the plugin. However, after removing the quarantine, AU validation continues to fail with no indication of why. As a test I downloaded a copy of Reaper and Reaper loads and runs the AU just fine! Also, this particular Mac has an older version of GarageBand, which also runs the AU with no complaints. This just keeps getting more and more frustrating.
TESTING OPEN TIMES:
COLD:
Nov 10 21:44:08 Shannels-MacBook-Pro.local auvaltool[1239] <Warning>: CGSConnectionByID: 0 is not a valid connection ID.
Nov 10 21:44:08 Shannels-MacBook-Pro.local auvaltool[1239] <Warning>: CGSConnectionByID: 0 is not a valid connection ID.
Nov 10 21:44:08 Shannels-MacBook-Pro.local auvaltool[1239] <Warning>: CGSConnectionByID: 0 is not a valid connection ID.
Nov 10 21:44:08 Shannels-MacBook-Pro.local auvaltool[1239] <Warning>: Invalid Connection ID 0
FATAL ERROR: OpenAComponent: result: -1,0xFFFFFFFF