Skip to content

Node-host timer pump can lose a delayed callback in a long-running corpus #310

Description

@pmatos

Summary

In the Zod v4.4.3 normal+jitless library corpus, jsse can exit successfully while a delayed setTimeout callback is still required to settle an awaited async refinement. Node continues and completes the test.

Reproduction

From the issue #279 branch/PR, remove the 500 to 0 portability replacement in scripts/gen-zod-entry.js, then run:

./scripts/run-library-tests.sh zod --clean

Normal mode completes the upstream async validation multiple errors 2 case. In jitless mode the corpus reports through case 1,133, schedules the case-1,134 refinement timer for 500 ms, and then jsse exits 0 without reporting case 1,134 or a TAP summary. Node reports all 2,184 cases.

The forced shared test harness implements cancellable timers using one native jsse setTimeout pump, rearming at up to 100 ms intervals. The pending native timer should keep drain_microtasks_until_idle alive until the callback resolves the awaited refinement.

Expected

Pending timer jobs remain live, their callbacks execute, and the awaiting promise continuation resumes even late in a long-running bundle.

Current corpus treatment

Issue #279 symmetrically changes only this artificial 500 ms test delay to 0 ms on Node and jsse. The timer callback and async multi-error assertion still execute, while avoiding the liveness defect. Remove that replacement when this issue is fixed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    agent-readyReady for autonomous Symphonika dispatchenhancementNew feature or requestsym:claimedSymphonika has claimed this issue for an orchestrated run.sym:failedA Symphonika run reached a deterministic failed state.sym:staleA Symphonika claim exists without a live local run.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions