- 
                Notifications
    You must be signed in to change notification settings 
- Fork 5.2k
[wasm] Fix a race condition in adding payloads for helix #65995
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
| I couldn't figure out the best area label to add to this PR. If you have write-permissions please help me learn by adding exactly one area label. | 
| Tagging subscribers to 'arch-wasm': @lewing Issue DetailsThe issue shows up only in Wasm.Build.Tests for the For this non-workloads testing case, we copy  The build logs show that the missing file ( We add  But a recent change also added  This commit: 
 Fixes #65956 
 | 
| /azp run runtime-wasm | 
| Azure Pipelines successfully started running 1 pipeline(s). | 
The issue shows up only in Wasm.Build.Tests for the `TestUsingWorkloads!=true` case, as `clang --version` failing with: ``` /datadisks/disk1/work/A0100914/p/build/emsdk/upstream/bin/clang: error while loading shared libraries: libLLVM-13git.so: cannot open shared object file: No such file or directory (TaskId:231) ``` For this non-workloads testing case, we copy `emscripten` from the system copy to the git checkout. And then use that directory for the payload. The build logs show that the missing file (`libLLVM-13git.so`) does get copied as part of copying `/usr/local/emscripten/emsdk` to `$(RepoRoot)/src/mono/wasm/emsdk`. But the file, and a few others seem to be missing in the final helix payload. We add `emsdk` to the payload for target path `build/emsdk`. But a recent change also added `node` for this case with a target path `build/emsdk/node`, with an overlapping path with `build/emsdk`. I believe this is causing an issue where these directories are being processed in parallel, and cause some files get missed. This commit: 1. Add `node` only when needed (skip WBT for example); 2. Use a non-overlapping path for `node`, `build/emsdk-node`. Fixes dotnet#65956
| /azp run runtime-wasm | 
| Azure Pipelines successfully started running 1 pipeline(s). | 
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks like WasmBuildTests are now using wrong node, resulting in        [wasm test] [07:28:52] fail: Error: NodeJS at '/usr/local/nodejs/node-v10.17.0-linux-x64/bin/node' has too low version '10.17.0'
| 
  | 
| /azp run runtime-wasm | 
| Azure Pipelines successfully started running 1 pipeline(s). | 
| The windows test failures are #65978 . | 
| /backport to release/7.0-preview2 | 
| Started backporting to release/7.0-preview2: https://github.com/dotnet/runtime/actions/runs/1965439035 | 
| @radical an error occurred while backporting to release/7.0-preview2, please check the run log for details! Error: @radical is not a repo collaborator, backporting is not allowed. If you're a collaborator please make sure your Microsoft team membership visibility is set to Public on https://github.com/orgs/microsoft/people?query=radical | 
* [wasm] Fix a race condition in adding payloads for helix The issue shows up only in Wasm.Build.Tests for the `TestUsingWorkloads!=true` case, as `clang --version` failing with: ``` /datadisks/disk1/work/A0100914/p/build/emsdk/upstream/bin/clang: error while loading shared libraries: libLLVM-13git.so: cannot open shared object file: No such file or directory (TaskId:231) ``` For this non-workloads testing case, we copy `emscripten` from the system copy to the git checkout. And then use that directory for the payload. The build logs show that the missing file (`libLLVM-13git.so`) does get copied as part of copying `/usr/local/emscripten/emsdk` to `$(RepoRoot)/src/mono/wasm/emsdk`. But the file, and a few others seem to be missing in the final helix payload. We add `emsdk` to the payload for target path `build/emsdk`. But a recent change also added `node` for this case with a target path `build/emsdk/node`, with an overlapping path with `build/emsdk`. I believe this is causing an issue where these directories are being processed in parallel, and cause some files get missed. This commit: 1. Add `node` only when needed (skip WBT for example); 2. Use a non-overlapping path for `node`, `build/emsdk-node`. Fixes dotnet#65956 * Change `_HelixLocalNodePath` evaluation order Co-authored-by: Radek Doulik <radekdoulik@gmail.com> (cherry picked from commit 1665aca)
The issue shows up only in Wasm.Build.Tests for the
TestUsingWorkloads!=truecase, asclang --versionfailing with:For this non-workloads testing case, we copy
emscriptenfrom thesystem copy to the git checkout. And then use that directory for the
payload.
The build logs show that the missing file (
libLLVM-13git.so) does getcopied as part of copying
/usr/local/emscripten/emsdkto$(RepoRoot)/src/mono/wasm/emsdk. But the file, and a few others seemto be missing in the final helix payload.
We add
emsdkto the payload for target pathbuild/emsdk.But a recent change also added
nodefor this case with a target pathbuild/emsdk/node, with an overlapping path withbuild/emsdk. Ibelieve this is causing an issue where these directories are being
processed in parallel, and cause some files get missed.
This commit:
nodeonly when needed (skip WBT for example);node,build/emsdk-node.Fixes #65956