On Wed, 25 May 2022 14:47:06 GMT, Peter Levart <plev...@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

Reply via email to