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:
AVPlayerItem finishes loading and fires a KVO notification that it is ready to play (_updateCanPlayAndCanStepPropertiesWhenReadyToPlayWithNotificationPayload:)
This KVO chain propagates through NSKeyValueDidChange up to AVPlayerView, which calls _updateVideoGravityType
AVPlayerControlsViewController responds by calling _updateZoomButtonImage, which asks AVPlayerControlsConfigurator for a configured SF Symbol via +[NSImage(AVAdditions) avkit_imageWithSymbolName:textStyle:scale:accessibilityDescription:]
The symbol rendering hits -[NSImageSymbolConfiguration _getEffectivePointSize:glyphWeight:glyphSize:backfilledWithFont:scale:], which calls abort()
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 or nil font/text style being passed during the zoom button image setup.
This is triggered automatically the moment an AVPlayerItem becomes 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
Detail
Value
OS
macOS 26.4
Hardware
MacBook Pro M1 (MacBookPro17,1)
2
0
27