Logic Pro's AU "validation" nonsense
-
- KVRian
- 641 posts since 30 Aug, 2012
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?
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?
- KVRist
- 362 posts since 1 Apr, 2009 from Hannover, Germany
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.
-
- KVRAF
- 5200 posts since 17 Aug, 2004
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?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).
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.
- KVRist
- 362 posts since 1 Apr, 2009 from Hannover, Germany
Tell me you've never written any software (and have never heard the term "undefined behavior" before), without telling me...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?
- KVRAF
- 1752 posts since 2 Jul, 2018
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
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.
Our award-winning synthesizers offer true high-end sound quality.
- KVRist
- 100 posts since 2 Jul, 2021 from Netherlands
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
- KVRAF
- 1752 posts since 2 Jul, 2018
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").
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").
https://www.tone2.com
Our award-winning synthesizers offer true high-end sound quality.
Our award-winning synthesizers offer true high-end sound quality.
-
- KVRAF
- 7579 posts since 17 Feb, 2005
auval invalid since 8 years ago. Do plugins even exist on this platformMarkus Krause wrote: Mon May 08, 2023 7:05 am auval itself is broken for AUv2 plugins since 8(?) years.
- KVRist
- 100 posts since 2 Jul, 2021 from Netherlands
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
- KVRAF
- 1752 posts since 2 Jul, 2018
@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
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.
Our award-winning synthesizers offer true high-end sound quality.
- KVRAF
- 1752 posts since 2 Jul, 2018
Not necessarily. It can also crash without any reasonable feedback at all.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.
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.
Our award-winning synthesizers offer true high-end sound quality.
- KVRist
- 100 posts since 2 Jul, 2021 from Netherlands
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.)
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
- KVRist
- 486 posts since 2 Feb, 2005 from UK
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...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.
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 resetVST/AU Developer for Hire
- KVRist
- 486 posts since 2 Feb, 2005 from UK
Lind0n wrote: Mon May 08, 2023 3:05 pmActually 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...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.
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
-
- KVRian
- Topic Starter
- 641 posts since 30 Aug, 2012
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.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.
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)?
