RFR: 8287073: NPE from CgroupV2Subsystem.getInstance()

Maxim Kartashev mkartashev at openjdk.java.net
Wed May 25 15:57:57 UTC 2022


On Wed, 25 May 2022 14:47:06 GMT, Peter Levart <plevart at openjdk.org> wrote:

>> src/java.base/linux/classes/jdk/internal/platform/CgroupSubsystemFactory.java line 113:
>> 
>>> 111:             CgroupInfo anyController = infos.values().iterator().next();
>>> 112:             CgroupSubsystem subsystem = CgroupV2Subsystem.getInstance(anyController);
>>> 113:             return subsystem != null ? new CgroupMetrics(subsystem) : null;
>> 
>> Looking at implementation of CgroupV2Subsystem.getInstance(...), it seems that it always returns != null ...
>
> `CgroupV1Subsystem.getInstance(...)` also claims that it never returns `null`, but has a code-path that actually returns `null` (when there is no active controller). Is this a possible outcome?

@plevart Are you asking about the reason for the crash or about the changes?
If it's the former, then I believe that the crash comes not from `getInstance()` returning `null`, but from further down the stack because `null` is being passed to `getInstance()`. I could be wrong in interpreting the report, though.

If the question's about the changes, then those are restricted to CgroupV2, so I'm not sure how `CgroupV1Subsystem.getInstance(...)` returning null is related. FWIW, I also don't think we are going to get here if there are no active controllers. There's this code a few lines above:

if (!result.isAnyControllersEnabled()) {
            return null;
}

-------------

PR: https://git.openjdk.java.net/jdk/pull/8803


More information about the core-libs-dev mailing list