-
-
Notifications
You must be signed in to change notification settings - Fork 6.6k
Description
Version
28.1.3
Steps to reproduce
- Run jest with worker count higher than 1. Empty test that just sleeps for a minute will do.
- Kill one of the workers intentionally. In practice, they may die for whatever reason, for us we suspect it is OOM.
- Jest will indefinitely hang.
Related and recent fix https://github.com/facebook/jest/pull/13054/files#diff-e99351d361fdd6f55d39c7c41af94576baccc2b9dce73a5bfd0b516c6ab648e9
However the workers may crash with other signals and those scenarios are not covered. In our case, after some debugging, the signal is null. For some reason these workers are crashing in jest-runtime at the compileFunction.call line, and causes a null exit code, which gets ignored. jest-runner waits on a thread pool that'll never fulfil the submitted job.
The signal appears to be SIGKILL instead of SIBABRT , and the exitCode appears to be null. Please see screenshots of the debug process.
The above outputs
ChildProcessWorker exit: exitCode = null, pid = 1378, signal = SIGKILL
We apologize for the lack of a minimal reproduction, but hope the thorough investigation given will substitute.
Expected behavior
Jest exits when one of the workers crashes for whatever reason.
Actual behavior
Jest hangs when workers are unexpectedly SIGKILL'ed.
Additional context
This does not happen with typescript v4.6.4. This only happens after we upgraded to v4.7.4. This may not be relevant, we are thinking this is an OOM.
Environment
System:
ubuntu-jdk-npm:0.40.1920
Binaries:
Typescript 4.7.4
Node 16.13.0