[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-serviceability-dev
Subject:    Re: JvmtiExport::can_walk_any_space() usage in hotspot
From:       daniel.daugherty () oracle ! com
Date:       2021-02-22 18:17:23
Message-ID: 15ea918b-2d8a-b021-f5d0-ed1af1f4c84c () oracle ! com
[Download RAW message or body]

Adding serviceability-dev@... to this email thread since JVM/TI
is maintained by the Serviceability Team...

Dan


On 2/22/21 3:29 AM, kalinshi(Ê©»Û) wrote:
> Hi hotspot experts,
> 
> Would you help on my question about JvmtiExport::can_walk_any_space() check?
> Question is why JvmtiExport::can_walk_any_space() check is needed in CDS when \
> mapping region? 
> JvmtiExport::can_walk_any_space() method is only used in FileMapInfo::map_region \
> for modifing region read-only mapping attribute. JvmtiExport::can_walk_any_space() \
> is set true when jvmtiCapabilities.can_tag_objects is enabled. JVMTI capability \
> can_tag_objects enables java heap iteration/object reference tracing, and \
> JvmtiEnv::Set/GetTag doesn't modify read-only regions in shared archive (I might \
> wrong). 
> comments in latest code seems outdated, JvmtiExport::can_walk_any_space() doesn't \
> disable sharing now. "
> JvmtiExport::set_can_walk_any_space(
> avail.can_tag_objects);   // disable sharing in onload phase
> "
> 
> Back to initial code, class sharing is disabled when condition \
> JvmtiExport::can_modify_any_class() || JvmtiExport::can_walk_any_space() is true. \
> This matches above comment in JvmtiManageCapabilities::update. "
> if (JvmtiExport::can_modify_any_class() || JvmtiExport::can_walk_any_space()) {
> fail_continue("Tool agent requires sharing to be disabled.");
> return false;
> }
> "
> 
> JvmtiExport::can_modify_any_class condition disables class data sharing when class \
> file load hook (requires modify code and read only contents) is needed in initial \
> code. Both checks are removed and used to determine region read/write attribute \
> with following commits. These commits are mainly supporting class file load hook \
> with CDS. 
> 1. enable shared class when these tow checks on, modify/map all regions in shared \
>                 archive as RW.
> 8054386: Allow Java debugging when CDS is enabled Map archive RW when debugging is \
>                 enabled
> 8087153: EXCEPTION_ACCESS_VIOLATION when CDS RO section vanished on win32
> 
> 2. Support class file load hook with CDS
> 8141341: CDS should be disabled if JvmtiExport::should_post_class_file_load_hook() \
> is true Disable loading shared class if \
>                 JvmtiExport::should_post_class_file_load_hook is true.
> 8078644: CDS needs to support JVMTI CFLH Support posting CLFH for shared classes.
> 
> 3. Fix jvmtiCapabilities::can_generate_all_class_hook_events inconsistent state \
>                 when shared
> 8161605: The '!UseSharedSpaces' check is not need in \
> JvmtiManageCapabilities::recompute_always_capabilities 
> 4. Fix class file load hook error for early class hook event when shared
> 8212200: assert when shared java.lang.Object is redefined by JVMTI agent
> 
> Regards
> Hui


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic