Tested iPhone 16 Pro Max running DB2
Since using iOS 27 Developer Beta, Progressive Web Apps (PWAs) and applications using WKWebView that route live streaming audio (such as Icecast/SHOUTcast streams) through the Web Audio API (AudioContext / MediaElementAudioSourceNode for canvas visualizers) experience silent playback freezes during track changes.
The JavaScript context remains active, and the HTMLMediaElement reports no errors or pauses, but the low-level system audio daemon (audiod) disconnects. The logs indicate a state desynchronization in MediaToolbox triggered by inline metadata frame updates, coupled with massive sandbox violations.
Steps to reproduce:
- Run a PWA or WKWebView on iOS 27 Developer Beta that loads a live audio stream using an <audio> tag.
- Route the media element into the Web Audio API (e.g., audioContext.createMediaElementSource(audioElement)).
- Play the stream and lock the screen or let it run in the foreground.
- Wait for a track transition to occur on the live stream server (which pushes an inline ICY metadata update).
- Observed Result: Audio instantly goes silent at the track boundary. JavaScript rendering loops remain active, but the stream is dead.
List of important errors:
- MediaToolbox parsing failure:
<<<< FigStreamPlayer >>>> fpfs_CacheRenderChain: Caching unexpected mediatype metadata
Reasoning: When the stream updates its inline metadata, MediaToolbox (FigStreamPlayer) fails to handle the frame descriptor correctly, halting the stream decoder render chain.
- Audio engine state desynchronization:
<<<< FigStreamPlayer >>>> fpfs_SetRateOnTrack: [...] setting rate on track before it has reached playing state - 4 instead
Reasoning: WebKit attempts to keep playing or setting the playback rate, but MediaToolbox fails because the underlying decoder track is stuck in an uninitialized/stalled state (4).
- System Audio Daemon Disconnection:
Subsystem: com.apple.audioanalytics | Process: audiod
Reporter disconnected. ( function=sendMessage, reporterID=... )
Reasoning: Because the rendering stream stalled, the system audio daemon (audiod) forcibly severs the audio session connection to the browser container.
- Massive Sandbox Log Flooding (WebKit.WebContent):
Sandbox: com.apple.WebKit.WebContent(2719) deny(1) syscall-unix 179
Reasoning: WebKit's WebAudio thread tries to log trace markers to XNU's kdebug_trace64 (syscall 179) but is blocked by the WebContent sandbox profile, resulting in a loop of thousands of denials that clog the thread.
What needs to be fixed:
- MediaToolbox (FigStreamPlayer): Fix the regression where incoming live stream metadata frames stall the render chain when connected to a Web Audio node.
- WebKit Sandbox Profiles: Update the iOS WebContent, Network, and GPU sandbox rules to allow necessary tracing/diagnostic calls (syscall-unix 179 and mach-lookup com.apple.diagnosticd) in developer beta builds to prevent thread-blocking loops.