Re: Bug in auval ?
Re: Bug in auval ?
- Subject: Re: Bug in auval ?
- From: William Stewart <email@hidden>
- Date: Tue, 25 May 2010 09:57:12 -0700
Hi Antoine
A couple of things:
On May 25, 2010, at 9:09 AM, Antoine Missout wrote:
> Nevermind,
>
> AUComponent.h:193 says 0-1023 is reserved.
All I can find here is this:
Type used for audio unit scopes. Apple reserves the 0 < 1024 range for audio unit scope identifiers.
but this is referring to IDs used for scopes, not for property IDs. Am I missing another reference?
> (However, AudioUnitProperties.h:701 says "range (0 -> 999)" which informally implies the reserved range is up to 999, hence my error).
// range (0 -> 999)
generic AU properties
Have a look through AudioUnitProperties.h for the string "range", you will see the following:
Apple reserves property IDs from 0 -> 63999. Developers are free to use property IDs above this range.
there are also the following:
// range (1000 -> 1999)
music device properties
// range (2000 -> 2999)
output unit properites
// range (3020->3040)
offline audio units
// range (3060->3999)
3d mixer
// range (4000->4020)
miscellaneous
>
> Problem fixed, thanks!
> - Antoine
>
>
>
>
> On 2010-05-25, at 12:03 PM, Antoine Missout wrote:
>
>> Hi Bill,
>>
>> It is 1005. Which is indeed used by kAudioUnitProperty_UsesInternalReverb. What is the safe range of values for custom properties ?
>>
>> Regards,
>> Antoine
>>
>> On 2010-05-24, at 8:01 PM, William Stewart wrote:
>>
>>> auval knows nothing about the property "kLevelsPropertyID" - that looks like a custom property ID to me? As it knows nothing about the property though, it can't be the one that is calling it.
>>>
>>> So, what is the property ID value of "kLevelsPropertyID". I suspect that you are overlapping with another property ID that is a system one
>>>
>>> Bill
>>>
>>> On May 24, 2010, at 7:14 AM, Antoine Missout wrote:
>>>
>>>> Hi all,
>>>>
>>>> Using auval with guard malloc (export DYLD_FORCE_FLAT_NAMESPACE=1; export DYLD_INSERT_LIBRARIES=/usr/lib/libgmalloc.dylib; export MALLOC_VECTOR_SIZE=1), my audiounit consistently crashes in GetProperty.
>>>>
>>>> At the end of the email is the relevant code. The property is 48 bytes long, but auval only mallocs 16 bytes as can be seen from the log & crash report. If I comment the memcpy, everything validates fine.
>>>>
>>>> It used to validate fine. Is there anything else I should do to ensure auval allocates the correct number of bytes ?
>>>>
>>>> Thanks in advance,
>>>> - Antoine
>>>>
>>>> (full code is at http://code.google.com/p/octogris/ )
>>>>
>>>> ===============================================================
>>>>
>>>> VALIDATING AUDIO UNIT: 'aufx' - '1212' - 'UDMG'
>>>> --------------------------------------------------
>>>> Manufacturer String: UDM
>>>> AudioUnit name: Octogris 12x12
>>>> [...]
>>>> VERIFYING PROPERTY Host Callbacks
>>>> PASS
>>>> makmak: 48
>>>> makmak: 48
>>>> makmak: 0x1c675ff0
>>>>
>>>> ===============================================================
>>>>
>>>> Exception Type: EXC_BAD_ACCESS (SIGBUS)
>>>> Exception Codes: KERN_PROTECTION_FAILURE at 0x000000001c676000
>>>> Crashed Thread: 0 Dispatch queue: com.apple.main-thread
>>>> Thread 0 Crashed: Dispatch queue: com.apple.main-thread
>>>> 0 com.udm.Octogris 0x0127edc9 Octogris<12, 12>::GetProperty(unsigned long, unsigned long, unsigned long, void*) + 227 (Octogris.cpp:506)
>>>>
>>>> ===============================================================
>>>>
>>>> template<int mNumberOfSources, int mNumberOfSpeakers>
>>>> OSStatus Octogris<mNumberOfSources, mNumberOfSpeakers>::GetPropertyInfo (AudioUnitPropertyID inID,
>>>> AudioUnitScope inScope,
>>>> AudioUnitElement inElement,
>>>> UInt32 & outDataSize,
>>>> Boolean & outWritable)
>>>> {
>>>> if (inScope == kAudioUnitScope_Global)
>>>> {
>>>> switch (inID)
>>>> {
>>>> [...]
>>>>
>>>> case kLevelsPropertyID:
>>>> outWritable = false;
>>>> outDataSize = sizeof (float) * mNumberOfSpeakers;
>>>> printf("makmak: %d\n", (int)outDataSize);
>>>> return noErr;
>>>>
>>>> [...]
>>>> }
>>>> }
>>>>
>>>> return AUEffectBase::GetPropertyInfo (inID, inScope, inElement, outDataSize, outWritable);
>>>> }
>>>>
>>>> //------------------------------------------------------------------------------------------
>>>> template<int mNumberOfSources, int mNumberOfSpeakers>
>>>> OSStatus Octogris<mNumberOfSources, mNumberOfSpeakers>::GetProperty( AudioUnitPropertyID inID,
>>>> AudioUnitScope inScope,
>>>> AudioUnitElement inElement,
>>>> void * outData )
>>>> {
>>>> if (inScope == kAudioUnitScope_Global)
>>>> {
>>>> switch (inID)
>>>> {
>>>> [...]
>>>>
>>>> case kLevelsPropertyID:
>>>> printf("makmak: %p\n", outData);
>>>> memcpy(outData, mLevels, sizeof (float) * mNumberOfSpeakers);
>>>> return noErr;
>>>>
>>>> [...]
>>>> }
>>>> }
>>>>
>>>>
>>>> return AUEffectBase::GetProperty (inID, inScope, inElement, outData);
>>>> } _______________________________________________
>>>> Do not post admin requests to the list. They will be ignored.
>>>> Coreaudio-api mailing list (email@hidden)
>>>> Help/Unsubscribe/Update your Subscription:
>>>>
>>>> This email sent to email@hidden
>>>
>>
>> _______________________________________________
>> Do not post admin requests to the list. They will be ignored.
>> Coreaudio-api mailing list (email@hidden)
>> Help/Unsubscribe/Update your Subscription:
>>
>> This email sent to email@hidden
>
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Coreaudio-api mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden