Logic Pro's AU "validation" nonsense

DSP, Plugin and Host development discussion.
RELATED
PRODUCTS

Post

Why does an Audio Unit plugin, that works perfectly fine in other DAWs, sometimes fail "validation" and refuse to load at all in Logic Pro? There are hundreds of pages about this issue on Google.

And why does the Plugin Manager in the latest versions of Logic allow overriding a "failed validation" and let the plugin run anyway - often without any problems whatsoever?

IMO, this doesn't make sense. Either Logic's AU plugin "validation" checking is excessive or it's broken.

Can anyone explain this?

Post

Failing auval sporadically is a strong hint that your plugin has a bug, probably some kind of undefined behavior (that means, if you say it works "perfectly fine", it only does so by accident). Validators like auval or pluginval also test unlikely edge cases, which are the worst kind to debug if you only get very rare and hard to reproduce reports from customers. It not there to annoy developers, but help them build a stable and reliable product.

Post

hugoderwolf wrote: Mon May 08, 2023 6:46 am Failing auval sporadically is a strong hint that your plugin has a bug, probably some kind of undefined behavior (that means, if you say it works "perfectly fine", it only does so by accident).
What an absurd response. Coming from a developer. If there's an undefined behavior how did anyone define it in the plugin validator in order to detect plugins not passing validation in the first place?

But more absurd is that the plugin works perfectly fine by accident. So basically the logic(pun intended) or the premise behind this is: a plugin works fine in all other DAWs but it fails "validation" in Logic - it must be plugin fault.

Yeah, that makes sense.

Especially when you add the premise that plugins work by accident. :clap:

Post

kmonkey wrote: Mon May 08, 2023 6:54 am What an absurd response. Coming from a developer. If there's an undefined behavior how did anyone define it in the plugin validator in order to detect plugins not passing validation in the first place?
Tell me you've never written any software (and have never heard the term "undefined behavior" before), without telling me... :tu:

Post

audiounit detection is broken for AUv2 plugins since 8(?) years.

It either
- requires a reboot to detect recently installed audiounits
or
- an ugly script in the installer that kills a process
viewtopic.php?p=7513625&hilit=killall#p7513625

The issue is known to Apple. I had a conversation with one of their developers a few years ago and he said they won't fix it as AUv2 is "deprecated".

Further possible issues with it that you should know:
- Since Big Sur it is not longer possible to debug auval without seriously messing around with system security
- caching problems
- It fails when code-signing is missing
- It behaves differently when you run it in Intel vs M1 mode
Last edited by Markus Krause on Mon May 08, 2023 11:41 am, edited 1 time in total.
https://www.tone2.com
Our award-winning synthesizers offer true high-end sound quality.

Post

The "requires a reboot to detect recently installed audiounits" isn't necessarily auval's fault, though, but something in macOS's component registrar.
My audio programming blog: https://audiodev.blog

Post

I did not investigate further on the details why exactly this happens. Fact is that Apple is responsible for the wonky auval as well the broken component registrar (since High Sierra). And they refuse to fix it .
The sad result affects end-cutomers as well developers: The AudioUnit ecosystem does not work as expected and is not as reliable as many competing plugin formats. This results in frustrated customers, frustrated developers and additional costs for support ("Logic can't find my plugin"). :party:
https://www.tone2.com
Our award-winning synthesizers offer true high-end sound quality.

Post

Markus Krause wrote: Mon May 08, 2023 7:05 am auval itself is broken for AUv2 plugins since 8(?) years.
auval invalid since 8 years ago. Do plugins even exist on this platform :lol: What the hell is wrong!

Post

At the very least, auval prints out a log of what it is doing, which makes it possible to see where the plug-in fails. If you have an example of an actual plug-in that fails validation, paste the log here and we can help pinpoint why it fails.
My audio programming blog: https://audiodev.blog

Post

@camsr: invalid is not the right term. Detecting recently installed Audiounit v2 plugins does not work in a reliable way since High Sierra. It requires a reboot or an ugly hack.
I am also wondering how they can get away with this so easily. I assume because end-users first contact the support of the plugin developers because they think there is something wrong with the plugin
https://www.tone2.com
Our award-winning synthesizers offer true high-end sound quality.

Post

kerfuffle wrote: Mon May 08, 2023 11:45 am At the very least, auval prints out a log of what it is doing, which makes it possible to see where the plug-in fails. If you have an example of an actual plug-in that fails validation, paste the log here and we can help pinpoint why it fails.
Not necessarily. It can also crash without any reasonable feedback at all.
It took me lots of trial and error to find out that "auval crashed. Error #FFFFFF7" is caused by a missing code signature
https://www.tone2.com
Our award-winning synthesizers offer true high-end sound quality.

Post

Sure, it would be better if auval could intercept crashes rather than just crash, but a crash code still gives information (even if it's not immediately obvious).

Arguably, code signing issues are not auval's fault either but the OS killing auval when it tries to load an unsigned framework. This is not a case of auval behaving badly, which is what the OP was claiming.

(FWIW, I agree that Apple should fix the component registrar thing. One possible reason they haven't is that many plug-in installers perform that post install script hack so most users will never run into this issue.)
My audio programming blog: https://audiodev.blog

Post

kerfuffle wrote: Mon May 08, 2023 11:45 am At the very least, auval prints out a log of what it is doing, which makes it possible to see where the plug-in fails. If you have an example of an actual plug-in that fails validation, paste the log here and we can help pinpoint why it fails.
Actually in my experience it tells me what its done (and passed) but gives me little information about what it is currently testing and failing....which is a s close to useless it can be without actually being useless...

for instance here I've clearly forgotten to identify a meta parameter , but which one???

Code: Select all

ParameterID=181449014, Scope=0, Element=0: Saved Value = 0.240000, Current Value 0.296000
ERROR: Parameter values are different since last set - probable cause: a Meta Param Flag is NOT set on a parameter that will change values of other parameters.
Cannot perform Parameter Value check across initialization and reset
VST/AU Developer for Hire

Post

Lind0n wrote: Mon May 08, 2023 3:05 pm
kerfuffle wrote: Mon May 08, 2023 11:45 am At the very least, auval prints out a log of what it is doing, which makes it possible to see where the plug-in fails. If you have an example of an actual plug-in that fails validation, paste the log here and we can help pinpoint why it fails.
Actually in my experience it tells me what its done (and passed) but gives me little information about what it is currently testing and failing....which is a s close to useless it can be without actually being useless...

for instance here I've clearly forgotten to identify a meta parameter , but which one??? (the id number its showing me is nothing like any id I have in my plugin...)

Code: Select all

ParameterID=181449014, Scope=0, Element=0: Saved Value = 0.240000, Current Value 0.296000
ERROR: Parameter values are different since last set - probable cause: a Meta Param Flag is NOT set on a parameter that will change values of other parameters.
Cannot perform Parameter Value check across initialization and reset
VST/AU Developer for Hire

Post

kerfuffle wrote: Mon May 08, 2023 11:45 am At the very least, auval prints out a log of what it is doing, which makes it possible to see where the plug-in fails. If you have an example of an actual plug-in that fails validation, paste the log here and we can help pinpoint why it fails.
I just released a plugin that validates and runs in Logic 10.7.1 on Monterey but FAILS in Logic 10.7.7 in Ventura.

Here is the section that FAILED in Logic 10.7.7:

Code: Select all

Reported Channel Capabilities (explicit):
      [1, 1]  [2, 2] 

Input/Output Channel Handling:
1-1   1-2   1-4   1-5   1-6   1-7   1-8   2-2   2-4   2-5   2-6   2-7   2-8   4-4   4-5   5-5   6-6   7-7   8-8
X                                         X                                                                       

# # AudioChannelLayouts (2), Input Scope:
ChannelLayout is Writable: T
The Unit publishes the following Channel Layouts:
  0x640001, 0x650002,

Is Audio Channel Layout Available:
Mono    Stereo  Binau.  AU_4    Ambi.   AU_5    AU_5_0  AU_6    AU_6_0  AU_7_0  AU_7_0F AU_8    AU_5_1  AU_6_1  AU_7_1  AU_7_1F
X       X                                                                                                                       
ERROR: 4099 IN CALL Problem with initial Channel layout state

* * FAIL
--------------------------------------------------
AU VALIDATION FAILED: CORRECT THE ERRORS ABOVE.


The entire test PASSED in Logic 10.7.1 on Monterey (also passed on Catalina and Big Sur in x86 Mac).

Any idea what is causing this issue in 10.7.7? I don't understand the "problem with initial channel layout state" because I don't see anything wrong in the report. It's a simple mono in/mono out, stereo in/stereo out plugin and all the "Xs" show that. Logic 10.7.7 allows you to run the plugin anyway AND IT WORKS - so why does it fail validation there (and not elsewhere)?

Post Reply

Return to “DSP and Plugin Development”