Skip to content

tls-budget asyncpipe exits before Darwin sampling and yields zero-root profile #8050

Closed

Description

@proggeramlug

Failure

The Darwin TLS budget's asyncpipe subject exits before sampling begins, so its budget result is vacuous-red rather than a measurement:

Exact evidence: run 31736187608 / tls-budget job 94568276080, head 3381e1b89048592cfc91f3d4a43349c6e7c16015.

The uploaded asyncpipe.sample is only 69 lines with an empty call graph: zero root samples, zero _tlv_get_addr, and zero distinct Perry runtime symbols. The gate correctly rejects it. In the same job, interp.sample is a positive control with 48,508 report lines and 4,848 root samples, so /usr/bin/sample and tls_budget_check.py are functioning.

Mechanism

scripts/tls_budget_gate.sh starts the subject and then waits a fixed one second before invoking sample. The current asyncpipe binary completes during that sleep. This is a workload-lifetime/attachment bug; changing the percentage threshold cannot repair it.

Acceptance

  • Make the representative asyncpipe subject remain live long enough for the sampler without changing its deterministic correctness result or removing its async/Map/Set/template-literal coverage.
  • Retain the minimum root-sample, runtime-symbol, direct_tsd, and claimed-site liveness requirements.
  • Validate locally on Darwin with a nonempty call graph and sufficient samples; interp remains a positive control.
  • A deliberately short-lived subject must still be rejected rather than silently passing.

Refs #7966.

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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions