On Wed, 24 May 2023 20:03:47 GMT, Serguei Spitsyn <[email protected]> wrote:
> How do you test the issue is fixed now? Is there any test case which fails
> without your fix and passes with it?
Hi - I tested manually, renaming the java executable to something with a space,
then query the OperatingSystem MBean, and see something like:
CommittedVirtualMemorySize = (java.lang.Long) 36202319872 (which is the
same/similar to another run
when not renamed). The problem is seeing a completely wrong value, like:
CommittedVirtualMemorySize = (java.lang.Long) 0
These are lines like:
$ cat /proc/9496/stat
9496 (java) S 625 9495 607 34823 9635 1077936192 12024 0 0 0 156 22 0 0 20 0 28
0 2172294643 36260237312 30463 18446744073709551615 93928094162944
93928094166632 140724289571696 0 0 0 4 0 16800975 0 0 0 -1 11 0 0 0 0 0
93928094174456 93928094175248 93928124657664 140724289577708 140724289577894
140724289577894 140724289581032 0
That's a different run, where 36260237312 was the value we wanted. If "java"
becomes "this is java" (with 2 spaces), then we read field 21, not field 23
from the line of data and show zero.
It's quite a niche thing to do so I didn't add a test that copied the java
binary under test to a new name with a space in it...
The code that does the strrchr to scan from the last ) and then parses the
remainder has been with us for some time. 8-)
-------------
PR Comment: https://git.openjdk.org/jdk/pull/14107#issuecomment-1561893976