Skip to content

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

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingstability/performanceServer crashes, OOM, hangs, high CPU/memory

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions