Skip to content

[Desktop] iOS Simulator panel: claude-ios-sim crash-loops in Metal/CoreImage on macOS 27.0 beta — panel stuck on 'Attach a simulator' #80177

Description

@yetkin-bel

Summary

The iOS Simulator panel in the Claude desktop app cannot start its video stream on macOS 27.0 beta. The helper process claude-ios-sim (com.anthropic.claude.ios-sim, bundled at Claude.app/Contents/Helpers/Claude iOS Sim.app) crash-loops with an uncaught NSException (SIGABRT) while initializing a CoreImage CIContext, so the panel stays stuck on the "Attach a simulator so Claude can see your app" placeholder, and the MCP screenshot action fails with "Claude Code iOS Simulator is restarting after a crash."

The attach MCP action reports success and the simulator itself is healthy (apps install, launch, and screenshot fine via xcrun simctl), so this is host-side in the panel's capture/streaming pipeline.

Environment

  • Claude desktop app: 1.24012.1
  • macOS: 27.0 beta (build 26A5388g), Apple Silicon
  • Xcode 26.6, iOS Simulator runtimes 26.5 and 27.0
  • Booted device: iPhone 17 Pro (iOS 26.5)

Crash signature

lastExceptionBacktrace from ~/Library/Logs/DiagnosticReports/claude-ios-sim-*.ips (identical across ~6 crashes over one day):

CoreFoundation   __exceptionPreprocess
libobjc.A.dylib  objc_exception_throw
CoreFoundation   -[__NSPlaceholderArray initWithObjects:count:]   <- nil object inserted
CoreFoundation   +[NSArray arrayWithObjects:count:]
Metal            __39-[_MTLDevice recordBinaryArchiveUsage:]_block_invoke
libdispatch      _dispatch_once_callout
Metal            -[_MTLDevice recordBinaryArchiveUsage:]
Metal            -[_MTLBinaryArchive loadFromURL:error:]
Metal            -[_MTLBinaryArchive initWithOptions:device:url:error:]
CoreImage        +[CIKernelLibrary(Internal) internalBinaryArchiveWithName:device:]
CoreImage        CI::PrecompiledUberFunctions::PrecompiledUberFunctions(CI::MetalContext const*)
CoreImage        CI::MetalContext::init(id<MTLCommandQueue>, char const*)
CoreImage        +[CIContext(Internal) internalContextWithMTLCommandQueue:options:]
CoreImage        -[CIContext initWithMTLDevice:options:]

Termination: EXC_CRASH (SIGABRT), abort() called, thrown from __cxa_throw via _objc_terminate.

Looks like Metal's binary-archive usage recording gets a nil while building an NSArray on this OS build — i.e. an OS-beta incompatibility — but the helper turning that into a hard crash-loop (instead of falling back to a software/non-binary-archive CI context or surfacing an error in the panel) makes the whole feature unusable.

Steps to reproduce

  1. macOS 27.0 beta (26A5388g), Claude desktop 1.24012.1.
  2. Boot any iOS simulator (xcrun simctl boot <udid>).
  3. In a Claude Code session, use the iOS Simulator tool: attach succeeds and the panel opens.
  4. Panel never streams (stays on the attach placeholder); any screenshot action returns "restarting after a crash", and a new claude-ios-sim-*.ips crash report appears each time.

What I ruled out

  • Simulator/app health: xcrun simctl io <udid> screenshot and app install/launch all work.
  • iOS runtime version: same behavior regardless of 26.5 vs 27.0 runtimes (crash is host-side, before any device pixels).
  • Metal shader caches: deleting $(getconf DARWIN_USER_CACHE_DIR)/com.apple.metal and com.apple.metalfe and killing the helper did not change the signature.

Intermittently, after many helper restarts, one panel window did come up streaming — but new panel instances in the same session still land on the placeholder, so recovery is unreliable.

Expected

Either the panel streams on macOS 27 beta, or the helper catches the CI/Metal init failure and shows an actionable error in the panel instead of crash-looping behind a generic "Attach a simulator" placeholder.

Happy to share full .ips files on request.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions