Pressing End&Answer button on reception of second audio call results in no audio

Originator:artem.bazarkin
Number:rdar://49726681 Date Originated:09.04.2019
Status:Open Resolved:
Product:iOS+SDK Product Version:iOS12
Classification:Bug Reproducible:Always
 
To reproduce, Apple's SpeakerBox demo application needs to be modified to simulate CPU load by adding these lines of code into CallViewController viewDidLoad:

// MARK: simulate CPU load, 15 threads to reliably reproduce the issue
for _ in 1..<15 {
	Thread.detachNewThread {
		while true {
		}
	}
}

and after performing steps described below, it results in no audio in app. As it has been discovered, after pressing End&Answer button in original SpeakerBox app, AVAudioSessionInterruptionNotification notification (with AVAudioSessionInterruptionTypeBegan) comes first, and provider:didActivateAudioSession: notification comes last, so audio is started. But in modified SpeakerBox app, provider:didActivateAudioSession comes first and AVAudioSessionInterruptionNotification comes last, so audio unit becomes stopped, which results in no audio. And what is important, there is no AVAudioSessionInterruptionNotification with AVAudioSessionInterruptionTypeEnded at all, so audio is not restarted.
Thus, one of problem exists in iOS:
- Thread coordination issue. When CPU becomes loaded, provider:didActivateAudioSession and AVAudioSessionInterruptionNotification come into app in wrong order as they sent to main thread queue from different threads
- Missing AVAudioSessionInterruptionNotification with AVAudioSessionInterruptionTypeEnded

Steps to Reproduce:
1. Compile and install modified SpeakerBox demo app.
2. Simulate incoming call and answer
3. Simulate second incoming call and press End & Answer

Expected Results:
App should have audio

Actual Results:
No audio can be heard

Version/Build:
Was able to reproduce the issue with iOS 12.1 and iOS 12.2
Was not able to reproduce on iOS 11

Comments


Please note: Reports posted here will not necessarily be seen by Apple. All problems should be submitted at bugreport.apple.com before they are posted here. Please only post information for Radars that you have filed yourself, and please do not include Apple confidential information in your posts. Thank you!