stdlib test issue with pasbuild #189
Replies: 3 comments 3 replies
|
Thanks for the clear report — you're not doing anything wrong, and it's genuinely easy to mistake this for a freeze. Two things are combining here, and neither is a real hang in the normal case. 1. The test runner is silent by design until the very endThe default So an empty terminal is expected for the whole run — a healthy run and a stuck run look identical right up until that final line appears. On my machine the whole thing finishes in about 8 seconds ( If you'd like to see it making progress, run the runner directly with That immediately tells you whether it's stuck (and on which test) versus just quietly working. 2. The likely culprit: a networking/async test blocking on a socketThe stdlib suite includes a batch of tests that open real loopback sockets and run the async reactor/scheduler:
About the "multiple threads that start then disappear"That part is normal and unrelated to the hang: the compiler compiles each unit in its own worker thread (parallel codegen), so during the build phase you'll briefly see several threads spin up and exit as units finish. That phase is also silent, but it's quick. One thing worth checkingSince a fresh clone has no Could you run with |
|
Got it It's file-descriptor exhaustion, and the reactor busy-loops instead of copingInspecting your stuck process:
The test that hangs, When the process runs out of fds,
That's a tight Why it's environment-sensitive: on a machine with a higher Immediate workaroundRaise the fd limit for that shell before running the tests: (That's session-local and safe. You can also skip the stress test while iterating: You can free the currently-stuck process with What we'll fixThis is two bugs and both deserve fixing (I've logged them):
And your original observation stands as a third, ergonomic fix: the runner being silent until the end makes any stall indistinguishable from a freeze — a per-test progress line or a watchdog timeout would have told you instantly which test was stuck. Thanks again for the great report and for leaving the process up — that turned "probably a network test" into a precise root cause. |
|
Fixed — thanks again for the report and for confirming the 1. The reactor no longer busy-loops on fd exhaustionThe core bug: when I added an 2. The stress test no longer demands more fds than exist
ResultThe full stdlib suite now completes cleanly under No more hang, no workaround needed. (The Verified across the full compiler suite (OK 4754, both build backends) and all four self-hosting fixpoints. The new Your original observation about the silent runner still stands as a real papercut — a stall is indistinguishable from a freeze when nothing prints until the end. That's on the list to improve (per-test progress and/or a watchdog). Thanks for the sharp report; it turned into a genuine reactor-robustness fix. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
When using the command
pasbuild test -m blaise-stdlib --compiler compiler/target/blaise,testrunneris using one thread at 100% for over a half hour. Sometimes multiple threads start, then disappear. I ended up stopping (ctrl-z).There is no output on the terminal during that time.
Is that expected? I could not see these tests needing to take longer than 10 minutes.
Any suggestions?
All reactions