This strongly suggests undefined behavior. If you don't understand what kind of threat that poses, you should learn immediately before writing another line of code.Fender19 wrote: Wed May 10, 2023 3:31 pm Well - to add to the frustration - I've asked some new beta testers to try the plugin in Logic on their M1 machines and - like here - it works! Validates and runs. No issues.
So now the bigger question - why does it PASS validation on some M1's but FAIL on others?
Logic Pro's AU "validation" nonsense
-
Super Piano Hater 64 Super Piano Hater 64 https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=491312
- KVRian
- 500 posts since 24 Jan, 2021
I hate signatures too.
-
- KVRian
- Topic Starter
- 641 posts since 30 Aug, 2012
That’s a little dramatic. I’m not writing code for defibrillators here. Logic itself has had magnitudes more issues than my plugins have ever had yet that hasn’t stopped Apple from”writing another line of code” and selling their latest whatever.Super Piano Hater 64 wrote: Wed May 10, 2023 6:58 pmIf you don't understand what kind of threat that poses, you should learn immediately before writing another line of code.
Maybe Apple should use some of that Developer Account fee I pay them every year to fix auval so it’s checks are reliable - and publish some info on what it’s error codes mean.
-
Super Piano Hater 64 Super Piano Hater 64 https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=491312
- KVRian
- 500 posts since 24 Jan, 2021
Me either. This isn't about some cyberheist scenario where Tom Cruise crawls through your ceiling. It's not even about crashes. All I'm talking about is whether your code does what it's "obviously" supposed to do, or some other seemingly random thing you definitely didn't intend.Fender19 wrote: Wed May 10, 2023 10:26 pm That’s a little dramatic. I’m not writing code for defibrillators here.
Other replies in this thread have offered you some thoughtful advice about how to try to solve your problem (EDIT: Removed the rest of this comment. I was being a jerk. That wasn't helpful and I'm sorry.)
Last edited by Super Piano Hater 64 on Thu May 11, 2023 3:15 pm, edited 1 time in total.
I hate signatures too.
- KVRAF
- 1752 posts since 2 Jul, 2018
What an over-aggressive and toxic comment...you should learn immediately before writing another line of code.
The issue is not necessarily the flaw fo Fender19.
Please do note that he is facing many problems that he is not resonsible for:
1) Broken development tools. It is not possible to debug auval since Catalina. Apple is resonsibe for this.
Reference: https://forums.steinberg.net/t/unable-t ... val/693455
2) A bug in AudioComponentRegistrar. Apple is responsible for this and did not fix things that are broken since 7 years (High Sierra). It affects hundrets of developers and tenthounsands (!) of end-users that had to reboot their Macs unnecessarily.
Reference: viewtopic.php?t=531117&hilit=killall
3) Missing/incomplete documentation. Apple (and Steinberg if he uses the VST SDK) is resonsible for this.
4) Possible bugs in the SDK (in this case Steinberg or the JUCE team would be responsible).
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
I've also been facing the same (?) problem as Fender19 two years ago. In my case I had to change the code for the setBusAttangeMents function to make my plugin pass Auval.
Old code that did not work (VST 3.7 SDK). The plugin did not pass auval without a reasonable error code:
Old code that did not work (VST 3.7 SDK). The plugin did not pass auval without a reasonable error code:
Fixed code:tresult PLUGIN_API T2Audio::setBusArrangements(SpeakerArrangement* inputs, int32 numIns,
SpeakerArrangement* outputs, int32 numOuts)
{
if (numIns == 0 && numOuts == 1 && outputs[0] == SpeakerArr::kStereo) return SingleComponentEffect::setBusArrangements(inputs, numIns, outputs, numOuts);
return kResultFalse;
}
tresult PLUGIN_API T2Audio::setBusArrangements(SpeakerArrangement* inputs, int32 numIns,
SpeakerArrangement* outputs, int32 numOuts)
{
return SingleComponentEffect::setBusArrangements(inputs, numIns, outputs, numOuts);
}
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
- 8487 posts since 12 Feb, 2006 from Helsinki, Finland
This one is arguably complete nonsense for a tool that serves no purpose other than to help devs.Markus Krause wrote: Thu May 11, 2023 7:08 am 1) Broken development tools. It is not possible to debug auval since Catalina. Apple is resonsibe for this.
Reference: https://forums.steinberg.net/t/unable-t ... val/693455
Code: Select all
(lldb) target create "/usr/bin/auval"
Current executable set to '/usr/bin/auval' (arm64e).
(lldb) run
error: process exited with status -1 (attach failed (Not allowed to attach to process. Look in the console messages (Console.app), near the debugserver entries, when the attach failed. The subsystem that denied the attach permission will likely have logged an informative message about why it was denied.))
-
Super Piano Hater 64 Super Piano Hater 64 https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=491312
- KVRian
- 500 posts since 24 Jan, 2021
Sorry folks. I was definitely way over the line. I've had my own frustrations with Apple and I know first-hand that expecting them to fix anything is like trying to lift up the sun. Bug reports just disappear. Too often, suffering and working around their mistakes is the only option, if there's any option at all.
I've also had loads of arguments with people who were flippant about UB, but that's no excuse to jump down someone's throat and I shouldn't have talked like that.
I've also had loads of arguments with people who were flippant about UB, but that's no excuse to jump down someone's throat and I shouldn't have talked like that.
I hate signatures too.
-
Zaphod (giancarlo) Zaphod (giancarlo) https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=111268
- KVRAF
- 2610 posts since 23 Jun, 2006
nevermind
-
machinesworking machinesworking https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=8505
- KVRAF
- 8025 posts since 15 Aug, 2003 from seattle
As a fly on the wall here, this makes me think we're looking at some sort of push from Apple sometime in the near future to make AUv3 the standard like Steinberg did with VST3. The end result being almost no difference at all between iOS and Mac OS. Makes me again wish CLAP had come around 15 odd years ago, by now all DAWs (barring Pro Tools and Logic) would support it.Markus Krause wrote: Mon May 08, 2023 7:05 am 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".
- KVRist
- 100 posts since 2 Jul, 2021 from Netherlands
With Logic being on iPad now, Apple might hope this encourages developers to use AUv3 on Mac too, since that makes projects portable between devices. We'll probably get some news about this at the upcoming WWDC.
My audio programming blog: https://audiodev.blog
-
Zaphod (giancarlo) Zaphod (giancarlo) https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=111268
- KVRAF
- 2610 posts since 23 Jun, 2006
Side question: a problem I'm not entirely sure about because I haven't had time to investigate, it seems that on iOS you can't run libraries dynamically (runtime loading, i.e., not statically linked like a framework). We need this feature. Does anyone have clear ideas or solutions on this topic? For consistency with the Windows platform, we absolutely need to load signed dylibs at runtime variably (we can also notarize, that's not an issue). We can't statically link frameworks or executables. Is this a problem?kerfuffle wrote: Fri May 12, 2023 8:59 am With Logic being on iPad now, Apple might hope this encourages developers to use AUv3 on Mac too, since that makes projects portable between devices. We'll probably get some news about this at the upcoming WWDC.
-
- KVRian
- Topic Starter
- 641 posts since 30 Aug, 2012
FYI - we have since found and fixed the problem reported in this thread. Turns out it had NOTHING to do with the error reported by auval on M1 ("Problem with initial Channel layout state"). It was caused by a call to clear an FIR filter that - for some reason - was instantiated at a different time on M1/Arm Mac than on x86 Mac. That FIR filter is internal to our DSP code and does not interface with channel I/O. The "bug" did not cause any operational issues but, as some suggested here, could have been a latent failure in wait.
Auval on x86 Mac did not report ANY issues with the plugin but Tracktion's "Pluginval" tool did (although without much direction on possible cause). We sent an email commending and thanking Tracktion for their superior error detection as it at least gave us a "red flag". (We initially thought Pluginval was giving us bad info but it was actually auval giving us bad info).
We worked backwards - commenting out lines of code - until we found the bad spot, again checking with Tracktion's Pluginval tool. We moved that line of code elsewhere and problem solved. It now validates everywhere including Logic on M1/Arm.
Thanks to everyone here for your inputs and suggestions. Debugging this stuff - especially on Macs - can be a real bear.
Auval on x86 Mac did not report ANY issues with the plugin but Tracktion's "Pluginval" tool did (although without much direction on possible cause). We sent an email commending and thanking Tracktion for their superior error detection as it at least gave us a "red flag". (We initially thought Pluginval was giving us bad info but it was actually auval giving us bad info).
We worked backwards - commenting out lines of code - until we found the bad spot, again checking with Tracktion's Pluginval tool. We moved that line of code elsewhere and problem solved. It now validates everywhere including Logic on M1/Arm.
Thanks to everyone here for your inputs and suggestions. Debugging this stuff - especially on Macs - can be a real bear.
-
- KVRian
- Topic Starter
- 641 posts since 30 Aug, 2012
It appears Apple has monkeyed with this once again. Plugins we published just a few months ago immediately showed up in Logic after being installed. The plugin being discussed in this thread - that we just compiled and released a week ago - requires REBOOT before it shows up in Logic.Markus Krause wrote: Thu May 11, 2023 7:08 am 2) A bug in AudioComponentRegistrar. Apple is responsible for this and did not fix things that are broken since 7 years (High Sierra). It affects hundrets of developers and tenthounsands (!) of end-users that had to reboot their Macs unnecessarily.
Reference: viewtopic.php?t=531117&hilit=killall
WE did not change anything. This plugin was cloned from a previous plugin and used all the same compiler settings, signing and notarization settings, etc. So, it appears Apple changed/broke something again in AU registration (via recent updates to Xcode or OSs).
- KVRist
- 362 posts since 1 Apr, 2009 from Hannover, Germany
You're describing the very problem with undefined behavior: making assumptions not guaranteed by the standard about the behavior of the program (e.g. initialization order), which can cause all kinds of (often unrelated and hard to debug) failures. You should consider it a fully qualified bug, even when it doesn't cause operational issues. These things tend to fall on your feet unexpectedly (unrelated code change, compiler change, change of API behavior in line with specs).Fender19 wrote: Tue May 16, 2023 12:27 am FYI - we have since found and fixed the problem reported in this thread. Turns out it had NOTHING to do with the error reported by auval on M1 ("Problem with initial Channel layout state"). It was caused by a call to clear an FIR filter that - for some reason - was instantiated at a different time on M1/Arm Mac than on x86 Mac. That FIR filter is internal to our DSP code and does not interface with channel I/O. The "bug" did not cause any operational issues but, as some suggested here, could have been a latent failure in wait.
-
- KVRian
- Topic Starter
- 641 posts since 30 Aug, 2012
Nothing is guaranteed by the standards. DAWs all have their own interpretation/implementation of the various plugin specs, sometimes even within brands. For example, Steinberg's Wavelab handles VST plugins differently than Steinberg's Cubase and Nuendo; Cakewalk and FL Studio load/display the plugin UI and DSP in different order than most other DAWs; Reaper is quite robust and will run plugins that crash other DAWs; Pro Tools is it's own "thing" and so is Logic Pro/Apple AU.
Out of all the formats, the plugin issue that inspired this thread ONLY occurred in Logic Pro and ONLY on M1. It was literally one "bad Apple" out of hundreds of other good combinations. When a situation like that arises, yes, we jump to an assumption as to the source of the problem. Did we ultimately fix a global issue? Maybe. Did any other DAW care? No.
