Skip to content

[Bug] v0.8.1 darwin-arm64 binary aborts with dyld: unknown imports format on macOS 26.5.1 #630

Open

Description

@polyglotszeng

Summary

The official codebase-memory-mcp v0.8.1 darwin-arm64 binary fails to load on macOS 26.5.1 (Tahoe Beta) with dyld: unknown imports format followed by Abort trap: 6. This affects every command, including --version and --help. The binary is otherwise valid (correct Mach-O arm64, fully static, properly signed, LC_BUILD_VERSION minos=14.0). This appears to be a deployment-side incompatibility between the binary's chained-fixup format and the newer dyld shipped with macOS 26.

Environment

Field Value
Hardware Apple Silicon Mac (M-series, arm64)
OS macOS 26.5.1 (Tahoe Beta)
Binary codebase-memory-mcp v0.8.1 (release dated 2026-06-12)
Downloaded from https://github.com/DeusData/codebase-memory-mcp/releases/download/v0.8.1/codebase-memory-mcp-darwin-arm64 (or equivalent asset name)
SHA256 381d13e7a191bba5a5456b2006b1ee81e53c931b182647c36ec00b4be3a1fbe6
Size 267,893,872 bytes (~256 MiB)
File type Mach-O 64-bit executable arm64

Reproduction

# 1. Download the v0.8.1 darwin-arm64 release asset
curl -L -o codebase-memory-mcp \
  https://github.com/DeusData/codebase-memory-mcp/releases/download/v0.8.1/codebase-memory-mcp-darwin-arm64

# 2. Make executable + clear quarantine + ad-hoc sign
chmod +x codebase-memory-mcp
xattr -cr codebase-memory-mcp
codesign --force --deep --sign - codebase-memory-mcp   # ad-hoc

# 3. Try ANY command
./codebase-memory-mcp --version
./codebase-memory-mcp --help
./codebase-memory-mcp index /path/to/codebase
echo "" | ./codebase-memory-mcp

Expected

codebase-memory-mcp version 0.8.1

Actual (all four commands)

dyld[12345]: unknown imports format
Abort trap: 6

Exit code 134 (SIGABRT) on every invocation, regardless of arguments.

What was verified

Check Command Result
File type file ./codebase-memory-mcp Mach-O 64-bit executable arm64 ✅
External linkage otool -L ./codebase-memory-mcp (empty — fully static) ✅
Min OS version otool -l ... | grep LC_BUILD_VERSION minos 14.0 (well below 26.5.1) ✅
Code signature codesign -dv valid (after re-sign) ✅
Quarantine xattr -l cleared ✅
Architecture lipo -info arm64 (correct for M-series) ✅

The binary passes every static / structural check. The abort happens during dynamic linking, before main() runs.

Root cause hypothesis

The binary contains LC_DYLD_CHAINED_FIXUPS (8456 bytes in the v0.8.1 sample). On macOS 14 Sonoma this format loaded without complaint. On macOS 26.5.1 (Tahoe Beta) the bundled dyld rejects the chained-fixup payload with the generic "unknown imports format" message and aborts. There are two likely culprits:

  1. Newer dyld stricter validation: macOS 26's dyld may have tightened what it accepts in chained-fixup payloads and now rejects an older format version that older dylds tolerated.
  2. Binary built against newer toolchain than dyld supports: Go's internal/linkname + cmd/link rework for chained fixups changed format between Go 1.22 and Go 1.23; if v0.8.1 was built with a Go toolchain newer than the macOS 26 SDK's dyld was tested against, the layout no longer round-trips.

Either way, the fix is the same: rebuild against the current macOS SDK + current Go toolchain, ideally with the binary smoke-tested on a macOS 26 (Tahoe) Beta host.

Suggested fix

  1. Rebuild v0.8.2 with the latest stable Go (1.23+) on a host running macOS 26 Beta.
  2. CI smoke test: add a "run --version on darwin-arm64 macOS 26" job before publishing the release asset.
  3. Consider a fallback build flag — if the chained-fixup payload is the culprit, -buildmode=pie with classic non-chained relocations may still load on older dylds.
  4. Document supported macOS range in the release notes / README, so users on bleeding-edge macOS can plan ahead.

Workaround for users (until v0.8.2 lands)

  • Use a Linux or older-macOS host to run cbm and have it serve MCP to your Mac over the network. The dyld abort is specific to darwin-arm64 macOS 26; the same binary works fine on macOS ≤ 15 and on Linux.
  • Use an alternative MCP-compatible indexer with native Apple Silicon support. For Obsidian-vault-style corpora, the graphify skill (Python + tree-sitter) indexes ~1,500 notes in <1s with ~98 MB peak memory; for code corpora, mcp-server-tree-sitter is a pure-Python alternative.

Severity

High for anyone on macOS 26 Beta (which is most M-series users on the latest OS). The binary is the only published artifact for darwin-arm64, so affected users have no working local install path without manual workarounds.

Diagnostic data

$ sw_vers
ProductName:    Mac OS X
ProductVersion: 26.5.1
BuildVersion:   25F77

$ uname -a
Darwin <host> 26.5.1 Darwin Kernel Version 26.5.1 ... arm64

$ file /tmp/bermanscan/codebase-memory-mcp
/tmp/bermanscan/codebase-memory-mcp: Mach-O 64-bit executable arm64

$ otool -l /tmp/bermanscan/codebase-memory-mcp | grep -A 4 LC_BUILD_VERSION
      cmd LC_BUILD_VERSION
  cmdsize 24
 platform 1
    minos 14.0
     sdk 15.0

(Replace <host> with hostname output if a maintainer needs to triage against a specific Beta build.)

Cross-references

  • Similar reports may exist on the upstream issue tracker; please link duplicates here.
  • macOS 26 Beta dyld changes: tracked in Apple's dyld source (no public release notes known at time of writing).

Activity

  1. DeusData commented on Jun 29, 2026

    @DeusData
    Owner

    Thanks for the detailed binary diagnostics. I’ve triaged this under #390 and am keeping #630 as the canonical structured report; #629 is marked as the duplicate. Next step is release-build/linker-format investigation against macOS 26 dyld.

  2. added
    priority/highNeeds near-term maintainer attention; high-impact bug, regression, safety issue, or release blocker.
    on Jun 30, 2026
  3. added this to the 0.9.1-rc milestone on Jul 8, 2026
  4. DeusData commented on Aug 14, 2026

    @DeusData
    Owner

    @polyglotszeng — thank you for the verification table. An empty otool -L, LC_BUILD_VERSION minos 14.0, a valid ad-hoc signature and the SHA-256 of the exact release asset rule out everything on your side and point squarely at how we link the shipped binary.

    Every command aborting, --version included, also means there is no local workaround available to you: the binary simply does not run on that OS. That is the most literal possible version of "impossible to operate".

    Honest status: still open, and the investigation is on the release build's chained-fixup format against the newer dyld rather than anything in cbm's own logic. Tonight's v0.10.5 is being cut for exactly this class of issue. Sorry you have been waiting since June.

  5. DeusData commented on Sep 26, 2026

    @DeusData
    Owner

    Thank you, @polyglotszeng, for the very complete verification table; it ruled out everything on your side!

    We can no longer reproduce this. The current v0.11.0 codebase-memory-mcp-darwin-arm64 release asset runs --version fine on macOS 26.6 (25G72). The release binary has also changed a lot since v0.8.1: it's now fully stripped and about 40 MB instead of 256 MB.

    Could you try v0.11.0 and confirm that it starts? If it still aborts with unknown imports format, please post the output of otool -l codebase-memory-mcp | grep -A3 LC_DYLD_CHAINED_FIXUPS and your exact sw_vers.

  6. added
    awaiting-reporterWaiting on the reporter for info/repro; stale bot will warn then close
    on Sep 26, 2026
  7. github-actions commented on Sep 26, 2026

    @github-actions

    Thanks for the report! To move this forward we need a bit more so we can reproduce it ourselves:

    • the codebase-memory-mcp --version you're on
    • the exact steps or command you ran
    • a public repo (or a small dummy snippet) that shows the problem — please don't paste proprietary code

    Once that's here we'll pick it straight back up. Heads-up: issues left awaiting-reporter are automatically closed after a few weeks of silence, but a comment reopens the door anytime.

  8. github-actions commented on Oct 18, 2026

    @github-actions

    This issue has been waiting on more information for 21 days (a version, exact steps, or a public repro), so it's now marked stale. It will not be closed automatically — a maintainer reviews stale issues by hand. Adding a comment with the details clears the label and puts it straight back in the queue. We're happy to pick it back up the moment we can reproduce it.

  9. added
    staleNo activity after an info request; will be closed soon
    on Oct 18, 2026
  10. DeusData commented on Oct 19, 2026

    @DeusData
    Owner

    Thank you again for the binary diagnostics. Checking back on the September request: does a newer release start on your macOS build? If the dyld abort remains, the exact CBM asset/version and sw_vers are the useful comparison; I have no new confirmation for your machine to add.

  11. removed
    staleNo activity after an info request; will be closed soon
    on Oct 20, 2026
  12. DeusData commented on Oct 25, 2026

    @DeusData
    Owner

    Thank you again for the report and your patience. Any existing newer-release startup result is welcome, with the exact asset/version and macOS build if the dyld abort remains.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    awaiting-reporterWaiting on the reporter for info/repro; stale bot will warn then closebugSomething isn't workingpriority/highNeeds near-term maintainer attention; high-impact bug, regression, safety issue, or release blocker.stability/performanceServer crashes, OOM, hangs, high CPU/memory

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions