On Tue, 8 Jun 2021 06:39:12 GMT, David Holmes <[email protected]> wrote:
>> src/jdk.management/linux/native/libmanagement_ext/UnixOperatingSystem.c line
>> 70:
>>
>>> 68: do {
>>> 69: c = fgetc(f);
>>> 70: } while(c != '\n' && c != EOF);
>>
>> Style nit: please add space before (
>
> It is not obvious to me that the caller of next_line will handle the fact
> that we have hit EOF?
In my case, it happened in the container environment.
the /proc filesystem of the container is provided by lxcfs, but a lxcfs bug
may make the /proc/stat mount point change, then the file descriptor is
different and fgetc function returns an EOF on error, But c != '\n' is true
and it leads to the infinit loop.
Below are our flamegraph in the production , it happends on serveral
frameworks(micrometer, elasticsearch..)which use the api
"sun/management/OperatingSystemImpl.getSystemCpuLoad"

-------------
PR: https://git.openjdk.java.net/jdk/pull/4378