diff --git a/src/node.ts b/src/node.ts index 595bffb..5cb4448 100644 --- a/src/node.ts +++ b/src/node.ts @@ -509,7 +509,9 @@ export function main(argv: string[]) { console.error("usage: java-web [-cp path] [-Dkey=value] Main [args] | -jar app.jar [args]"); process.exit(2); } - Promise.resolve().then(() => runNode(o)).then((code) => process.exit(code), (e) => { + // Collecting first: node's exit teardown can deadlock while it frees very + // large array buffers (seen on x64 CI runners with a few hundred MB left). + Promise.resolve().then(() => runNode(o)).then((code) => (globalThis.gc?.(), process.exit(code)), (e) => { console.error(`java-web: ${(e as Error).message}`); process.exit(1); }); diff --git a/test/jtreg/passing.txt b/test/jtreg/passing.txt index 4d4e403..c31b226 100644 --- a/test/jtreg/passing.txt +++ b/test/jtreg/passing.txt @@ -1426,6 +1426,7 @@ java/math/BigDecimal/ToPlainStringTests.java java/math/BigDecimal/ValueOfDouble.java java/math/BigDecimal/ZeroScalingTests.java java/math/BigInteger/BigIntegerParallelMultiplyTest.java +java/math/BigInteger/BitLengthOverflow.java java/math/BigInteger/CompareToTests.java java/math/BigInteger/DoubleValueOverflow.java java/math/BigInteger/HashCode.java diff --git a/test/jtreg/times.tsv b/test/jtreg/times.tsv index ca2a829..7f1f14e 100644 --- a/test/jtreg/times.tsv +++ b/test/jtreg/times.tsv @@ -2761,6 +2761,7 @@ 2392 java/util/PriorityQueue/RemoveContains.java 2389 java/nio/MappedByteBuffer/ForceViews.java 2389 java/io/Externalizable/compatibility/ExternalizableBlockData.java +2389 java/math/BigInteger/BitLengthOverflow.java 2386 java/security/cert/PKIXBuilderParameters/InvalidParameters.java 2386 java/net/URL/RelativeURLTest.java 2385 java/util/HashMap/OverrideIsEmpty.java