Re: Crash in ExtAudioFile API
Re: Crash in ExtAudioFile API
- Subject: Re: Crash in ExtAudioFile API
- From: tahome izwah <email@hidden>
- Date: Fri, 17 Aug 2012 08:32:45 +0200
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