RFR: 8287107: CgroupSubsystemFactory.setCgroupV2Path asserts with freezer controller
Ioi Lam
iklam at openjdk.java.net
Mon May 23 22:24:24 UTC 2022
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
More information about the core-libs-dev
mailing list