Symptom
tests/test_next_app_route_dylib.sh hangs indefinitely. The provider host builds
and links fine, prints its ABI hash, and then never serves a request — the
harness waits until it is killed. CI shows this as the
Production App Route provider gate step failing (e.g. run 31993068277 on
main).
Reproduced locally three times today, on three different trees:
| tree |
stack at hang |
main + #8313 |
main → js_wait_for_event |
main + #8377 |
main → run_microtasks → js_timer_tick → aux_has_active → js_node_http_server_has_active |
Both are the same shape: 0.0% CPU, no child process, parked in the event-loop
pump, last output Provider ABI hash: …. The second stack is the more
informative one — the host is asking whether the HTTP server has active handles
and getting an answer that keeps it idle, so it never begins serving.
What it is NOT
Why it matters
This is the acceptance gate for the #8034/#8040 production Next App Route, and it
is the natural end-to-end check for object-layout and ABI changes — exactly the
class that has silently broken split modules before (#8204 → #8228/#8241). While
it hangs, layout-changing PRs lose their most realistic verification: #8313 (the
40-byte header) had to fall back to the gap suite for that reason.
Suggested starting point
js_node_http_server_has_active / stdlib_pump::aux_has_active — establish
whether the server handle is registered at all in the dylib-provider
configuration, or whether it is registered but reports inactive so the pump never
dispatches it.
Symptom
tests/test_next_app_route_dylib.shhangs indefinitely. The provider host buildsand links fine, prints its ABI hash, and then never serves a request — the
harness waits until it is killed. CI shows this as the
Production App Route provider gatestep failing (e.g. run 31993068277 onmain).Reproduced locally three times today, on three different trees:
main+ #8313main → js_wait_for_eventmain+ #8377main → run_microtasks → js_timer_tick → aux_has_active → js_node_http_server_has_activeBoth are the same shape: 0.0% CPU, no child process, parked in the event-loop
pump, last output
Provider ABI hash: …. The second stack is the moreinformative one — the host is asking whether the HTTP server has active handles
and getting an answer that keeps it idle, so it never begins serving.
What it is NOT
.cargo/config.tomlfrom the invocation directory, not--manifest-path, sothe provider runtime lost
-C force-unwind-tables=yes. fix(test): make Next dylib provider build cwd-independent #8377 fixed it, and thehang persists unchanged afterwards.
node_modulesresolution problem. A worktree placed under/private/tmpdoes fail differently and fatally(
JavaScript runtime (V8) support has been removedon/private/tmp/node_modules/@opentelemetry/api, because Node resolution walksup out of the fixture), but from a normal worktree root that import is only
Warning: Could not resolveand the build proceeds to the hang above.Why it matters
This is the acceptance gate for the #8034/#8040 production Next App Route, and it
is the natural end-to-end check for object-layout and ABI changes — exactly the
class that has silently broken split modules before (#8204 → #8228/#8241). While
it hangs, layout-changing PRs lose their most realistic verification: #8313 (the
40-byte header) had to fall back to the gap suite for that reason.
Suggested starting point
js_node_http_server_has_active/stdlib_pump::aux_has_active— establishwhether the server handle is registered at all in the dylib-provider
configuration, or whether it is registered but reports inactive so the pump never
dispatches it.