On Tue, 8 Jun 2021 16:43:14 GMT, UncleNine <github.com+1964054+unclen...@openjdk.org> wrote:
>> 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" >>  > > I use top -Hp $PID command and the thread show 100% cpu usage >  >  @UncleNine We should handle the case in the `get_totalticks()` function - which seems to be the only user of `next_line()` - when `next_line()` returns EOF as David said. One way would be to return the 'c' character read in `next_line` and if it's EOF, return -2 in `get_totalticks()`. ------------- PR: https://git.openjdk.java.net/jdk/pull/4378