On Sun, 14 Apr 2024 08:53:05 GMT, Jaroslav Bachorik <jbachorik@openjdk.org> wrote:
Please, review this trivial change to make using `ProcessIterator` more robust in the presence of SELinux or a similar system.
The call to `os::opendir("/proc")` may return `nulltptr` if the `/proc` is not accessible due to restrictions placed by the SELinux. In that case the `ProcessIterator` will SIGSEG because it assumes the `_dir`, which is the variable storing the result of the `os::opendir("/proc")` call to be non-null.
The patch is missing regression test because it is very hard to simulate `/proc` not being accessible to the test process.
This change doesn't seem sufficient as many of the ProcessIterator functions access something under /proc without checking is_valid. Is it just direct access to /proc that fails rather than specific entries? src/hotspot/os/linux/os_perf_linux.cpp line 851:
849: _entry = nullptr; 850: _valid = _dir != nullptr; 851: next_process();
A comment on the opendir would be useful e.g. _dir = os::opendir("/proc"); // May be null if /proc is not accessible. ------------- PR Review: https://git.openjdk.org/jdk/pull/18775#pullrequestreview-2000373079 PR Review Comment: https://git.openjdk.org/jdk/pull/18775#discussion_r1565398444