Certain interstitial ads interferes with the system audio player

ios

#1

Hi,

I’m having some trouble with interstitial ads where they seem to kill the system audio player on iOS.

For example; If I’m listening to a podcast, and open my app (and the interstitial (mraid) gets preloaded), the podcast stops, and the system audio player resets.

When debugging using a simulator, and breaking on any exception, I can see that something gets thrown here:

* thread #27: tid = 0x184deef, 0x05a9c6b1 libc++abi.dylib`__cxa_throw, queue = 'com.apple.coremedia.player.item', stop reason = breakpoint 1.2
  * frame #0: 0x05a9c6b1 libc++abi.dylib`__cxa_throw
    frame #1: 0x172e1d48 AudioCodecs`ACBaseCodec::GetPropertyInfo(unsigned long, unsigned long&, unsigned char&) + 440
    frame #2: 0x1737f2fd AudioCodecs`GetPropertyInfo(void*, unsigned long, unsigned long*, unsigned char*) + 45
    frame #3: 0x00ad9ce9 AudioToolbox`AudioCodecGetPropertyInfo + 89
    frame #4: 0x0099dca0 AudioToolbox`CodecConverter::CheckInitialize(void const*, unsigned long) + 512
    frame #5: 0x0099d91c AudioToolbox`CodecConverter::CodecConverter(OpaqueAudioComponent*&, OpaqueAudioComponentInstance*, StreamDescPair const&, StreamDescPair const&, bool, AudioConverterPrimeInfo const&) + 652
    frame #6: 0x0099e5a1 AudioToolbox`CodecConverter::CodecConverter(OpaqueAudioComponent*&, OpaqueAudioComponentInstance*, StreamDescPair const&, StreamDescPair const&, bool, AudioConverterPrimeInfo const&) + 65
    frame #7: 0x009a4004 AudioToolbox`CodecDecoderFactory::BuildCodecConverterChain(StreamDescPair const&, ChainBuildSettings const&, AudioConverterChain*, PCMConverterFactory*) + 276
    frame #8: 0x009803b1 AudioToolbox`ConverterRegistry::CreateConverter(StreamDescPair const&, AudioConverterChain**, unsigned long, AudioClassDescription const*) + 257
    frame #9: 0x009687e6 AudioToolbox`_AudioConverterNewInternal + 342
    frame #10: 0x0096889f AudioToolbox`AudioConverterNew + 47
    frame #11: 0x009d56eb AudioToolbox`AudioQueueObject::AudioQueueObject(bool, bool, AudioStreamBasicDescription const&, unsigned long, AQRemoteClient&, AudioQueueOwner*, audit_token_t, unsigned int, long&) + 2363
    frame #12: 0x009d6297 AudioToolbox`AudioQueueObject::AudioQueueObject(bool, bool, AudioStreamBasicDescription const&, unsigned long, AQRemoteClient&, AudioQueueOwner*, audit_token_t, unsigned int, long&) + 119
    frame #13: 0x00a12e60 AudioToolbox`AQServer_NewQueue + 704
    frame #14: 0x00a20144 AudioToolbox`AudioQueueNew(bool, AudioStreamBasicDescription const*, TCACallback<void*, void*> const&, CACallbackTarget const&, unsigned long, unsigned int, OpaqueAudioQueue**) + 420
    frame #15: 0x00a1ff8b AudioToolbox`AudioQueueNewOutput + 91
    frame #16: 0x06743fb3 MediaToolbox`FigAudioQueueTimingShimNewOutput + 77
    frame #17: 0x065f27a2 MediaToolbox`subaq_createSubAudioQueue + 784
    frame #18: 0x065f20b1 MediaToolbox`FigAudioQueueCreate + 793
    frame #19: 0x066c1b59 MediaToolbox`FigAudioQueueRenderPipelineCreate + 675
    frame #20: 0x066682e8 MediaToolbox`fp_buildAudioRenderPipelineForTrack + 951
    frame #21: 0x0666653e MediaToolbox`itemfig_rebuildRenderPipelinesAndBoss + 11330
    frame #22: 0x06663165 MediaToolbox`playerfig_prepareWorkingItem2 + 156
    frame #23: 0x06662ef9 MediaToolbox`playerfig_prepareWorkingItem + 109
    frame #24: 0x0667b212 MediaToolbox`itemfig_assetPropertyBatchLoaded_prepareWorkingItem_f + 147
    frame #25: 0x061079cd libdispatch.dylib`_dispatch_client_callout + 14
    frame #26: 0x060eb63c libdispatch.dylib`_dispatch_queue_drain + 2227
    frame #27: 0x060eaaf0 libdispatch.dylib`_dispatch_queue_invoke + 570
    frame #28: 0x060ed7a7 libdispatch.dylib`_dispatch_root_queue_drain + 550
    frame #29: 0x060efca1 libdispatch.dylib`_dispatch_worker_thread + 122
    frame #30: 0x06435a26 libsystem_pthread.dylib`_pthread_body + 138
    frame #31: 0x0643599c libsystem_pthread.dylib`_pthread_start + 155
    frame #32: 0x06432f96 libsystem_pthread.dylib`thread_start + 34

Because of this, the app isn’t really usable, as it will force the user to go back to the music/podcast app to resume playing whatever they are listening too.

Any ideas?


#2

Hi @Pandafox,

Thanks for reaching out to us! This issue is likely being caused by a specific MRAID creative. If the creative is coming from MoPub Marketplace, and not another one of your ad network partners, we’d be glad to block the creative and work with the DSP that served the creative to prevent this issue in the future.

In order to identify the creative, we’ll need you to share Charles logs with us that capture the creative. Please share those logs with our Support Team at support@mopub.com and they’ll take it from there.

Thanks!