Re: Crash in ExtAudioFile API
Re: Crash in ExtAudioFile API
- Subject: Re: Crash in ExtAudioFile API
- From: LIN-PENG <email@hidden>
- Date: Tue, 20 Nov 2012 18:56:56 +0800
LING-PENG
在 2012-8-17,14:32,tahome izwah <email@hidden> 写道:
> From what I have learned EAF isn't thread safe (never was). You
> shouldn't be accessing the same EAF object from different threads
> unless you can be absolutely certain that the access is sequential
> (you could use @synchronized for this if you're using ObjC).
>
> --th
>
> 2012/8/16 patrick machielse <email@hidden>:
>> Our application uses ExtAudioFile to read (and subsequently process) audio files in background threads. Multiple files will typically be processed in parallel.
>>
>> Recently we received the a crash report from a user running our app on Mac OS X 10.8. It seems that the crash occured when ExtAudioFileOpenURL() and ExtAudioFileSetProperty(kExtAudioFileProperty_ClientDataFormat) were called at the same time (on different threads, for different files).
>>
>> Does this point to a problem in the framework, or is there something we could check for or do differently? We've not seen this type of crash before.
>>
>> Below the important bits from the crash report:
>>
>> OS Version: Mac OS X 10.8 (12A269)
>>
>> dyld: in dlopen()
>> /System/Library/Components/AudioCodecs.component/Contents/MacOS/AudioCodecs
>> *** error for object 0xcbda500: pointer being freed was not allocated
>>
>> Thread 13 Crashed:: Dispatch queue: com.apple.root.default-priority
>> 0 libsystem_kernel.dylib 0x95f2aa6a __pthread_kill + 10
>> 1 libsystem_c.dylib 0x93b20acf pthread_kill + 101
>> 2 libsystem_c.dylib 0x93b57508 abort + 168
>> 3 libsystem_c.dylib 0x93b39daf free + 428
>> 4 com.apple.CoreServices.CarbonCore0x95bf1768 DisposePtr + 36
>> 5 com.apple.DesktopVideoOut 0x0d5626cb DVOClose + 161
>> 6 com.apple.CoreServices.CarbonCore0x95cc3aeb callComponentStorage_44 + 25
>> 7 com.apple.CoreServices.CarbonCore0x95cb4acf CallComponentFunctionCommonWithStorage(char**, ComponentParameters*, long (*)(), unsigned long) + 45
>> 8 com.apple.CoreServices.CarbonCore0x95cb4b0f CallComponentFunctionWithStorageProcInfo + 30
>> 9 com.apple.DesktopVideoOut 0x0d5622e4 DVOComponentDispatch + 98
>> 10 com.apple.CoreServices.CarbonCore0x95c2eb1e CallComponent + 151
>> 11 com.apple.CoreServices.CarbonCore0x95c2eb78 CallComponentDispatch + 29
>> 12 com.apple.CoreServices.CarbonCore0x95cc1b17 CallComponentClose + 43
>> 13 com.apple.CoreServices.CarbonCore0x95c2dda7 CloseComponentInternal(ComponentInstanceRecord*) + 103
>> 14 com.apple.CoreServices.CarbonCore0x95c2e732 OpenAComponent + 520
>> 15 com.apple.CoreServices.CarbonCore0x95c2e522 OpenComponent + 24
>> 16 com.apple.CoreServices.CarbonCore0x95c2eb2b CallComponent + 164
>> 17 com.apple.CoreServices.CarbonCore0x95c2eb78 CallComponentDispatch + 29
>> 18 com.apple.CoreServices.CarbonCore0x95cc1b73 CallComponentVersion + 37
>> 19 com.apple.CoreServices.CarbonCore0x95c2df15 getComponentVersion(RegisteredComponent*) + 213
>> 20 com.apple.CoreServices.CarbonCore0x95c2b008 DestroyOlder(RegisteredComponent*, long) + 54
>> 21 com.apple.CoreServices.CarbonCore0x95c2af61 RegisterComponentResourcePtr + 708
>> 22 com.apple.CoreServices.CarbonCore0x95c2527e registerSystemComponents + 906
>> 23 com.apple.CoreServices.CarbonCore0x95c2d7b4 FindNextComponentInternal(ComponentRecord*, ComponentDescription*, unsigned long) + 60
>> 24 com.apple.CoreServices.CarbonCore0x95c2dfc0 FindNextComponent + 54
>> 25 com.apple.audio.toolbox.AudioToolbox0x911e13a7 AudioComponentMgr::FindNext(OpaqueAudioComponent*, AudioComponentDescription const*) + 65
>> 26 com.apple.audio.toolbox.AudioToolbox0x910f4b93 _AT_AudioComponentFindNext + 135
>> 27 com.apple.audio.toolbox.AudioToolbox0x91125693 ConverterRegistry::FindFormats(unsigned long, std::set<unsigned long, std::less<unsigned long>, std::allocator<unsigned long> >&) + 95
>> 28 com.apple.audio.toolbox.AudioToolbox0x91125713 ConverterRegistry::GetInputFormatsSet(std::set<unsigned long, std::less<unsigned long>, std::allocator<unsigned long> >&) + 93
>> 29 com.apple.audio.toolbox.AudioToolbox0x911257ce ConverterRegistry::GetInputFormatsSize() + 64
>> 30 com.apple.audio.toolbox.AudioToolbox0x911090d3 AudioFormatGetPropertyInfo + 93
>> 31 com.apple.audio.toolbox.AudioToolbox0x911d7b94 AudioFormatProperty_FirstPlayableFormatFromList(unsigned long, AudioFormatListItem*, unsigned long*) + 85
>> 32 com.apple.audio.toolbox.AudioToolbox0x9110a69a AudioFormatGetProperty + 2013
>> 33 com.apple.audio.toolbox.AudioToolbox0x9115dc4c ExtAudioFile::GetExistingFileInfo() + 206
>> 34 com.apple.audio.toolbox.AudioToolbox0x91156027 ExtAudioFileOpenURL + 122
>>
>>
>> Thread 1:: Dispatch queue: com.apple.root.default-priority
>> 0 dyld 0x8ff02586 pread$UNIX2003 + 10
>> 1 dyld 0x8fedf350 dyld::loadPhase6(int, stat const&, char const*, dyld::LoadContext const&) + 269
>> 2 dyld 0x8fee4be3 dyld::loadPhase5(char const*, char const*, dyld::LoadContext const&, std::__1::vector<char const*, std::__1::allocator<char const*> >*) + 1221
>> 3 dyld 0x8fee4704 dyld::loadPhase4(char const*, char const*, dyld::LoadContext const&, std::__1::vector<char const*, std::__1::allocator<char const*> >*) + 184
>> 4 dyld 0x8fee4600 dyld::loadPhase3(char const*, char const*, dyld::LoadContext const&, std::__1::vector<char const*, std::__1::allocator<char const*> >*) + 1671
>> 5 dyld 0x8fee3bf7 dyld::loadPhase1(char const*, char const*, dyld::LoadContext const&, std::__1::vector<char const*, std::__1::allocator<char const*> >*) + 154
>> 6 dyld 0x8fedf066 dyld::loadPhase0(char const*, char const*, dyld::LoadContext const&, std::__1::vector<char const*, std::__1::allocator<char const*> >*) + 227
>> 7 dyld 0x8fededc7 dyld::load(char const*, dyld::LoadContext const&) + 242
>> 8 dyld 0x8fee64ea dlopen + 435
>> 9 libdyld.dylib 0x966c9dbe dlopen + 68
>> 10 com.apple.CoreFoundation 0x927dfd10 _CFBundleDlfcnLoadBundle + 224
>> 11 com.apple.CoreFoundation 0x927d9ddc _CFBundleLoadExecutableAndReturnError + 684
>> 12 com.apple.CoreFoundation 0x92800dd0 CFBundleLoadExecutableAndReturnError + 32
>> 13 com.apple.audio.toolbox.AudioToolbox0x910f6280 AudioComponentPluginLoader::ResolveFactoryFunction(APComponent&) + 96
>> 14 com.apple.audio.toolbox.AudioToolbox0x910f6159 APComponent::NewInstance(ComponentInstanceRecord*&) + 61
>> 15 com.apple.audio.toolbox.AudioToolbox0x910f5f9a _AT_AudioComponentInstanceNew + 100
>> 16 com.apple.audio.toolbox.AudioToolbox0x91137526 CodecDecoderFactory::BuildCodecConverterChain(StreamDescPair const&, ChainBuildSettings const&, AudioConverterChain*, PCMConverterFactory*) + 360
>> 17 com.apple.audio.toolbox.AudioToolbox0x91124d80 ConverterRegistry::CreateConverter(StreamDescPair const&, AudioConverterChain**, unsigned long, AudioClassDescription const*) + 204
>> 18 com.apple.audio.toolbox.AudioToolbox0x910f1328 _AudioConverterNewInternal + 436
>> 19 com.apple.audio.toolbox.AudioToolbox0x910f116f AudioConverterNew + 47
>> 20 com.apple.audio.toolbox.AudioToolbox0x9115f524 ExtAudioFile::SetClientFormat(CAStreamBasicDescription const&, CAAudioChannelLayout const*) + 750
>> 21 com.apple.audio.toolbox.AudioToolbox0x91157117 ExtAudioFileSetProperty + 498
>>
>> Thanks,
>>
>> patrick
>> --
>> Patrick Machielse
>> Hieper Software
>>
>> http://www.hieper.nl
>> 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
_______________________________________________
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