I'm getting Crashlytics crashes from some my users, deep in the Apple code:
Crashed: AXSpeech
EXC_BAD_ACCESS KERN_INVALID_ADDRESS 0x00000007ec54b360
0 libobjc.A.dylib 0x3c9c objc_retain_x8 + 16
1 AudioToolboxCore 0x99580 auoop::RenderPipeUser::~RenderPipeUser() + 112
2 AudioToolboxCore 0xe6090 -[AUAudioUnit_XPC internalDeallocateRenderResources] + 92
3 AVFAudio 0x90a0 AUInterfaceBaseV3::Uninitialize() + 60
4 AVFAudio 0x4cbe0 AVAudioEngineGraph::PerformCommand(AUGraphNodeBaseV3&, AVAudioEngineGraph::ENodeCommand, void*, unsigned int) const + 768
5 AVFAudio 0x56b0c AVAudioEngineGraph::_Uninitialize(NSError**) + 132
6 AVFAudio 0x7834 AVAudioEngineImpl::Stop(NSError**) + 388
7 AVFAudio 0x636c -[AVAudioEngine dealloc] + 52
8 TextToSpeech 0x30674 _TTSNameForVoiceInformation + 20864
9 libobjc.A.dylib 0x20a4 object_cxxDestructFromClass(objc_object*, objc_class*) + 116
10 libobjc.A.dylib 0x6e00 objc_destructInstance + 80
11 libobjc.A.dylib 0x104fc _objc_rootDealloc + 80
12 TextToSpeech 0x2d2f4 _TTSNameForVoiceInformation + 7680
13 TextToSpeech 0x496c TTSVocalizerCopyURLForFallbackResource + 8540
14 TextToSpeech 0x26094 TTSSpeechUnitTestingMode + 5548
15 libAXSpeechManager.dylib 0x108b0 -[AXSpeechManager .cxx_destruct] + 192
16 libobjc.A.dylib 0x20a4 object_cxxDestructFromClass(objc_object*, objc_class*) + 116
17 libobjc.A.dylib 0x6e00 objc_destructInstance + 80
18 libobjc.A.dylib 0x104fc _objc_rootDealloc + 80
19 libAXSpeechManager.dylib 0x5298 -[AXSpeechManager dealloc] + 268
20 Foundation 0x3b8a4 __NSThreadPerformPerform + 272
21 CoreFoundation 0xd3208 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 28
22 CoreFoundation 0xdf864 __CFRunLoopDoSource0 + 176
23 CoreFoundation 0x646c8 __CFRunLoopDoSources0 + 244
24 CoreFoundation 0x7a1c4 __CFRunLoopRun + 828
25 CoreFoundation 0x7f4dc CFRunLoopRunSpecific + 612
26 Foundation 0x420c4 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 212
27 libAXSpeechManager.dylib 0x13390 -[AXSpeechThread main] + 552
28 Foundation 0x5b634 __NSThread__start__ + 716
29 libsystem_pthread.dylib 0x16b8 _pthread_start + 148
30 libsystem_pthread.dylib 0xb88 thread_start + 8
It's most likely related to my use of AVSpeechSynthesizer. I do change some of the utterance fields, including the voice that's being used (which is set to a value from speechVoices()).
UtilAudioIos_tts = AVSpeechSynthesizer()
let utterance = AVSpeechUtterance
utterance.voice = AVSpeechSynthesisVoice(identifier: voice.voiceCode)
utterance.volume = volume
utterance.pitchMultiplier = pitch
utterance.rate = rate
UtilAudioIos_tts!.speak(utterance)
By coincidence or not, the following sometimes appears in the device log:
2023-05-30 20:35:29.948078+0100 <appname>[466:12882] [catalog] Unable to list voice folder
and also, sometimes:
2023-05-30 20:37:35.345933+0100 <appname>[466:13298] [catalog] Query for com.apple.MobileAsset.VoiceServices.VoiceResources failed: 2
2023-05-30 20:37:35.360854+0100 rehearserfree[466:13433] [AXTTSCommon] MauiVocalizer: 11006 (Can't compile rule): regularExpression=\Oviedo(?=, (\x1b\\pause=\d+\\)?Florida)\b, message=unrecognized character follows \, characterPosition=1
2023-05-30 20:37:35.363163+0100 <appname>[466:13433] [AXTTSCommon] MauiVocalizer: 16038 (Resource load failed): component=ttt/re, uri=, contentType=application/x-vocalizer-rettt+text, lhError=88602000
2023-05-30 20:37:35.363182+0100 <appname>[466:13433] [AXTTSCommon] Error loading rules: 2147483648
All of these crashes have been on the various versions of iOS 16.
Edit: I can't reproduce the crash myself - it's just some (not all) app users. The log entries above appear locally on my device (with no crash) but I can't see the logs of the users who have the crashes.
Any idea what this might be caused by, or how to go about tracking the problem down?