RFR: 8322420: [Linux] cgroup v2: Limits in parent nested control groups are not detected [v12]

Jan Kratochvil jkratochvil at openjdk.org
Thu Jul 11 06:54:28 UTC 2024


On Thu, 11 Jul 2024 06:50:21 GMT, Jan Kratochvil <jkratochvil at openjdk.org> wrote:

>> The testcase requires root permissions.
>> 
>> Designed by  Severin Gehwolf, implemented by Jan Kratochvil.
>
> Jan Kratochvil has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 103 commits:
> 
>  - Fix the gtest
>  - fix compilation warning
>  - fix the gtest
>  - less refactorizations
>  - remove not a real backward compat.
>  - whitespace
>  - less refactorizations
>  - reduce refactorizations
>  - Fix caching
>  - Merge branch 'master' into master-cgroup
>  - ... and 93 more: https://git.openjdk.org/jdk/compare/537d20af...060e7688

src/hotspot/os/linux/cgroupV2Subsystem_linux.hpp line 50:

> 48:                                    _path(construct_path(mount_path, cgroup_path)) {
> 49:     }
> 50:     // Shallow copy constructor

I had to remove the "shallow" part as it was not memory safe afterwards and one could easily get:

=================================================================
==3770369==ERROR: AddressSanitizer: heap-use-after-free on address 0x502000001530 at pc 0x7f086bcc45c0 bp 0x7f086adfd7b0 sp 0x7f086adfcf70
READ of size 1 at 0x502000001530 thread T1
    #0 0x7f086bcc45bf in strcmp.part.0 (/lib64/libasan.so.8+0xc45bf) (BuildId: c1431025b5d8af781c22c9ceea71f065c547d32d)
    #1 0x7f0862c77e55 in CgroupController::set_path(char const*) /home/azul/azul/openjdk-git/src/hotspot/os/linux/cgroupSubsystem_linux.cpp:841
...
0x502000001530 is located 0 bytes inside of 2-byte region [0x502000001530,0x502000001532)
freed by thread T1 here:
...
    #4 0x7f08655c537c in os::free(void*) /home/azul/azul/openjdk-git/src/hotspot/share/runtime/os.cpp:775
    #5 0x7f0862c7a456 in CgroupController::~CgroupController() /home/azul/azul/openjdk-git/src/hotspot/os/linux/cgroupSubsystem_linux.hpp:184
...     
previously allocated by thread T1 here:
    #0 0x7f086bcf7997 in malloc (/lib64/libasan.so.8+0xf7997) (BuildId: c1431025b5d8af781c22c9ceea71f065c547d32d)
...     
    #7 0x7f08655c87df in os::strdup(char const*, MEMFLAGS) /home/azul/azul/openjdk-git/src/hotspot/share/runtime/os.cpp:605
    #8 0x7f0862c7a26f in CgroupController::CgroupController(char*, char*, bool) /home/azul/azul/openjdk-git/src/hotspot/os/linux/cgroupSubsystem_linux.hpp:170

I plan to fix the ugly value-copy in a later refactorization.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/17198#discussion_r1673497620


More information about the core-libs-dev mailing list