PING: RFR: 8241439: jdk.NativeLibraryEvent hooks all opened regular files

Yasumasa Suenaga suenaga at oss.nttdata.com
Thu Jun 4 11:26:48 UTC 2020


Hi all,

Could you review this change?

>>    JBS: https://bugs.openjdk.java.net/browse/JDK-8241439
>>    webrev: http://cr.openjdk.java.net/~ysuenaga/JDK-8241439/webrev.01/

I want to merge it to JDK 15.
I've got a reviewer, then I need one more reviewer to push.


Regards,

Yasumasa


On 2020/05/26 9:25, Yasumasa Suenaga wrote:
> Hi all,
> 
> I've sent review request last month, but nobody has reviewed. Could you review it?
> 
>>    JBS: https://bugs.openjdk.java.net/browse/JDK-8241439
>>    webrev: http://cr.openjdk.java.net/~ysuenaga/JDK-8241439/webrev.01/
> 
> os::get_loaded_modules_info() has introduced in JDK-8056242, and it says this function is for dll/so/dylibs.
> In fact, os::get_loaded_modules_info() uses EnumProcessModules() in Windows.
> 
> In Linux, get_loaded_modules_info() depends on /proc/<PID>/maps, so it hooks regular files (e.g. JAR, CDS archive), and hooks multiple memory regions by one shared library.
> We should merge same library to one event, and should not hook regular files (not shared library).
> 
> All comments are welcome.
> 
> 
> Thanks,
> 
> Yasumasa
> 
> 
> On 2020/04/16 9:30, Yasumasa Suenaga wrote:
>> PING: Could you review it?
>>
>>    JBS: https://bugs.openjdk.java.net/browse/JDK-8241439
>>    webrev: http://cr.openjdk.java.net/~ysuenaga/JDK-8241439/webrev.01/
>>
>>
>> Yasumasa
>>
>>
>> On 2020/04/09 16:00, Yasumasa Suenaga wrote:
>>> Hi all,
>>>
>>> Please review this change:
>>>
>>>    JBS: https://bugs.openjdk.java.net/browse/JDK-8241439
>>>    webrev: http://cr.openjdk.java.net/~ysuenaga/JDK-8241439/webrev.00/
>>>
>>> HotSpot has os::get_loaded_modules_info() to get all loaded native libraries, however it would call callback in twice on same library on Linux. Also it would call callback even if the file is not a library.
>>>
>>> We can see this problem in jdk.NativeLibrary JFR event as below:
>>>
>>>
>>> ```
>>> jdk.NativeLibrary {
>>>     startTime = 16:59:06.621
>>>     name = "/usr/lib64/libc-2.30.so"
>>>     baseAddress = 0x7FDB06ACC000
>>>     topAddress = 0x7FDB06AF1000
>>> }
>>>
>>> jdk.NativeLibrary {
>>>     startTime = 16:59:06.621
>>>     name = "/usr/lib64/libc-2.30.so"
>>>     baseAddress = 0x7FDB06AF1000
>>>     topAddress = 0x7FDB06C40000
>>> }
>>>
>>>      :
>>>
>>> ```
>>>
>>> ```
>>> jdk.NativeLibrary {
>>>     startTime = 16:59:06.621
>>>     name = "/home/ysuenaga/OpenJDK/jdk/build/linux-x86_64-server-fastdebug/images/jdk/lib/server/classes.jsa"
>>>     baseAddress = 0x800000000
>>>     topAddress = 0x800007000
>>> }
>>> ```
>>>
>>> This change uses dl_iterate_phdr() to get them, so these problem has gone.
>>>
>>>
>>> Thanks,
>>>
>>> Yasumasa


More information about the hotspot-runtime-dev mailing list