I was surprised when updating the
nixpkgs-unstable channel today to discover that there’s no prebuilt substitute for
x86_64-darwin. I tracked down the failed build on Hydra and it looks like the culprit was a panic when running tests:
runtime: program exceeds 50-thread limit
fatal error: thread exhaustion
Is this an artifact of sandboxing? The tests just passed for me building locally, but I don’t have sandboxing enabled on Darwin.
I’m also not sure how to view the history of this job on Hydra to see if this is just an intermittent failure or not.
To view the history, click “Job” on the toolbar and select “Overview”. This gives you this URL:
But yeah looks like a common intermittent failure. To prevent this in the future, we can add
jobs.go.x86_64-darwin to release.nix:
This blocks the release if go is not building. This seems reasonable considering how long it takes. Adding llvm, rustc, ghc, etc. wouldn’t hurt either. We can’t expect everything to work on unstable but most of these toolchains are pretty important.
The previous failing build looks like a resource exhaustion issue too:
pipe: too many open. It seems to me that either we need a way to ask Go to use fewer resources when running tests, or to increase the resources available.