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

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 

  Stats: 116 lines in 3 files changed: 113 ins; 0 del; 3 mod
  Fetch: git fetch pull/8858/head:pull/8858


Reply via email to