Skip to content

daemon_runtime blocking-git probe times out before sanitized runner reaches main #1738

Closed

Description

@bmcnaboe

Version

codebase-memory-mcp dev (46ae198)

Platform

macOS (Apple Silicon)

Install channel

Built from source

Binary variant

standard

What happened, and what did you expect?

Running the full ASan/UBSan test gate consistently fails daemon_runtime_disconnect_cancels_blocked_non_index_child_and_preserves_other_session at ASSERT(marker_published).

The test copies the sanitized test runner to a private PATH entry named git, starts detect_changes, and waits for that copied process to publish its PID. It gives the copied process a fixed 5-second readiness budget.

On this machine the sanitized test runner is about 421 MB and the isolated copied probe takes about 7 seconds to reach main and publish its marker. The test therefore fails before it initiates or observes the cancellation behavior it exists to verify.

I expected this readiness wait to be a liveness backstop that accommodates normal sanitizer startup overhead, rather than a timing assertion on process startup. The repository already has a shared CBM_SANITIZED predicate and uses sanitizer-specific timing budgets elsewhere.

Reproduction

  1. Check out DeusData/codebase-memory-mcp@46ae198f on macOS 26.5.2 arm64.
  2. Run scripts/test.sh.
  3. The focused suite also reproduces it with scripts/test.sh --suites daemon_runtime.
  4. Actual result:
    44 passed, 1 failed
    blocking git marker missing: image=/tmp/cbm-runtime-non-index-.../bin/git completed=0 status=0 response=
    FAIL tests/test_daemon_runtime.c:3812: ASSERT(marker_published)
    
  5. Expected: allow the copied runner to finish normal sanitizer startup, then verify process-tree cancellation.

Suggested fix: retain the native 5/15-second readiness/request budgets, but use 60/90-second liveness budgets under CBM_SANITIZED. A passing test still proceeds immediately when the marker appears.

With that change:

daemon_runtime: 45 passed
full scripts/test.sh: 7555 passed, 0 failed, 8 skipped
=== All tests passed ===

Logs

daemon_runtime_disconnect_cancels_blocked_non_index_child_and_preserves_other_session
level=info msg=daemon.runtime_stopping reason=last_committed_client_disconnected
blocking git marker missing: image=/tmp/cbm-runtime-non-index-ypVYuS/bin/git completed=0 status=0 response=
non-index cancellation diagnostic: close_begun=1 clients_after_wait=2 connections_after_wait=2 child_gone=0 backstop=0 request_completed=0 request_status=0 second_after=0
FAIL tests/test_daemon_runtime.c:3812: ASSERT(marker_published)

Diagnostics trajectory (memory / performance / leak issues)


Project scale (if relevant)

No response

Confirmations

  • I searched existing issues and this is not a duplicate.
  • My reproduction uses shareable code (a dummy snippet or a public OSS repository), not proprietary code.

Activity

  1. added
    priority/highNeeds near-term maintainer attention; high-impact bug, regression, safety issue, or release blocker.
    on Sep 5, 2026
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

    bugSomething 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

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions