AU Validation Crash Passing all tests?

Hello guys,

I’m building a plugin in AU / VST / VST3, everything compiles and works perfectly in every format on Reaper (AU too).
On Logic Pro 10.4 tho, it can’t pass the AU validation check and then crashes the DAW, even if every single test seems to be fine.
What could it be? Initialization problems?

Here’s the Log:

AU Validation Tool
Version: 1.6.1a1
Copyright 2003-2013, Apple Inc. All Rights Reserved.
Specify -h (-help) for command options

--------------------------------------------------
VALIDATING AUDIO UNIT: 'aumf' - 'Ocae' - 'Manu'
--------------------------------------------------
Manufacturer String: stocAudio
AudioUnit Name: Chiavika
Component Version: 1.0.0 (0x10000)

* * PASS
--------------------------------------------------
TESTING OPEN TIMES:
COLD:
Time to open AudioUnit:         17.586 ms
WARM:
Time to open AudioUnit:         1.890  ms
FIRST TIME:
Time for initialization:        0.892 ms

* * PASS
--------------------------------------------------
VERIFYING DEFAULT SCOPE FORMATS:
Input Scope Bus Configuration:
 Default Bus Count:1
 Bus Name: Input
 Default Format: AudioStreamBasicDescription:  2 ch,  44100 Hz, 'lpcm' (0x00000029) 32-bit             little-endian float, deinterleaved

Output Scope Bus Configuration:
Default Bus Count:1
Bus Name: Output
Default Format: AudioStreamBasicDescription:  2 ch,  44100 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved

* * PASS
--------------------------------------------------
VERIFYING REQUIRED PROPERTIES:

* * PASS
--------------------------------------------------
VERIFYING RECOMMENDED PROPERTIES:
 VERIFYING PROPERTY: Latency
PASS
 VERIFYING PROPERTY: Tail Time
PASS
 VERIFYING PROPERTY: Bypass Effect
 PASS

* * PASS
--------------------------------------------------
VERIFYING OPTIONAL PROPERTIES:

* * PASS
--------------------------------------------------
VERIFYING SPECIAL PROPERTIES:

VERIFYING CUSTOM UI
Cocoa Views Available: 1
  JUCE_AUCocoaViewClass_847bc4f8db66d97f
    PASS

HAS FACTORY PRESETS

VERIFYING CLASS INFO
PASS

TESTING HOST CALLBACKS
    PASS

* * PASS
--------------------------------------------------
PUBLISHED PARAMETER INFO:

# # # 16 Global Scope Parameters:

* * PASS
--------------------------------------------------
FORMAT TESTS:

Reported Channel Capabilities (explicit):
      [1, 1]  [1, 2]  [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                                   X                                                                       

* * PASS
--------------------------------------------------
RENDER TESTS:

Input Format: AudioStreamBasicDescription:  2 ch,  44100 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved
Output Format: AudioStreamBasicDescription:  2 ch,  44100 Hz, 'lpcm' (0x00000029) 32-bit little-endian float, deinterleaved
Render Test at 512 frames
Slicing Render Test at 64 frames
  PASS


Render Test at 64 frames, sample rate: 22050 Hz
Render Test at 137 frames, sample rate: 96000 Hz
Render Test at 4096 frames, sample rate: 48000 Hz
Render Test at 4096 frames, sample rate: 192000 Hz
Render Test at 4096 frames, sample rate: 11025 Hz
Render Test at 512 frames, sample rate: 44100 Hz
  PASS

1 Channel Test:
Render Test at 512 frames


validation result: crashed validation

That’s why you’ve got a debugger :wink:
just copy the auval (How to debug auval?) and start debugging…

1 Like

Thank you, that was useful!

I managed to get auvaltool going and tried to check whats wrong in different ways. The only error I’m seeing is:

`/usr/bin/auval: line 8:  1619 Segmentation fault: 11  arch -x86_64 /usr/bin/auvaltool "$@" `

Does this mean that there’s probably a problem in writing buffers out of boundaries?
Is there a way to get a more specific error line?
I never really used a debugger (not of this kind at least) :sweat_smile:

You did start the auvaltool in the debugger, i.e. in XCode?
When you see the crash, you also get a call stack, so you see, where the code was called from, that crashed. You step out until you find code, that you recognise, and you can check the value of the variables at the time the crash happened.
Usually after some digging, you find something, that can’t work, could be an index out of bounds, a division by 0, or whatever could go wrong…
Or sometimes a jassert() with a comment, that explains it…

If you get stuck on XCode Debuging just let me know and I could make a video on how I debug. :slight_smile:

If you feel so inclined I would heartily recommend this. It took me far longer than it should have to know how to go about debugging with XCode as a noob to plugin development, and I didn’t manage to find anything helpful to explain it, I think I just stumbled across an answer to something completely unrelated that pointed me in the right direction.

Deal, tomorrow I will be live on twitch doing the video. If my internet fails, I will just record it and upload later, them I will post here. Sorry I can’t do today, my mother-in-law is here. :wink:

2 Likes

Thank you very much, I really think I need that

My mother in law was here until today, so I didn’t do the video since that. I should be able to come up with something later today. :slight_smile:

1 Like

You should have given her a cameo in the video :wink:

Don’t worry, you’ll have at least one person watching the video live for sure.

I tried in many ways to set up the debugger in XCode, attaching the process from product/edit scheme, adding flags and stuff but literally nothing happens after building (it launches auvaltool and says it completes but no output on console or anywhere else).

Don’t forget to turn off ALL Optimizations so Debug works. It was the first mistake I did. :wink:

Any updates on this. I cannot attach to auvaltool either…

@Danjeli, did you check the thread @ttg posted?
TL;DR: you have to copy the binary auvaltool to a different location, because of some obscure security mechanism

I tried copying auvaltool to /Applications and attaching but it just gives me:

Message from debugger: unable to attach

no other info :confused:

Copy it to your home folder :slight_smile:

PS One thing that can catch you out with auvaltool is that it changes sample rate and blocksize during the tests, which doesn’t happen so often in a host…

I think this is a problem on this particular mac machine I’m using.
It’s mac osx mojave, xcode Version 10.1 (10B61)
I can attach with earlier MacOS versions.
If anyone has solved this, it would be good to know for “the future”

1 Like

@Danjeli if @jimc’s suggestion of moving auvaltool doesn’t work you could try turning off SIP (https://www.imore.com/how-turn-system-integrity-protection-macos) - if that still doesn’t work then that does sound a little concerning.

I fixed mine on the latest MacOS by resigning the auvaltool in my home directory with my own Developer Id.

jim@murph ~
 $ codesign -fs "Developer ID" ./auvaltool
./auvaltool: replacing existing signature
9 Likes

jimc you legend. without that copied auvaltool was not debuggable for me. accumulating notes here Plugin Dev Notes · GitHub

2 Likes