From 496402844f410b822ab66d34f410cbca1e4844f4 Mon Sep 17 00:00:00 2001 From: Florian Schmaus Date: Thu, 9 Feb 2023 14:14:59 +0100 Subject: [PATCH] blooprifle: add -XX:+IgnoreUnrecognizedVMOptions to hardCodedDefaultJavaOpts Some (most?) JVMs fail to launch if they encounter unrecognized non-standard options. For example, executing scala-cli on a armle machine running Debian 11 (Bullseye) with openjdk-17-jre-headless installed results in flo@raspi:~$ scala-cli bloop output Unrecognized VM option 'MaxInlineLevel=20' Did you mean 'MaxForceInlineLevel='? Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit. flo@raspi:~$ java -version openjdk version "17.0.6" 2023-01-17 OpenJDK Runtime Environment (build 17.0.6+10-Debian-1deb11u1) OpenJDK Zero VM (build 17.0.6+10-Debian-1deb11u1, interpreted mode) --- .../scala/build/blooprifle/BloopRifleConfig.scala | 1 + .../scala/scala/cli/integration/BloopTests.scala | 14 -------------- 2 files changed, 1 insertion(+), 14 deletions(-) diff --git a/modules/bloop-rifle/src/main/scala/scala/build/blooprifle/BloopRifleConfig.scala b/modules/bloop-rifle/src/main/scala/scala/build/blooprifle/BloopRifleConfig.scala index d756e04f61..1cf9932575 100644 --- a/modules/bloop-rifle/src/main/scala/scala/build/blooprifle/BloopRifleConfig.scala +++ b/modules/bloop-rifle/src/main/scala/scala/build/blooprifle/BloopRifleConfig.scala @@ -77,6 +77,7 @@ object BloopRifleConfig { "-XX:+UseZGC", // ZGC returns unused memory back to the OS, so Bloop does not occupy so much memory if unused "-XX:ZUncommitDelay=30", "-XX:ZCollectionInterval=5", + "-XX:+IgnoreUnrecognizedVMOptions", // Do not fail if an non-standard (-X, -XX) VM option is not recognized. "-Dbloop.ignore-sig-int=true" ) diff --git a/modules/integration/src/test/scala/scala/cli/integration/BloopTests.scala b/modules/integration/src/test/scala/scala/cli/integration/BloopTests.scala index 62980603d4..79490252c0 100644 --- a/modules/integration/src/test/scala/scala/cli/integration/BloopTests.scala +++ b/modules/integration/src/test/scala/scala/cli/integration/BloopTests.scala @@ -56,20 +56,6 @@ class BloopTests extends ScalaCliSuite { testScalaTermination(Constants.bloopVersion, shouldRestart = false) } - test("invalid bloop options passed via cli cause bloop start failure") { - TestInputs.empty.fromRoot { root => - runScalaCli("bloop", "exit").call(cwd = root) - val res = runScalaCli("bloop", "start", "--bloop-java-opt", "-zzefhjzl").call( - cwd = root, - stderr = os.Pipe, - check = false, - mergeErrIntoOut = true - ) - expect(res.exitCode == 1) - expect(res.out.text().contains("Server failed with exit code 1")) - } - } - test("invalid bloop options passed via global bloop config json file cause bloop start failure") { val inputs = TestInputs( os.rel / "bloop.json" ->