Description
Our app, Octory, allows users to create onboarding and communication workflows composed of slides containing various UI components, including embedded video players powered by AVPlayerView.
Since macOS 26.4 Beta, the app crashes at launch whenever a workflow contains a video component. Workflows without video components load and render without issue, which points to a regression in AVKit's player control rendering pipeline.
As anyone seen similar behaviour when using AVKit or is it something we do not do properly?
Expected Behavior
The app opens and renders the workflow, including the embedded video component.
Actual Behavior
The app briefly launches and immediately crashes with SIGABRT on the main thread.
Crash Analysis
Key takeaways for anyone investigating:
Root cause — abort() inside NSImageSymbolConfiguration
The crash occurs entirely within Apple frameworks, with no third-party code in the faulting call chain (aside from the app's entry point). The sequence is:
AVPlayerItemfinishes loading and fires a KVO notification that it is ready to play (_updateCanPlayAndCanStepPropertiesWhenReadyToPlayWithNotificationPayload:)- This KVO chain propagates through
NSKeyValueDidChangeup toAVPlayerView, which calls_updateVideoGravityType AVPlayerControlsViewControllerresponds by calling_updateZoomButtonImage, which asksAVPlayerControlsConfiguratorfor a configured SF Symbol via+[NSImage(AVAdditions) avkit_imageWithSymbolName:textStyle:scale:accessibilityDescription:]- The symbol rendering hits
-[NSImageSymbolConfiguration _getEffectivePointSize:glyphWeight:glyphSize:backfilledWithFont:scale:], which callsabort()
- The entire crash stack is in AppKit (
NSImage/NSImageSymbolConfiguration) and AVKit — no application code is involved in the faulting path. - The
abort()suggests a precondition or assertion failure inside the symbol configuration logic, possibly due to an invalid ornilfont/text style being passed during the zoom button image setup. - This is triggered automatically the moment an
AVPlayerItembecomes ready to play and AVKit attempts to render its transport controls. There is no way for the application to intercept or work around this.
Relevant stack frames (Thread 0 — main thread)
3 AppKit -[NSImageSymbolConfiguration _getEffectivePointSize:glyphWeight:glyphSize:backfilledWithFont:scale:] + 440 ← abort() here
4 AppKit -[NSImageSymbolRepProvider _bestRepresentationForImage:hints:] + 404
11 AVKit +[NSImage(AVAdditions) avkit_imageWithSymbolName:textStyle:scale:accessibilityDescription:] + 332
12 AVKit -[AVPlayerControlsConfigurator configuredSymbolForImageName:] + 92
13 AVKit -[AVPlayerControlsViewController _updateZoomButtonImage] + 160
14 AVKit -[AVPlayerControlsViewController setVideoGravityType:] + 52
15 AVKit -[AVPlayerView _updateVideoGravityType] + 1056
28 AVFCore -[AVPlayerItem didChangeValueForKey:] + 56
29 AVFCore -[AVPlayerItem _updateCanPlayAndCanStepPropertiesWhenReadyToPlayWithNotificationPayload:updateStatusToReadyToPlay:] + 660
Additional Notes
- Removing the video component from the workflow (i.e. not instantiating
AVPlayerView) resolves the crash entirely. - The crash is 100% reproducible on every launch.
- This behavior was not present on macOS 26.3 or any prior release.
- The app was not recompiled — the same binary that works on 26.3 crashes on 26.4 Beta & 26.4.
Environment
| OS | macOS 26.4 |
| Hardware | MacBook Pro M1 (MacBookPro17,1) |