RFR: 8286212: Cgroup v1 initialization causes NPE on some systems [v3]
Severin Gehwolf
sgehwolf at openjdk.java.net
Thu May 19 09:33:41 UTC 2022
On Thu, 19 May 2022 06:00:06 GMT, Ioi Lam <iklam at openjdk.org> wrote:
>> Severin Gehwolf has updated the pull request incrementally with two additional commits since the last revision:
>>
>> - Refactor hotspot gtest
>> - Separate into function. Fix comment.
>
> src/hotspot/os/linux/cgroupV1Subsystem_linux.cpp line 86:
>
>> 84: const char* cgroup_p = cgroup_path;
>> 85: int last_slash = find_last_slash_pos(root_p, cgroup_p);
>> 86: assert(last_slash >= 0, "not an absolute path?");
>
> Are root_p and cgroup_p directly read from the /proc/xxx files. If so, do we validate the input to make sure they are absolute paths?
>
> It seems like our code cannot handle trailing '/' in the input. If so, we should clear all trailing '/' from the input string. Then, in functions that process them, we should assert that they don't end with slash. See my comment in find_last_slash_pos().
Yes, those values come from `/proc/self/mountinfo` and `/proc/self/cgroup`. There is no validation being done. Then again, we only end up in this branch if the root path is not a substring of the cgroup path. In that case trailing slashes don't matter, since there would not be a character by character match earlier.
I'll add handling of trailing slashes and appropriate asserts where it makes sense.
-------------
PR: https://git.openjdk.java.net/jdk/pull/8629
More information about the serviceability-dev
mailing list