RFR: 8268361: Fix the infinite loop in next_line [v2]
Severin Gehwolf
sgehwolf at openjdk.java.net
Wed Jun 9 07:32:15 UTC 2021
On Tue, 8 Jun 2021 16:43:14 GMT, UncleNine <github.com+1964054+UncleNine at 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
More information about the serviceability-dev
mailing list