This PR fixes a bug found on an Ubuntu host that's mostly running with cgroupv2, but there's a controller (freezer) that is mounted in cgroupv1 mode.
The container support code in the VM and JDK checks if we have simultaneously mounted v1 and v2 containers. If so, we revert to "hybrid" mode (which is essentially v1). However, the "hybrid checks" only considers the following controllers that Java cares about: - cpu - cpuacct - cpuset - blkio - memory - pids If only "freezer" is mounted in v1 mode, Java will start in V2 mode. Later, when `setCgroupV2Path()` sees the first line in /proc/self/cgroup, it runs into the assert. $ cat /proc/self/cgroup 1:freezer:/ 0::/user.slice/user-1001.slice/session-85.scope The fix is simple -- when we get to `setCgroupV2Path()`, we have already decided that the system has not mounted any v1 controllers that we care about, so we should just ignore all the v1 controllers (which has a non-empty name). ------------- Commit messages: - 8287107: CgroupSubsystemFactory.setCgroupV2Path asserts with freezer controller Changes: https://git.openjdk.java.net/jdk/pull/8858/files Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=8858&range=00 Issue: https://bugs.openjdk.java.net/browse/JDK-8287107 Stats: 116 lines in 3 files changed: 113 ins; 0 del; 3 mod Patch: https://git.openjdk.java.net/jdk/pull/8858.diff Fetch: git fetch https://git.openjdk.java.net/jdk pull/8858/head:pull/8858 PR: https://git.openjdk.java.net/jdk/pull/8858