test(wasix): skip the cluster shared-dgram known_issues test - #144
Open
Arshia001 wants to merge 1 commit into
Open
test(wasix): skip the cluster shared-dgram known_issues test#144Arshia001 wants to merge 1 commit into
Arshia001 wants to merge 1 commit into
Conversation
known_issues/test-dgram-bind-shared-ports-after-port-0 times out on both WASIX lanes (v8-wasix and quickjs-wasix), on this branch and on main. Cluster shares a dgram socket by sending the bound descriptor to the worker over IPC, and primary.js always selects SharedHandle for udp4/udp6 regardless of scheduling policy. WASI has no msghdr or SCM_RIGHTS, so the descriptor can never reach the worker: its bind callback never fires, the primary keeps waiting for the 'success' message, and the harness kills the run after ten minutes. A timeout fails a [negative] test no matter which way it would have resolved -- an expected-to-fail test still has to fail promptly -- so this cannot go green while it runs. Nor can it ever reach its intended outcome on WASIX, which needs a genuinely shared UDP socket. Its non-negative sibling sequential/test-dgram-bind-shared-ports.js has been in WASIX_SKIP_CLUSTER_FORK_TESTS since the original triage; this one escaped only because the list carried no known_issues/ paths. wasix-org/libuv#14 makes the underlying descriptor send fail with ENOSYS instead of reporting success and stalling, which is what made this diagnosable, but it does not make the test pass and is not required here. Verified: node:dgram goes from 60 passed / 1 failed to 60 passed / 0 failed, built against the pinned libuv (deps/libuv-wasix 71cdbb57).
This was referenced Aug 11, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #143. Merge that first.
What fails
known_issues/test-dgram-bind-shared-ports-after-port-0times out on both WASIX lanes, on this branch and onmain(run 31362885750, job 93375162660) — it is not caused by #143.Why
Cluster shares a dgram socket by sending the bound descriptor to the worker over IPC, and
primary.jsalways selectsSharedHandleforudp4/udp6regardless of scheduling policy:WASI has no
msghdr/SCM_RIGHTS, so that descriptor can never be delivered. Instrumenting the path shows exactly where it stops:The worker's bind callback never fires, so it never sends
{message:'success'}, so the primary'sworker1.on('message', common.mustCall(...))never fires and the run hangs until the harness kills it.A timeout fails a
[negative]test regardless of which way it would have resolved — an expected-to-fail test still has to fail promptly. And it can never reach its intended outcome on WASIX, which requires a genuinely shared UDP socket.Why a skip
The whole cluster/fork family is already a documented WASIX environment limit. Its non-negative sibling
sequential/test-dgram-bind-shared-ports.jshas been inWASIX_SKIP_CLUSTER_FORK_TESTSsince the original triage. This one escaped only because the list carried noknown_issues/paths — every other entry is aparallel/orsequential/path.On the underlying bug
While tracking this down I found a real defect and fixed it separately in wasix-org/libuv#14: a handle-passing IPC write reported success while silently dropping the message, because libuv's
ENOSYSwas raised inside the queued write and Node's channel discards that status (req.oncomplete = () => callback(null)). That PR rejects up front souv_write2()fails synchronously.It is what made this diagnosable — the primary now reports
ENOSYSinstead of stalling mutely — but it does not make this test pass, and this PR does not depend on it. The submodule pin is unchanged.Verification
Built against the pinned libuv (
deps/libuv-wasix71cdbb57, i.e. what CI builds):node:dgramOne caveat worth stating: this is the quickjs-wasix build locally. The failure and its cause are identical on both lanes (same TIMEOUT, same engine-independent IPC path), so CI is the check for v8-wasix.