SIGBUS on linux in perfMemory_init
Ioi Lam
ioi.lam at oracle.com
Thu May 5 18:06:28 UTC 2022
On 5/5/2022 3:05 AM, Severin Gehwolf wrote:
> On Wed, 2022-05-04 at 12:13 -0700, Ioi Lam wrote:
>> ====================================
>>
>> How about this:
>>
>> When a JVM starts up, it creates the hsperfdata with a UUID instead of
>> PID. E.g.,
>>
>> /tmp/hsperfdata_user/0da29ace76f76f61
>>
>> Today, jps reads /proc/*/status to determine the NSpid, so we are doing
>> a lot of processing already. Instead, we should read /proc/*/maps and
>> scan for something with this pattern:
>>
>> 7ffb2536d000-7ffb25375000 rw-s ....
>> /tmp/hsperfdata_user/0da29ace76f76f61
>>
>> If we can find this pattern, we know we have a JVM process that the
>> current user can attach to.
>>
>> When attaching to this process, we will use this file instead
>>
>> /proc/$PID/root/tmp/.java_pid0da29ace76f76f61
>>
>> This should work with
>>
>> - shared /tmp across containers
>> - nested containers
> Wouldn't this break with the work-around Vitaly employed? I.e. using
>
> -XX:+PerfDisableSharedMem
>
> $ ps ax | grep java
> 10449 pts/4 Sl+ 0:00 ./build/linux-x86_64-normal-server-fastdebug/images/jdk/bin/java -XX:+PerfDisableSharedMem Hello
> 10744 pts/5 S+ 0:00 grep --color=auto java
> $ grep hsperf /proc/10449/maps
> $ jcmd 10449 VM.version
> 10449:
> OpenJDK 64-Bit Server VM version 11.0.16-internal+0-adhoc.sgehwolf.jdk11u-dev
> JDK 11.0.16
> $ jcmd -l
> 10857 jdk.jcmd/sun.tools.jcmd.JCmd -l
I think we can create a fake mmap region when -XX:+PerfDisableSharedMem
is used. E.g.,
7ffb2536d000-7ffb25375000 rw-s .... /tmp/hsperfdata_user/0da29ace76f76f61-disabled
So we can reliably discover the .java_pidxxxxx file used for attachment:
jcmd $PID
-> /proc/$PID/maps
-> /tmp/hsperfdata_user/0da29ace76f76f61-disabled
-> /proc/$PID/root/tmp/.java_pid0da29ace76f76f61
Thanks
- Ioi
>
> Basically, by departing from using system identifiers, we need some
> other way to discover the well known identifier.
>
> Thanks,
> Severin
>
>
More information about the hotspot-runtime-dev
mailing list