Closed arcanis closed 4 years ago
Ugh … I’m pretty sure that’s a V8 bug, and I’ll see if I can find anything on it, but I guess it would be fine to flip the order of the calls around again only for the main instance as a temporary workaround.
@arcanis It’s hard to actually get access to a failing process, and since you’re most likely more familiar with yarn’s internals than me, I figured I’d ask:
As part of the output of your reproduction, each crash backtrace is preceded by information like this:
Temporary fixture folder: /tmp/tmp-20302k5Rq7QEVOdFX
Command failed: /home/xxxx/.nvm/versions/node/v12.16.0/bin/node /tmp/berry/packages/yarnpkg-cli/bundles/yarn.js install
However, running that command in that directory doesn’t seem to lead to a crash… any suggestions?
I think I managed to make a basic repro! Clone the repository, then in one tab:
yarn build:cli
yarn test:integration pnp.test.js -t 'it should not cache the postinstall artifacts'
yarn node ./packages/acceptance-tests/test-server.js
This should give you two things: a failing test directory (similar to the one you noticed), and the url for a mock registry (http://localhost:<port>
). Keeping the server running, open another tab, cd into the failing test directory, then run the following (update the path to Node and Yarn as needed):
export YARN_NPM_REGISTRY_SERVER=http://localhost:53994
export YARN_GLOBAL_FOLDER=/tmp/.yarn/global
export YARN_UNSAFE_HTTP_WHITELIST=localhost
rm -rf .yarn yarn.lock && /Users/mael.nison/.fnm/node-versions/v12.16.0/installation/bin/node /Users/mael.nison/berry/packages/yarnpkg-cli/bundles/yarn.js install
This should reproduce the problem. You can run the rm -rf ... && node
part as many times as you need, it should keep reproing.
@arcanis I’m afraid that doesn’t quite work for me (x64 Linux, Ubuntu 19.10), partly because this seems flaky and running yarn test:integration pnp.test.js
doesn’t always fail with the same tests. :/
This is definitely related to WASM usage, which might make it a bit easier to figure out what is causing this. I don’t think fully understanding the issue would be required for a fix, but it would be really nice to have a regression test for this…
Fwiw, I’ve opened a V8 CL in https://chromium-review.googlesource.com/c/v8/v8/+/2061548 and it currently looks like there’s actually no correct ordering of disposing an Isolate and detaching it from the platform, either one will have a race condition. Let’s see how the conversation there goes. :grimacing:
What steps will reproduce the bug?
How often does it reproduce? Is there a required condition?
It seemed to crash consistently across all three systems. The same tests are always failing.
What is the expected behavior?
Tests should pass like here (built yesterday with Node 12.15.0): https://github.com/yarnpkg/berry/runs/438612900
What do you see instead?
Tests are failing (built just now with Node 12.16.0): https://github.com/yarnpkg/berry/runs/441525249