Cobalt 27.LTS.11

The Cobalt team has published Cobalt 27.LTS.11 including Starboard API version 18 to the 27.lts branch with tag 27.lts.11 (27.lts.11.1041346).

Corresponding Evergreen binaries are available on GitHub at the 27.lts.11 Release tag.

This is a non-Stable development release. Please use Stable (.10, .20) releases for certification. Considering the critical loader_app fix (#13471) included in this release, the Cobalt team strongly recommends that partners upgrading from Cobalt 25 (or earlier) or integrating Cobalt 27 LTS migrate to the next stable release 27.lts.20 as soon as possible.


Cobalt Changes

Bug Fixes

  • [CRITICAL] Evergreen loader_app Slot Count Migration: Fixed an issue where upgrading from a 3-slot configuration (Cobalt ≤ 25) to Cobalt 27's 2-slot configuration caused InstallationManager::Initialize() to fail if the device had rotated into Slot 2, falling back to Evergreen-Lite and preventing future Evergreen updates. loader_app now resets the on-disk InstallationStore when the slot count changes so Slot 0 becomes active immediately. (#13471)
  • Evergreen loader_app Hardening: Prevented loader_app from aborting on malformed manifest.json version strings (#13123) and added bounds checking to in-memory CRX verification (#12909).
  • QUIC & Media Stability: Fixed stale QUIC packet send times after download pauses (#13479), resolved a media pipeline hang on initialization errors (#13066), and fixed a crash in the decode-to-texture pipeline when the GL context is lost during idle periods (#13114).
  • 64-bit Ozone & Startup Deadlocks: Fixed 64-bit AcceleratedWidget window pointer truncation crashes on Ozone platforms (#12932) and resolved startup deadlocks in gmtime_r and ICU timezone initialization (#13142, #13069).

Memory Reductions & Performance Improvements

  • 3P Memory & Rendering Optimizations: Enabled CobaltInProcessImageTransferCache, CobaltInProcessDirectRaster, and CobaltContentLengthAwareMojoPipeSizing by default on 3P Starboard platforms (#12996), and reworked CobaltMmapFontCache to save ~28–34 MB PMF on warm launches (#13165).
  • Startup & Network Latency: Deferred V8 code cache disk writes to idle tasks by default (#13167) and sent Cobalt client-hint headers once at startup instead of per-request Mojo IPCs (#13086).
  • Media Buffering & Parsing: Launched FixNeedMoreInputBackpressure (max pending inputs set to 512) and external media memory pool allocation by default (#13118, #12991), and added support for in-place MP4 and WebM stream parsing (#12846, #13015, #13017).

AOSP & RDK

  • AOSP: Restored support for devices older than Android 9 (API 24+) (#13108), fixed Crashpad handler startup (#12916), wired up the NativeStability and Accessibility (TTS) extensions (#12975, #13186), enabled the network error dialog (#13273), applied player bounds to the video surface (#13282), and disabled QUIC by default (#13354).
  • RDK: Added pre-app recommendation service (com.google.youtube.tv.Recommendations) support (#12872).

Starboard Changes

  • Audio: Reinitialized AdaptiveAudioDecoder immediately on early config changes before samples are written (#13481) and added Media.SkipAudioResamplingOnUnchangedSampleRate to bypass unnecessary resampling (#13467).
  • System & POSIX: Unified CA certificate lookup under <content>/ssl/certs (#13068), translated platform getaddrinfo() error codes to musl equivalents (#13246), resolved full /etc/localtime symlink chains (#13052), and fixed arm64 stack unwinding and call-site symbolization (#12966, #12977).
  • NPLB: Made AV1 HDR optional for non-HDR 4K devices in MinimumSupport (#13347).

Contact Points

Please contact our support channels if you have any problems, questions, or feedback.