From 9e230f5eaab6f8f53520e45cac7ef0146bcbda9c Mon Sep 17 00:00:00 2001 From: Marcono1234 Date: Tue, 4 Apr 2023 09:45:13 +0200 Subject: [PATCH] Detect Forge JVM crashes as modded & build improvements (#23) * Update GitHub workflow actions * Update Gradle wrapper * Update expected manifest URLs in VersionManifestTest * Detect Forge JVM crashes as modded --- .../workflows/gradle-wrapper-validation.yml | 2 +- .github/workflows/gradle.yml | 12 +- gradle/wrapper/gradle-wrapper.jar | Bin 58695 -> 61608 bytes gradle/wrapper/gradle-wrapper.properties | 3 +- gradlew | 269 +++++++++++------- gradlew.bat | 38 +-- .../mccrashlib/parser/JvmCrashParser.kt | 6 +- .../deobfuscator/VersionManifestTest.kt | 8 +- .../crashes/jvm/modded-forge-parsed.txt | 12 + .../resources/crashes/jvm/modded-forge.log | 62 ++++ 10 files changed, 270 insertions(+), 142 deletions(-) create mode 100644 src/test/resources/crashes/jvm/modded-forge-parsed.txt create mode 100644 src/test/resources/crashes/jvm/modded-forge.log diff --git a/.github/workflows/gradle-wrapper-validation.yml b/.github/workflows/gradle-wrapper-validation.yml index d88c325..f66d546 100644 --- a/.github/workflows/gradle-wrapper-validation.yml +++ b/.github/workflows/gradle-wrapper-validation.yml @@ -13,5 +13,5 @@ jobs: name: "Validation" runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - uses: gradle/wrapper-validation-action@v1 diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index 47f599e..cc23969 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -16,16 +16,12 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Set up JDK 11 - uses: actions/setup-java@v2 + uses: actions/setup-java@v3 with: java-version: 11 - distribution: 'adopt' - - uses: actions/checkout@v2 - - uses: eskatos/gradle-command-action@v1.3.3 + distribution: 'temurin' + - uses: gradle/gradle-build-action@v2 with: arguments: build - wrapper-cache-enabled: true - dependencies-cache-enabled: true - configuration-cache-enabled: true diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index f3d88b1c2faf2fc91d853cd5d4242b5547257070..ccebba7710deaf9f98673a68957ea02138b60d0a 100644 GIT binary patch delta 41960 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 delta 39019 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 \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null -APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum warn () { echo "$*" -} +} >&2 die () { echo echo "$*" echo exit 1 -} +} >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -97,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else - JAVACMD="java" + JAVACMD=java which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the @@ -105,79 +140,105 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac fi -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. # For Cygwin or MSYS, switch paths to Windows format before running java -if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) fi - i=`expr $i + 1` + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg done - case $i in - 0) set -- ;; - 1) set -- "$args0" ;; - 2) set -- "$args0" "$args1" ;; - 3) set -- "$args0" "$args1" "$args2" ;; - 4) set -- "$args0" "$args1" "$args2" "$args3" ;; - 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; - esac fi -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=`save "$@"` +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat index 9618d8d..93e3f59 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -14,7 +14,7 @@ @rem limitations under the License. @rem -@if "%DEBUG%" == "" @echo off +@if "%DEBUG%"=="" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @@ -25,10 +25,14 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 -if "%DIRNAME%" == "" set DIRNAME=. +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" @@ -37,7 +41,7 @@ if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 -if "%ERRORLEVEL%" == "0" goto init +if %ERRORLEVEL% equ 0 goto execute echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. @@ -51,7 +55,7 @@ goto fail set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe -if exist "%JAVA_EXE%" goto init +if exist "%JAVA_EXE%" goto execute echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% @@ -61,38 +65,26 @@ echo location of your Java installation. goto fail -:init -@rem Get command-line arguments, handling Windows variants - -if not "%OS%" == "Windows_NT" goto win9xME_args - -:win9xME_args -@rem Slurp the command line arguments. -set CMD_LINE_ARGS= -set _SKIP=2 - -:win9xME_args_slurp -if "x%~1" == "x" goto execute - -set CMD_LINE_ARGS=%* - :execute @rem Setup the command line set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + @rem Execute Gradle -"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* :end @rem End local scope for the variables with windows NT shell -if "%ERRORLEVEL%"=="0" goto mainEnd +if %ERRORLEVEL% equ 0 goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! -if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 -exit /b 1 +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% :mainEnd if "%OS%"=="Windows_NT" endlocal diff --git a/src/main/kotlin/com/urielsalis/mccrashlib/parser/JvmCrashParser.kt b/src/main/kotlin/com/urielsalis/mccrashlib/parser/JvmCrashParser.kt index 48c807f..9640744 100644 --- a/src/main/kotlin/com/urielsalis/mccrashlib/parser/JvmCrashParser.kt +++ b/src/main/kotlin/com/urielsalis/mccrashlib/parser/JvmCrashParser.kt @@ -150,7 +150,11 @@ class JvmCrashParser : CrashParser { "--tweakClass optifine.OptiFineTweaker", "net.fabricmc.loader.launch.knot.KnotClient", "net.fabricmc.loader.impl.launch.knot.KnotClient", // new class name - "--version fabric-loader-" + "--version fabric-loader-", + // Minecraft Forge + "--launchTarget forgeclient", + "--launchTarget fmlserver", + "--fml.forgeVersion" ) return lines.any { moddedStrings.any(it::contains) } } diff --git a/src/test/kotlin/com/urielsalis/mccrashlib/deobfuscator/VersionManifestTest.kt b/src/test/kotlin/com/urielsalis/mccrashlib/deobfuscator/VersionManifestTest.kt index 7f7a085..be4aafc 100644 --- a/src/test/kotlin/com/urielsalis/mccrashlib/deobfuscator/VersionManifestTest.kt +++ b/src/test/kotlin/com/urielsalis/mccrashlib/deobfuscator/VersionManifestTest.kt @@ -28,7 +28,7 @@ internal class VersionManifestTest { Version( "1.16.2", VersionType.RELEASE, - "https://launchermeta.mojang.com/v1/packages/a5cd0a3e52f38c9fb713010b07f7ae89e183b0ff/1.16.2.json", + "https://piston-meta.mojang.com/v1/packages/a5cd0a3e52f38c9fb713010b07f7ae89e183b0ff/1.16.2.json", OffsetDateTime.parse("2022-02-25T13:15:31+00:00"), OffsetDateTime.parse("2020-08-11T10:13:46+00:00") ), @@ -41,7 +41,7 @@ internal class VersionManifestTest { Version( "1.16.2-rc2", VersionType.SNAPSHOT, - "https://launchermeta.mojang.com/v1/packages/0bea810bb372c8f44f2946b98288e298c48edd4d/1.16.2-rc2.json", + "https://piston-meta.mojang.com/v1/packages/0bea810bb372c8f44f2946b98288e298c48edd4d/1.16.2-rc2.json", OffsetDateTime.parse("2022-02-25T13:15:31+00:00"), OffsetDateTime.parse("2020-08-10T11:43:36+00:00") ), @@ -54,7 +54,7 @@ internal class VersionManifestTest { Version( "b1.5", VersionType.OLD_BETA, - "https://launchermeta.mojang.com/v1/packages/3fa704bd73444368f04351d6d4add8a3eead9b4e/b1.5.json", + "https://piston-meta.mojang.com/v1/packages/3fa704bd73444368f04351d6d4add8a3eead9b4e/b1.5.json", OffsetDateTime.parse("2022-03-10T09:51:38+00:00"), OffsetDateTime.parse("2011-04-18T22:00:00+00:00") ), @@ -67,7 +67,7 @@ internal class VersionManifestTest { Version( "rd-132328", VersionType.OLD_ALPHA, - "https://launchermeta.mojang.com/v1/packages/4ec49ff663f96e78a5cf0d9538adb9d1358fc485/rd-132328.json", + "https://piston-meta.mojang.com/v1/packages/4ec49ff663f96e78a5cf0d9538adb9d1358fc485/rd-132328.json", OffsetDateTime.parse("2022-03-10T09:51:38+00:00"), OffsetDateTime.parse("2009-05-13T21:28:00+00:00") ), diff --git a/src/test/resources/crashes/jvm/modded-forge-parsed.txt b/src/test/resources/crashes/jvm/modded-forge-parsed.txt new file mode 100644 index 0000000..d3a241c --- /dev/null +++ b/src/test/resources/crashes/jvm/modded-forge-parsed.txt @@ -0,0 +1,12 @@ +{ + "exception" : "EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00007ff9ba14cb49, pid=7716, tid=1424", + "problematicFrame" : { + "location" : "[jvm.dll+0x2ecb49]" + }, + "nativeFrames" : [ { + "location" : "[jvm.dll+0x2ecb49]" + } ], + "javaFrames" : null, + "minecraftVersion" : null, + "isModded" : true +} \ No newline at end of file diff --git a/src/test/resources/crashes/jvm/modded-forge.log b/src/test/resources/crashes/jvm/modded-forge.log new file mode 100644 index 0000000..33b79e0 --- /dev/null +++ b/src/test/resources/crashes/jvm/modded-forge.log @@ -0,0 +1,62 @@ +# +# A fatal error has been detected by the Java Runtime Environment: +# +# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00007ff9ba14cb49, pid=7716, tid=1424 +# +# JRE version: OpenJDK Runtime Environment Microsoft-32931 (17.0.3+7) (build 17.0.3+7-LTS) +# Java VM: OpenJDK 64-Bit Server VM Microsoft-32931 (17.0.3+7-LTS, mixed mode, tiered, compressed oops, compressed class ptrs, g1 gc, windows-amd64) +# Problematic frame: +# V [jvm.dll+0x2ecb49] +# +# No core dump will be written. Minidumps are not enabled by default on client versions of Windows +# +# If you would like to submit a bug report, please visit: +# https://github.com/microsoft/openjdk/issues +# + +--------------- S U M M A R Y ------------ + +Command Line: -XX:HeapDumpPath=MojangTricksIntelDriversForPerformance_javaw.exe_minecraft.exe.heapdump -Dos.name=Windows 10 ... --userType msa --versionType release --width 854 --height 480 --launchTarget forgeclient --fml.forgeVersion 43.2.3 --fml.mcVersion 1.19.2 --fml.forgeGroup net.minecraftforge --fml.mcpVersion 20220805.130853 + +Host: AMD FX(tm)-8350 Eight-Core Processor , 8 cores, 15G, Windows 10 , 64 bit Build 19041 (10.0.19041.2364) +Time: Mon Jan 16 02:43:24 2023 RTZ 2 (s 10 , 64 bit Build 19041 (10.0.19041.2364) elapsed time: 494.588787 seconds (0d 0h 8m 14s) + +--------------- T H R E A D --------------- + +Current thread (0x000001dcdd6e3750): VMThread "VM Thread" [stack: 0x0000001b38200000,0x0000001b38300000] [id=1424] + +Stack: [0x0000001b38200000,0x0000001b38300000], sp=0x0000001b382feaa8, free space=1018k +Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) +V [jvm.dll+0x2ecb49] + + +siginfo: EXCEPTION_ACCESS_VIOLATION (0xc0000005), writing address 0x0000007f00000020 + + +Register to memory mapping: +... + +Environment Variables: +PATH=C:\Program Files\Common Files\Oracle\Java\javapath;C:\Program Files\BellSoft\LibericaJRE-18-Full\bin\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;... +USERNAME=Uta +OS=Windows_NT +PROCESSOR_IDENTIFIER=AMD64 Family 21 Model 2 Stepping 0, AuthenticAMD + + + +--------------- S Y S T E M --------------- + +OS: + Windows 10 , 64 bit Build 19041 (10.0.19041.2364) +OS uptime: 0 days 1:22 hours + +CPU: total 8 (initial active 8) (8 cores per cpu, 1 threads per core) family 21 model 2 stepping 0 microcode 0x0, cx8, cmov, fxsr, mmx, 3dnowpref, sse, sse2, sse3, ssse3, sse4a, sse4.1, sse4.2, popcnt, lzcnt, tsc, tscinvbit, avx, aes, clmul, bmi1, fma, vzeroupper, clflush + +Memory: 4k page, system-wide physical 16341M (5611M free) +TotalPageFile size 24433M (AvailPageFile size 8341M) +current process WorkingSet (physical memory assigned to process): 5853M, peak: 5855M +current process commit charge ("private bytes"): 6881M, peak: 6884M + +vm_info: OpenJDK 64-Bit Server VM (17.0.3+7-LTS) for windows-amd64 JRE (17.0.3+7-LTS), built on Apr 20 2022 04:24:16 by "" with MS VC++ 16.10 / 16.11 (VS2019) + +END.