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
- Check out
DeusData/codebase-memory-mcp@46ae198f on macOS 26.5.2 arm64.
- Run
scripts/test.sh.
- The focused suite also reproduces it with
scripts/test.sh --suites daemon_runtime.
- 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)
- 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
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_sessionatASSERT(marker_published).The test copies the sanitized test runner to a private PATH entry named
git, startsdetect_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
mainand 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_SANITIZEDpredicate and uses sanitizer-specific timing budgets elsewhere.Reproduction
DeusData/codebase-memory-mcp@46ae198fon macOS 26.5.2 arm64.scripts/test.sh.scripts/test.sh --suites daemon_runtime.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:
Logs
Diagnostics trajectory (memory / performance / leak issues)
Project scale (if relevant)
No response
Confirmations