Сбой AVFoundation в + [AVOutputContext (FigRoutingContext) currentRoutingContextFactory] - PullRequest
0 голосов
/ 16 мая 2018

У нас сбой в AVFoundation.

AVFoundation + [AVOutputContext (FigRoutingContext) currentRoutingContextFactory]

EXC_BAD_ACCESS KERN_INVALID_ADDRESS 0x0000000a3c27beb8

Crashed: Thread
0  libobjc.A.dylib                0x183b8c910 objc_msgSend + 16
1  AVFoundation                   0x18a5401bc +[AVOutputContext(FigRoutingContext) currentRoutingContextFactory] + 56
2  AVFoundation                   0x18a53ae28 +[AVFigRoutingContextOutputContextImpl sharedAudioPresentationOutputContext] + 28
3  AVFoundation                   0x18a4d0a24 +[AVOutputContext sharedAudioPresentationOutputContext] + 40
4  MediaPlayer                    0x195deb1cc -[MPAVLightweightRoutingController pickedRoutes] + 68
5  MediaPlayer                    0x195e04338 -[MPVolumeView _setShowsVolumeSlider:] + 96
6  MediaPlayer                    0x195e02ad4 -[MPVolumeView layoutSubviews] + 208
7  UIKit                          0x18e593770 -[UIView(CALayerDelegate) layoutSublayersOfLayer:] + 1420
8  QuartzCore                     0x188b3525c -[CALayer layoutSublayers] + 184
9  QuartzCore                     0x188b393ec CA::Layer::layout_if_needed(CA::Transaction*) + 324
10 QuartzCore                     0x188aa5aa0 CA::Context::commit_transaction(CA::Transaction*) + 320
11 QuartzCore                     0x188acd5d0 CA::Transaction::commit() + 580
12 QuartzCore                     0x188acdd10 CA::Transaction::release_thread(void*) + 244
13 libsystem_pthread.dylib        0x1845e457c _pthread_tsd_cleanup + 572
14 libsystem_pthread.dylib        0x1845e42cc _pthread_exit + 88
15 libsystem_pthread.dylib        0x1845e40d4 _pthread_wqthread + 1472
16 libsystem_pthread.dylib        0x1845e3b08 start_wqthread + 4
1008 * 100h 100h * * * * * *-основные потоки, которые, кажется, используют классы или функции UIKit.Вообще говоря, безопасно использовать UIKit только из основного потока.Вызов UIKit из фоновых потоков может вызвать непредсказуемое поведение (например, сбои!).Пожалуйста, проверьте, чтобы весь ваш код (который не находится в основном потоке) был явно помечен Apple как безопасный для использования в фоновом режиме.

Но мы не используем другие потоки в приложении,

Журналы сбоев:

Сбой: поток 0 libobjc.A.dylib 0x184370910 objc_msgSend + 16 1 AVFoundation 0x18ad241bc + [AVOutputContext (FigRoutingContextOuttFext)sharedAudioPresentationOutputContext] + 28 3 AVFoundation
0x18acb4a24 + [AVOutputContext sharedAudioPresentationOutputContext] + 40 4 медиаплеера 0x1965cf1cc - [MPAVLightweightRoutingController pickedRoutes] + 68 5 медиаплеера 0x1965e8338 - [MPVolumeView _setShowsVolumeSlider:] + 96 6 медиаплеера 0x1965e6ad4 - [MPVolumeView layoutSubviews] + 208 7 UIKit
0x18ed77770 - [UIView (CALayerDelegate) layoutSublayersOfLayer:] + 1420 8 QuartzCore 0x18931925c - [CALayer layoutSublayers] + 184 9 QuartzCore 0x18931d3ec CA :: Layer :: layout_if_ne0 0a0 (0219) 0 (8) 0 * 229 (0219) 0 (8) 0 * 229 (0a) 0 (8) 0a (0) 8 * 0a0 (0) 8 * 0a0 (0)> 0 * 289 (8)> CA0 (0219) 0 (8)> 0 (8) 0 * 821 (0a) 220 (8) 0 (8) 0a (0) 0219a (0)> 8 * 0a0 (8), 0, 8, 8, 0, 0, 8,,,,,,,,,,,)CA :: Context :: commit_transaction (CA :: Transaction *) + 320 11 QuartzCore 0x1892b15d0 CA :: Transaction :: commit () + 580 12 QuartzCore 0x1892b1d10 CA :: Сделка :: release_thread (недействительными *) + 244 13 libsystem_pthread.dylib 0x184dc857c _pthread_tsd_cleanup + 572 14 libsystem_pthread.dylib 0x184dc82cc _pthread_exit + 88 15 libsystem_pthread.dylib 0x184dc80d4 _pthread_wqthread + +1472 16 libsystem_pthread.dylib 0x184dc7b08 start_wqthread + 4

Код инициализации:

self.volumeView = MPVolumeView.init(frame: CGRect.init(x: 0, y: 2,
                                                                     width: 52.0,
                                                                     height: 30.0))
self.volumeView?.showsVolumeSlider = false            self.volumeView?.showsRouteButton = true

self.volumeView?.setRouteButtonImage(UIImage.init(named: "streaming_icon"), for: .normal)
self.volumeView?.setRouteButtonImage(UIImage.init(named: "selected_streaming_icon"), for: .selected)

self.volumeView.sizeToFit()

Пожалуйста, помогите решить эту проблему.

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Я связался с Apple, и они подтвердили мою теорию о том, что MPVolumeView выполняет изменения макета пользовательского интерфейса в фоновом потоке.

Отчет об ошибке создан.

Обновление 2018-05-30: Инжиниринг определил, что ваш отчет об ошибке (40594280) является дубликатом 39309134 и будет закрыт.

0 голосов
/ 24 мая 2018

У меня такое же условие сбоя при использовании MPVolumeView и AVPlayer. С другими странными вещами, такими как исчезновение ползунка громкости.

Проблемы исчезнут, если я установлю для атрибута объекта AVPlayer 'allowExternalPlayback' значение false.

player.allowsExternalPlayback = false

Кажется странным, но это сработало.

...