Repository navigation
Flaky ELIFECYCLE/3221225477 exit error with win10/nodejs@14 #2660
Description
Activity
Error
3221225477stands for Access violation on Windows. Does your script (or any of your dependencies) uses any native modules (.nodefiles) that are compiled from C++ source? If you are using only JavaScript files, it may be a bug in V8 engine, or maybe a stack overflow if you have too deep recursion and V8 miscalculated stack size.I cloned your repo and experienced the same error on first run, but I cannot reproduce it again (tried more than 200 times).
True it's harder to hit locally, on the GitHub CI it's like 1 exit in 4 runs.
I doubt it may be relate to fresh install,
babeldo keep cache under./node_modules/.cache,
but deleting it locally or usingnpm cidon't seem to trigger the exit.And one wired thing is I only got the exit in dr-js/dr-dev.
My other repo use similar setup do not hit the exit, locally or on GitHub CI, like: dr-js/dr-js and dr-js/dr-nodeThe difference I can think of may be:
- the 1 level deeper nested npm run
- the source code is reused to build itself:
- imported from the
./script/index.jswith
"script-pack-test": "node -r @babel/register ./script verbose pack test" - later build by
babelwith
"build-library": "babel ./source --out-dir ./output-gitignore/library"
- imported from the
And I only see exit on
win10 + nodejs@14so far:- all pass: https://github.com/dr-js/dr-dev/actions/runs/91856389
- nodejs@14 fail: https://github.com/dr-js/dr-dev/actions/runs/91867942
I'll add more detail if I manage to get the exit again,
and I think to reproduce the CI exit you can forkdr-js/dr-devand push some change to trigger the CII also created a branch for CI to test
win10 + nodejs@12|13|14: test-3221225477-exit and got the same nodejs@14 fail on first run: https://github.com/dr-js/dr-dev/actions/runs/91997364Some update:
Tried reduce the script layer to 1 level of npm, and got 1 exit in 4 CI runs:
- 1 fail 1 pass: https://github.com/dr-js/dr-dev/actions/runs/92715420
- 2 pass: https://github.com/dr-js/dr-dev/actions/runs/92721561
Then Run directly with node, and got a powershell error:
- https://github.com/dr-js/dr-dev/actions/runs/92731124
> node ./node_modules/@dr-js/dev/bin/index.js --EE BABEL_ENV=module -E -- node ./node_modules/@babel/cli/bin/babel.js ./source --out-dir ./output-gitignore/module shell: C:\Program Files\PowerShell\7\pwsh.EXE -command ". '{0}'" ##[error]Process completed with exit code 1.
So change to cmd and got 1 exit in 4 runs:
- 2 pass: https://github.com/dr-js/dr-dev/actions/runs/92733541
- 1 fail 1 pass: https://github.com/dr-js/dr-dev/actions/runs/92734367
> node ./node_modules/@babel/cli/bin/babel.js ./source --out-dir ./output-gitignore/library shell: C:\windows\system32\cmd.EXE /D /E:ON /V:OFF /S /C "CALL "{0}"" ##[error]Process completed with exit code -1073741819.
2 error happens on the command with 1 more layers of
spawn, but the one with cmd is notUpdate:
Currently reduced test case to:
https://github.com/dr-js/dr-dev/actions/runs/92784081But compared to previous test case with more files, the fail rate seems lower (1 fail vs 2 early fail):
https://github.com/dr-js/dr-dev/actions/runs/92775421Maybe related to the reduce file count to resolve and parse?
Still not sure if both plugin is need to trigger the exit, will continue reduce test later.Update:
Enabled more debug log and found the exit happens before the
@babel/envplugin gets load:{TIMESTAMP} babel:config:loading:files:configuration Found configuration 'd:\\a\\dr-dev\\dr-dev\\babel.config.js' from 'd:\\a\\dr-dev\\dr-dev'. {TIMESTAMP} babel:config:loading:files:plugins Loaded plugin 'minify-replace' from 'd:\\a\\dr-dev\\dr-dev'. {TIMESTAMP} babel:config:loading:files:plugins Loaded plugin 'module-resolver' from 'd:\\a\\dr-dev\\dr-dev'. <-- may exit with exit code -1073741819 --> {TIMESTAMP} babel:config:loading:files:plugins Loaded preset '@babel/env' from 'd:\\a\\dr-dev\\dr-dev'. source\babel.js -> output-gitignore\library\babel.js {TIMESTAMP} babel:config:loading:files:configuration Found configuration 'd:\\a\\dr-dev\\dr-dev\\babel.config.js' from 'd:\\a\\dr-dev\\dr-dev'. {TIMESTAMP} babel:config:loading:files:configuration Found configuration 'd:\\a\\dr-dev\\dr-dev\\babel.config.js' from 'd:\\a\\dr-dev\\dr-dev'. source\common\dev.js -> output-gitignore\library\common\dev.jsRelated CI run: https://github.com/dr-js/dr-dev/actions/runs/92845322
Did you find a workaround or the rootcause?
I'm experiencing the same kind of issue with a simple 'npm test' on a Windows Server 2016 + Node@14 setup when it's scheduled through the Windows Task Scheduler: flaky failures with 3221225477 error code.
Running 'npm test' in a terminal works 100% of the time though.Not yet, for me the error is hard to trigger on my local win10 laptop (1 in 50), but very often on GitHub Action (1 in 3).
With the above added test, my current guess is the problem maybe win10 plus:
- the platform is under virtualization (CI)
- not work well with too many CPU/RAM
- heavy fs IO on some fs/disk/device
I can confirm the platform is also virtualized on my side (VM)
- added 2 commits that reference this issue
on Jul 11, 2020 Update:
just did a few test with
nodejs@14.4.0and the problem seems gone.
also verify again withnodejs@14.1.0still error with:exit code -1073741819Related CI run:
- test 14.4.0: https://github.com/dr-js/dr-dev/actions/runs/165398610 (pass, and 2 run before)
- verify 14.1.0: https://github.com/dr-js/dr-dev/actions/runs/165399476 (only the 14.1.0 fail)
I have the exact same error when executing an oracledb query with
nodejs@14.15.3
Here's the github issue.Reacted by nopol10
v14.0.0andv14.1.0What steps will reproduce the bug?
I got flaky
ELIFECYCLE/3221225477exit error from both:win32 - 10.0.17763 [x64]from (Log CI info)10.0.18363fromnode -p "os.release()"The exited process is
babel, under bootstrap JS script and multiplenpm run. the layer is like:cmd.exenpm testnpm run script-pack-testnode -r @babel/register ./script verbose pack testnpm run build-librarybabel ./source --out-dir ./output-gitignore/libraryThe main error output from GitHub Actions:
How often does it reproduce? Is there a required condition?
Flaky, same build may pass on second run
What is the expected behavior?
Not exit
What do you see instead?
Related CI runs:
And some npm error log from my local build:
Exit status 3221225477: 2020-04-29T11_46_56_044Z-debug.logExit status 4294967295(may be related?): 2020-04-29T11_46_56_095Z-debug.logAdditional information
Possible related issue about status 3221225477: nodejs/node#25512