Skip to content

Nodejs won't exit and eats all memory #1120

Description

@viceice

Continuation of #1052

I'll try to create a minimal reproduction soon. for now here's a profile what's happening in this test:

> pnpm i
> pnpm build
> pnpm test:teavm-wasm

see it force exits after 10s.

Statistical profiling result from .\isolate-000002CE513A1000-62360-v8.log, (650 ticks, 0 unaccounted, 0 excluded).

 [Shared libraries]:
   ticks  total  nonlib   name
    623   95.8%          C:\WINDOWS\SYSTEM32\ntdll.dll
      9    1.4%          C:\Users\kriese\scoop\apps\nodejs-lts\current\node.exe

 [JavaScript]:
   ticks  total  nonlib   name
     12    1.8%   66.7%  JS: *java.math.Division::monReduction
      4    0.6%   22.2%  JS: *java.math.Multiplication::square
      1    0.2%    5.6%  JS: *java.math.Multiplication::multPAP
      1    0.2%    5.6%  JS: *java.math.BitLevel::shiftRight

 [C++]:
   ticks  total  nonlib   name

 [Summary]:
   ticks  total  nonlib   name
     18    2.8%  100.0%  JavaScript
      0    0.0%    0.0%  C++
      0    0.0%    0.0%  GC
    632   97.2%          Shared libraries

 [C++ entry points]:
   ticks    cpp   total   name

 [Bottom up (heavy) profile]:
  Note: percentage shows a share of a particular caller in the total
  amount of its parent calls.
  Callers occupying less than 1.0% are not shown.

   ticks parent  name
    623   95.8%  C:\WINDOWS\SYSTEM32\ntdll.dll

     12    1.8%  JS: *java.math.Division::monReduction
     10   83.3%    JS: java.math.Division::slidingWindow
     10  100.0%      JS: java.math.Division::oddModPow
     10  100.0%        JS: java.math.BigInteger::modPow
      9   90.0%          JS: org.bouncycastle.math.Primes::enhancedMRProbablePrimeTest
      9  100.0%            JS: org.bouncycastle.crypto.params.RSAKeyParameters::validate
      1   10.0%          JS: org.bouncycastle.crypto.engines.RSACoreEngine::processBlock
      1  100.0%            JS: org.bouncycastle.crypto.engines.RSABlindedEngine::processInput
      2   16.7%    JS: *java.math.Division::slidingWindow
      2  100.0%      JS: java.math.Division::oddModPow
      2  100.0%        JS: java.math.BigInteger::modPow
      2  100.0%          JS: org.bouncycastle.crypto.engines.RSACoreEngine::processBlock
      2  100.0%            JS: org.bouncycastle.crypto.engines.RSABlindedEngine::processInput

      9    1.4%  C:\Users\kriese\scoop\apps\nodejs-lts\current\node.exe
      4   44.4%    JS: ^compileForInternalLoader node:internal/bootstrap/realm:384:27
      4  100.0%      JS: ^requireBuiltin node:internal/bootstrap/realm:421:24
      1   25.0%        JS: ~getRandomValues node:internal/crypto/webcrypto:962:25
      1  100.0%          JS: ~<anonymous> :1:20
      1  100.0%            JS: java.security.SecureRandom::nextBytes
      1   25.0%        JS: ~<anonymous> node:internal/streams/compose:1:1
      1  100.0%          JS: ^compileForInternalLoader node:internal/bootstrap/realm:384:27
      1  100.0%            JS: ^requireBuiltin node:internal/bootstrap/realm:421:24
      1   25.0%        JS: ~<anonymous> node:internal/modules/esm/loader:1:1
      1  100.0%          JS: ^compileForInternalLoader node:internal/bootstrap/realm:384:27
      1  100.0%            JS: ^requireBuiltin node:internal/bootstrap/realm:421:24
      1   25.0%        JS: ~#createModuleJob node:internal/modules/esm/loader:616:19
      1  100.0%          JS: ~#getJobFromResolveResult node:internal/modules/esm/loader:337:27
      1  100.0%            JS: ~getModuleJobForImport node:internal/modules/esm/loader:309:30
      3   33.3%    C:\Users\kriese\scoop\apps\nodejs-lts\current\node.exe
      1   33.3%      JS: org.bouncycastle.math.raw.Nat::fromBigInteger
      1  100.0%        JS: org.bouncycastle.util.BigIntegers::modOddInverse
      1  100.0%          JS: org.bouncycastle.bcpg.RSASecretBCPGKey::<init>
      1  100.0%            JS: org.bouncycastle.openpgp.PGPSecretKey::extractPrivateKey
      1   33.3%      JS: org.bouncycastle.crypto.modes.CFBBlockCipher::getAlgorithmName
      1  100.0%        JS: org.bouncycastle.crypto.modes.CFBBlockCipher::getAlgorithmName@caller
      1  100.0%          JS: org.bouncycastle.crypto.DefaultBufferedBlockCipher::<init>
      1  100.0%            JS: org.bouncycastle.openpgp.operator.bc.BcUtil::createStreamCipher
      1   33.3%      C:\Users\kriese\scoop\apps\nodejs-lts\current\node.exe
      1  100.0%        JS: ~undestroy node:internal/streams/destroy:173:19
      1  100.0%          JS: ~initSocketHandle node:net:318:26
      1  100.0%            JS: ~Socket node:net:362:16
      1   11.1%    JS: ~load file:///C:/Users/kriese/projects/gh/renovatebot/pgp/dist/teavm/lib.wasm-runtime.js:736:20
      1  100.0%      C:\Users\kriese\scoop\apps\nodejs-lts\current\node.exe

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions