Re: RFR: 8247281: migrate ObjectMonitor::_object to OopStorage [v6]

2020-09-16 Thread Kim Barrett
On Wed, 16 Sep 2020 16:13:23 GMT, Daniel D. Daugherty  
wrote:

>> This RFE is to migrate the following field to OopStorage:
>> 
>> class ObjectMonitor {
>> 
>>   void* volatile _object; // backward object pointer - strong root
>> 
>> Unlike the previous patches in this series, there are a lot of collateral
>> changes so this is not a trivial review. Sorry for the tedious parts of
>> the review. Since Erik and I are both contributors to this patch, we
>> would like at least 1 GC team reviewer and 1 Runtime team reviewer.
>> 
>> This changeset was tested with Mach5 Tier[1-3],4,5,6,7,8 testing
>> along with JDK-8252980 and JDK-8252981. I also ran it through my
>> inflation stress kit for 48 hours on my Linux-X64 machine.
>
> Daniel D. Daugherty has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   Minor changes/deletions to address kimbarrett and sspitsyn CR comments.

Marked as reviewed by kbarrett (Reviewer).

-

PR: https://git.openjdk.java.net/jdk/pull/135


Re: RFR: 8253028: SA core file tests still time out on OSX with "java.io.IOException: App waiting timeout"

2020-09-16 Thread Alex Menkov
On Tue, 15 Sep 2020 18:53:30 GMT, Chris Plummer  wrote:

> Some SA core file testing requires longer timeouts since core files can on 
> occasion take a very long time to produce on
> OSX.
> I'd like to treat this as a trival change.

Agreed that this is trivial change

-

Marked as reviewed by amenkov (Reviewer).

PR: https://git.openjdk.java.net/jdk/pull/192


Re: RFR: 8247281: migrate ObjectMonitor::_object to OopStorage [v6]

2020-09-16 Thread David Holmes
On Wed, 16 Sep 2020 16:13:23 GMT, Daniel D. Daugherty  
wrote:

>> This RFE is to migrate the following field to OopStorage:
>> 
>> class ObjectMonitor {
>> 
>>   void* volatile _object; // backward object pointer - strong root
>> 
>> Unlike the previous patches in this series, there are a lot of collateral
>> changes so this is not a trivial review. Sorry for the tedious parts of
>> the review. Since Erik and I are both contributors to this patch, we
>> would like at least 1 GC team reviewer and 1 Runtime team reviewer.
>> 
>> This changeset was tested with Mach5 Tier[1-3],4,5,6,7,8 testing
>> along with JDK-8252980 and JDK-8252981. I also ran it through my
>> inflation stress kit for 48 hours on my Linux-X64 machine.
>
> Daniel D. Daugherty has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   Minor changes/deletions to address kimbarrett and sspitsyn CR comments.

Marked as reviewed by dholmes (Reviewer).

-

PR: https://git.openjdk.java.net/jdk/pull/135


Re: RFR: 8253028: SA core file tests still time out on OSX with "java.io.IOException: App waiting timeout"

2020-09-16 Thread Chris Plummer
On Tue, 15 Sep 2020 18:53:30 GMT, Chris Plummer  wrote:

> Some SA core file testing requires longer timeouts since core files can on 
> occasion take a very long time to produce on
> OSX.
> I'd like to treat this as a trival change.

Ping! This change is trivial. Thanks!

-

PR: https://git.openjdk.java.net/jdk/pull/192


RFR: 8234808: jdb quoted option parsing broken

2020-09-16 Thread Alex Menkov
Migrating this review from the mailing list into a pull request.

Some background:
when jdb launches debuggee process it passes java options from "options" value 
for CommandLineLaunch connector and
forward options specified before command.

The fix solves several discovered issues:
- proper handling of java options with spaces
- if both way are used to specify java options, forwarded options override 
options from "options" value

VMConnection class implements tricky logic for "options" field parsing for JFR 
needs (handling of single and double
quotes). I decided to keep it as is to avoid massive test failures with JFR 
(there is no test coverage for this
functionality and I'm not sure I understand all requirements).

-

Commit messages:
 - 8234808: jdb quoted option parsing broken

Changes: https://git.openjdk.java.net/jdk/pull/211/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk=211=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8234808
  Stats: 205 lines in 4 files changed: 190 ins; 4 del; 11 mod
  Patch: https://git.openjdk.java.net/jdk/pull/211.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/211/head:pull/211

PR: https://git.openjdk.java.net/jdk/pull/211


Re: RFR: 8247281: migrate ObjectMonitor::_object to OopStorage [v6]

2020-09-16 Thread Erik Österlund
On Wed, 16 Sep 2020 16:13:23 GMT, Daniel D. Daugherty  
wrote:

>> This RFE is to migrate the following field to OopStorage:
>> 
>> class ObjectMonitor {
>> 
>>   void* volatile _object; // backward object pointer - strong root
>> 
>> Unlike the previous patches in this series, there are a lot of collateral
>> changes so this is not a trivial review. Sorry for the tedious parts of
>> the review. Since Erik and I are both contributors to this patch, we
>> would like at least 1 GC team reviewer and 1 Runtime team reviewer.
>> 
>> This changeset was tested with Mach5 Tier[1-3],4,5,6,7,8 testing
>> along with JDK-8252980 and JDK-8252981. I also ran it through my
>> inflation stress kit for 48 hours on my Linux-X64 machine.
>
> Daniel D. Daugherty has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   Minor changes/deletions to address kimbarrett and sspitsyn CR comments.

Marked as reviewed by eosterlund (Reviewer).

-

PR: https://git.openjdk.java.net/jdk/pull/135


Re: RFR: 8247281: migrate ObjectMonitor::_object to OopStorage [v6]

2020-09-16 Thread Serguei Spitsyn
On Wed, 16 Sep 2020 16:13:23 GMT, Daniel D. Daugherty  
wrote:

>> This RFE is to migrate the following field to OopStorage:
>> 
>> class ObjectMonitor {
>> 
>>   void* volatile _object; // backward object pointer - strong root
>> 
>> Unlike the previous patches in this series, there are a lot of collateral
>> changes so this is not a trivial review. Sorry for the tedious parts of
>> the review. Since Erik and I are both contributors to this patch, we
>> would like at least 1 GC team reviewer and 1 Runtime team reviewer.
>> 
>> This changeset was tested with Mach5 Tier[1-3],4,5,6,7,8 testing
>> along with JDK-8252980 and JDK-8252981. I also ran it through my
>> inflation stress kit for 48 hours on my Linux-X64 machine.
>
> Daniel D. Daugherty has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   Minor changes/deletions to address kimbarrett and sspitsyn CR comments.

Marked as reviewed by sspitsyn (Reviewer).

-

PR: https://git.openjdk.java.net/jdk/pull/135


Re: RFR: 8247281: migrate ObjectMonitor::_object to OopStorage [v5]

2020-09-16 Thread Daniel D . Daugherty
On Tue, 15 Sep 2020 10:17:59 GMT, Kim Barrett  wrote:

>> Daniel D. Daugherty has updated the pull request incrementally with one 
>> additional commit since the last revision:
>> 
>>   rkennke, coleenp, fisk CR - delete random assert() that knows too much 
>> about markWords.
>
> Marked as reviewed by kbarrett (Reviewer).

@kimbarrett and @sspitsyn - Your most recent comments should be resolved via
https://github.com/openjdk/jdk/pull/135/commits/215084ac7ef481713560d14498ce420a40ca813a.

-

PR: https://git.openjdk.java.net/jdk/pull/135


Re: RFR: 8247281: migrate ObjectMonitor::_object to OopStorage [v6]

2020-09-16 Thread Daniel D . Daugherty
> This RFE is to migrate the following field to OopStorage:
> 
> class ObjectMonitor {
> 
>   void* volatile _object; // backward object pointer - strong root
> 
> Unlike the previous patches in this series, there are a lot of collateral
> changes so this is not a trivial review. Sorry for the tedious parts of
> the review. Since Erik and I are both contributors to this patch, we
> would like at least 1 GC team reviewer and 1 Runtime team reviewer.
> 
> This changeset was tested with Mach5 Tier[1-3],4,5,6,7,8 testing
> along with JDK-8252980 and JDK-8252981. I also ran it through my
> inflation stress kit for 48 hours on my Linux-X64 machine.

Daniel D. Daugherty has updated the pull request incrementally with one 
additional commit since the last revision:

  Minor changes/deletions to address kimbarrett and sspitsyn CR comments.

-

Changes:
  - all: https://git.openjdk.java.net/jdk/pull/135/files
  - new: https://git.openjdk.java.net/jdk/pull/135/files/eeb9d761..215084ac

Webrevs:
 - full: https://webrevs.openjdk.java.net/?repo=jdk=135=05
 - incr: https://webrevs.openjdk.java.net/?repo=jdk=135=04-05

  Stats: 9 lines in 2 files changed: 2 ins; 7 del; 0 mod
  Patch: https://git.openjdk.java.net/jdk/pull/135.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/135/head:pull/135

PR: https://git.openjdk.java.net/jdk/pull/135


Re: RFR: 8247281: migrate ObjectMonitor::_object to OopStorage [v5]

2020-09-16 Thread Daniel D . Daugherty
On Wed, 16 Sep 2020 08:23:03 GMT, Erik Österlund  wrote:

>> Marked as reviewed by sspitsyn (Reviewer).
>
> I added a release note (https://bugs.openjdk.java.net/browse/JDK-8253225) 
> describing that these roots are now weak, and
> hence won't be reported. Please have a look at that, to make sure what I am 
> describing makes sense.

@kimbarrett - Thanks for the cleanup suggestion.
@sspitsyn - Thanks for the review.
I've gone ahead and "resolved" the comments that were addressed by previous 
commits.
I've made changes for both Kim and Serguei's reviews. Building those bits now.

-

PR: https://git.openjdk.java.net/jdk/pull/135


Re: RFR: 8247281: migrate ObjectMonitor::_object to OopStorage [v5]

2020-09-16 Thread Daniel D . Daugherty
On Wed, 16 Sep 2020 00:07:08 GMT, Serguei Spitsyn  wrote:

>> I've taken a first pass at creating a CSR:
>> JDK-8253121 migrate ObjectMonitor::_object to OopStorage
>> https://bugs.openjdk.java.net/browse/JDK-8253121
>
> I've looked at the CSR and added myself as a reviewer.
> We had a slack chat with Dan, and I agree that with a weak handle it would be 
> racy/unsafe for
> JVMTI_HEAP_REFERENCE_MONITOR calls back to be called. The ObjectMonitors do 
> not pin objects anymore (there are no
> strong refs from them), so it has to be okay to skip reporting the 
> JVMTI_HEAP_REFERENCE_MONITOR and and
> JVMTI_HEAP_ROOT_MONITOR (old Heap Walking API) reference types. The JVMTI 
> does not need an update as other VM
> implementations can still report these reference types. Alan added a comment 
> to the CSR saying that memory profiling
> tools that use the JVMTI functions (FollowReferences with 
> jvmtiHeapReferenceCallback or IterateOverReachableObjects
> with jvmtiHeapRootCallback) to iterate over the heap should not have a 
> compatibility impact as these reference types
> are just informational but adding a release note can be useful.

Slight clarification. Serguei and I were discussing whether we could continue
to make JVMTI_HEAP_REFERENCE_MONITOR call backs or emit
HPROF_GC_ROOT_MONITOR_USED entries in heap dump output as a
way to ease the transition phase of getting used to these things going
away. My answer was that we could do that but it would racy and unsafe
due to the ObjectMonitor's object being GC'ed.

It's also incorrect to make JVMTI_HEAP_REFERENCE_MONITOR call backs
or emit HPROF_GC_ROOT_MONITOR_USED entries in heap dump once
the ObjectMonitor's object ref becomes a weak handle. That weak handle
no longer prevents the associated object from being GC'ed so it is no
longer a strong root.

See Erik's comment above: 
https://github.com/openjdk/jdk/pull/135#discussion_r487291746

-

PR: https://git.openjdk.java.net/jdk/pull/135


Re: RFR: 8247281: migrate ObjectMonitor::_object to OopStorage [v5]

2020-09-16 Thread Daniel D . Daugherty
On Wed, 16 Sep 2020 00:20:16 GMT, Serguei Spitsyn  wrote:

>> I've taken a first pass at creating a CSR:
>> JDK-8253121 migrate ObjectMonitor::_object to OopStorage
>> https://bugs.openjdk.java.net/browse/JDK-8253121
>
> Just a minor comment.
> The line 1754 can be deleted as the JVMTI_HEAP_REFERENCE_MONITOR reference 
> type will be never encountered:
> 
> 1750 static jvmtiHeapRootKind toJvmtiHeapRootKind(jvmtiHeapReferenceKind 
> kind) {
> 1751   switch (kind) {
> 1752 case JVMTI_HEAP_REFERENCE_JNI_GLOBAL:   return 
> JVMTI_HEAP_ROOT_JNI_GLOBAL;
> 1753 case JVMTI_HEAP_REFERENCE_SYSTEM_CLASS: return 
> JVMTI_HEAP_ROOT_SYSTEM_CLASS;
> 1754 case JVMTI_HEAP_REFERENCE_MONITOR:  return 
> JVMTI_HEAP_ROOT_MONITOR;
> 1755 case JVMTI_HEAP_REFERENCE_STACK_LOCAL:  return 
> JVMTI_HEAP_ROOT_STACK_LOCAL;
> 1756 case JVMTI_HEAP_REFERENCE_JNI_LOCAL:return 
> JVMTI_HEAP_ROOT_JNI_LOCAL;
> 1757 case JVMTI_HEAP_REFERENCE_THREAD:   return 
> JVMTI_HEAP_ROOT_THREAD;
> 1758 case JVMTI_HEAP_REFERENCE_OTHER:return JVMTI_HEAP_ROOT_OTHER;
> 1759 default: ShouldNotReachHere();  return JVMTI_HEAP_ROOT_OTHER;
> 1760   }
> 1761 }
> 
> Other than that the update in this file looks okay to me.

I cleaned that up. The only references to JVMTI_HEAP_REFERENCE_MONITOR and
JVMTI_HEAP_ROOT_MONITOR that remain are in the spec:

$ egrep -r 'JVMTI_HEAP_REFERENCE_MONITOR|JVMTI_HEAP_ROOT_MONITOR' src/hotspot
src/hotspot/share/prims/jvmti.xml:  
src/hotspot/share/prims/jvmti.xml:  
src/hotspot/share/prims/jvmti.xml:  
JVMTI_HEAP_ROOT_MONITOR,

-

PR: https://git.openjdk.java.net/jdk/pull/135


Re: RFR: 8247281: migrate ObjectMonitor::_object to OopStorage [v4]

2020-09-16 Thread Daniel D . Daugherty
On Tue, 15 Sep 2020 10:17:45 GMT, Kim Barrett  wrote:

>> Daniel D. Daugherty has updated the pull request incrementally with one 
>> additional commit since the last revision:
>> 
>>   kimbarrett CR - made minor changes to address Kim's code review.
>
> src/hotspot/share/runtime/objectMonitor.cpp line 244:
> 
>> 242: }
>> 243:
>> 244: #ifdef ASSERT
> 
> There would be less `#ifdef ASSERT` clutter if just the body of 
> check_object_context were conditionalized.  Then the
> calls wouldn't need to be.  Your call...

I'll make that change.

-

PR: https://git.openjdk.java.net/jdk/pull/135


Re: RFR: 8252104: parallel heap inspection for ShenandoahHeap [v3]

2020-09-16 Thread Zhengyu Gu
On Sat, 12 Sep 2020 00:17:58 GMT, Lin Zang  wrote:

>> - enable parallel heap inspecton for ShenandoahHeap
>>   - preliminary evaluation:
>> Time of jmap histo on (8GB heap with 4GB objects)
>> * before: 5.186s
>> * after : 1.698s
>
> Lin Zang has refreshed the contents of this pull request, and previous 
> commits have been removed. The incremental views
> will show differences compared to the previous content of the PR. The pull 
> request contains one new commit since the
> last revision:
>   8252104: parallel heap inspection for ShenandoahHeap
>   
> - enable parallel heap inspecton for ShenandoahHeap
> - preliminary evaluation:
>   Time of jmap histo on (8GB heap with 4GB objects)
>   * before: 5.186s
>   * after : 1.698s

Marked as reviewed by zgu (Reviewer).

-

PR: https://git.openjdk.java.net/jdk/pull/67


Re: RFR: 8252104: parallel heap inspection for ShenandoahHeap [v3]

2020-09-16 Thread Zhengyu Gu
On Sat, 12 Sep 2020 00:15:06 GMT, Lin Zang  wrote:

> Hi @zhengyu123 ,
> Thanks for your comments! I have refined the code and update the PR.
> -Lin

Looks good to me.
@shipilev may want to take a look.

Thanks.

-

PR: https://git.openjdk.java.net/jdk/pull/67


Re: RFR: 8247281: migrate ObjectMonitor::_object to OopStorage [v5]

2020-09-16 Thread Erik Österlund
On Wed, 16 Sep 2020 00:21:02 GMT, Serguei Spitsyn  wrote:

>> Daniel D. Daugherty has updated the pull request incrementally with one 
>> additional commit since the last revision:
>> 
>>   rkennke, coleenp, fisk CR - delete random assert() that knows too much 
>> about markWords.
>
> Marked as reviewed by sspitsyn (Reviewer).

I added a release note (https://bugs.openjdk.java.net/browse/JDK-8253225) 
describing that these roots are now weak, and
hence won't be reported. Please have a look at that, to make sure what I am 
describing makes sense.

-

PR: https://git.openjdk.java.net/jdk/pull/135


Re: RFR: 8238761: Asynchronous handshakes

2020-09-16 Thread Patricio Chilano

Hi Robbin,

Changes look good to me! Some minor comments:

src/hotspot/share/prims/jvmtiThreadState.cpp
222:   assert(current_thread == get_thread() ||
223:  SafepointSynchronize::is_at_safepoint() ||
224: get_thread()->is_handshake_safe_for(current_thread),
225:  "call by myself / at safepoint / at handshake");
Extra current_thread == get_thread() is already handled by 
is_handshake_safe_for().


src/hotspot/share/prims/jvmtiEnvBase.cpp
Same as above.

src/hotspot/share/runtime/handshake.cpp
198: log_info(handshake)("Handshake \"%s\", Targeted threads: %d, 
Executed by targeted threads: %d, Total completion time: " JLONG_FORMAT 
" ns%s%s",

199: name, targets,
200: targets - vmt_executed,
In the calls to log_handshake_info() in VM_HandshakeAllThreads and 
Handshake::execute() we are passing as vmt_executed the number of 
handshakes that the driver executed which could be more than the targets 
parameter. So the operation "targets - vmt_executed" to calculate the 
handshakes executed by the targets would no longer be valid. Personally 
I would just leave ProcessResult as an enum and log as before. We still 
have a log_trace() in try_process(), so that already keeps track of 
extra handshakes executed by the handshaker.


src/hotspot/share/runtime/handshake.cpp
387: NoSafepointVerifier nsv;
388: process_self_inner();
389:   }
Shouldn't NoSafepointVerifier be placed before the execution of the 
handshake closure so that we also cover the case when the handshake is 
executed by the handshaker? As in:

// Only actually execute the operation for non terminated threads.
if (!thread->is_terminated()) {
    NoSafepointVerifier nsv;
    _handshake_cl->do_thread(thread);
}

src/hotspot/share/runtime/interfaceSupport.inline.hpp
156: // Threads shouldn't block if they are in the middle of 
printing, but...

157: ttyLocker::break_tty_lock_for_safepoint(os::current_thread_id());
What's the issue of having NoSafepointVerifier inside the handshake?

Thanks!

Patricio

On 9/15/20 4:39 AM, Robbin Ehn wrote:

This patch implements asynchronous handshake, which changes how handshakes 
works by default. Asynchronous handshakes
are target only executed, which they may never be executed. (target may block 
on socket for the rest of VM lifetime)
Since we have several use-cases for them we can have many handshake pending. 
(should be very rare) To be able handle an
arbitrary amount of handshakes this patch adds a per JavaThread queue and heap 
allocated HandshakeOperations. It's a
singly linked list where you push/insert to the end and pop/get from the front. 
Inserts are done via CAS on first
pointer, no lock needed. Pops are done while holding the per handshake state 
lock, and when working on the first
pointer also CAS.

The thread grabbing the handshake state lock for a JavaThread will pop and 
execute all handshake operations matching
the filter. The JavaThread itself uses no filter and any other thread uses the 
filter of everything except asynchronous
handshakes. In this initial change-set there is no need to do any other 
filtering. If needed filtering can easily be
exposed as a virtual method on the HandshakeClosure, but note that filtering 
causes handshake operation to be done
out-order. Since the filter determins who execute the operation and not the 
invoked method, there is now only one
method to call when handshaking one thread.

Some comments about the changes:
- HandshakeClosure uses ThreadClosure, since it neat to use the same closure 
for both alla JavThreads do and Handshake
   all threads. With heap allocating it cannot extends StackObj. I tested 
several ways to fix this, but those very much
   worse then this.

- I added a is_handshake_safe_for for checking if it's current thread is 
operating on itself or the handshaker of that
   thread.

- Simplified JVM TI with a JvmtiHandshakeClosure and also made them not needing 
a JavaThread when executing as a
   handshaker on a JavaThread, e.g. VM Thread can execute the handshake 
operation.

- Added WB testing method.

- Removed VM_HandshakeOneThread, the VM thread uses the same call path as 
direct handshakes did.

- Changed the handshake semaphores to mutex to be able to handle deadlocks with 
lock ranking.

- VM_HandshakeAllThreadsis still a VM operation, since we do support half of 
the threads being handshaked before a
   safepoint and half of them after, in many handshake all operations.

- ThreadInVMForHandshake do not need to do a fenced transistion since this is 
always a transistion from unsafe to unsafe.

- Added NoSafepointVerifyer, we are thinking about supporting safepoints inside 
handshake, but it's not needed at the
   moment. To make sure that gets well tested if added the NoSafepointVerifyer 
will raise eyebrows.

- Added ttyLocker::break_tty_lock_for_safepoint(os::current_thread_id()); due 
to the NoSafepointVerifyer.

- Added filtered queue and gtest for it.


Re: RFR: 8252593: [TESTBUG] serviceability/jvmti/GetLocalVariable/GetLocalWithoutSuspendTest.java failed with JVMTI_ERROR_INVALID_SLOT

2020-09-16 Thread Richard Reingruber
On Wed, 16 Sep 2020 06:26:51 GMT, Chris Plummer  wrote:

>> Continuing review [1] after transition to Git/Github.
>> 
>> I still cannot reproduce the issue.
>> 
>> RFC on alternatives:
>> 
>> 1. Integrate this change and ignore future JVMTI_ERROR_INVALID_SLOT
>> 2. Don't ignore JVMTI_ERROR_INVALID_SLOT but integrate the rest of this 
>> patch. If the test still fails with
>> JVMTI_ERROR_INVALID_SLOT we will at least know the depth of the frame. 3. 
>> Add trace code to VM_GetOrSetLocal in
>> !PRODUCT or ASSERT configurations depending on an option or property.
>> Any other ideas?
>> 
>> I'm in favour of 1.
>> 
>> [1] 
>> http://mail.openjdk.java.net/pipermail/serviceability-dev/2020-September/032876.html
>
> Marked as reviewed by cjplummer (Reviewer).

Thanks Serguei and Chris. I'll integrate this tomorrow.

-

PR: https://git.openjdk.java.net/jdk/pull/142


Re: RFR: 8241390: 'Deadlock' with VM_RedefineClasses::lock_classes()

2020-09-16 Thread Serguei Spitsyn
On Tue, 15 Sep 2020 20:02:38 GMT, Coleen Phillimore  wrote:

>> The change fixes a 'deadlock' situation in 
>> VM_RedefineClasses::lock_classes() when the current thread is in the middle
>> of redefining the same class. The change is based on the fix [1] suggested 
>> in the Jira issue [2] comment.
>> [1] http://cr.openjdk.java.net/~jiangli/8241390/webrev.00/
>> [2] https://bugs.openjdk.java.net/browse/JDK-8241390
>> 
>> Testing: :jdk_instrument, tier1-tier3, and tier5 tests pass.
>
> Changes requested by coleenp (Reviewer).

The identifier 'cls' does not reflect the nature of the object and needs to be 
replaces with something like:
  classes, redef_classes or classes_list
This impacts the files: jvmtiThreadState.hpp and jvmtiRedefineClasses.cpp.

-

PR: https://git.openjdk.java.net/jdk/pull/190


Re: RFR: 8241390: 'Deadlock' with VM_RedefineClasses::lock_classes()

2020-09-16 Thread Serguei Spitsyn
On Tue, 15 Sep 2020 20:02:33 GMT, Coleen Phillimore  wrote:

>> The change fixes a 'deadlock' situation in 
>> VM_RedefineClasses::lock_classes() when the current thread is in the middle
>> of redefining the same class. The change is based on the fix [1] suggested 
>> in the Jira issue [2] comment.
>> [1] http://cr.openjdk.java.net/~jiangli/8241390/webrev.00/
>> [2] https://bugs.openjdk.java.net/browse/JDK-8241390
>> 
>> Testing: :jdk_instrument, tier1-tier3, and tier5 tests pass.
>
> src/hotspot/share/prims/jvmtiRedefineClasses.cpp line 159:
> 
>> 157: if (!cls->contains(def_ik)) {
>> 158:   def_ik->set_is_being_redefined(false);
>> 159: }
> 
> Ok, so adding the Klass to the thread local list for each recursion works 
> like ref counting.  Can't think of a simpler
> way to do this.  Looks good.

Yes, the same class can be pushed to the list multiple times (not more than 
once by each recursive redefinition). It'd
make sense to add a comment about it as it is not obvious.

> test/jdk/java/lang/instrument/MakeAgentJAR.sh line 1:
> 
>> 1: #!/bin/sh
> 
> There are tests in test/hotspot/jtreg/serviceability/jvmti/RedefineClasses 
> that don't use shell scripts that are much
> better.  Can you add this test using that framework instead?

I'm second for this suggestion from Coleen to get rid of the shell script in 
the test.

-

PR: https://git.openjdk.java.net/jdk/pull/190


Re: RFR: 8252593: [TESTBUG] serviceability/jvmti/GetLocalVariable/GetLocalWithoutSuspendTest.java failed with JVMTI_ERROR_INVALID_SLOT

2020-09-16 Thread Chris Plummer
On Sat, 12 Sep 2020 23:19:46 GMT, Richard Reingruber  wrote:

> Continuing review [1] after transition to Git/Github.
> 
> I still cannot reproduce the issue.
> 
> RFC on alternatives:
> 
> 1. Integrate this change and ignore future JVMTI_ERROR_INVALID_SLOT
> 2. Don't ignore JVMTI_ERROR_INVALID_SLOT but integrate the rest of this 
> patch. If the test still fails with
> JVMTI_ERROR_INVALID_SLOT we will at least know the depth of the frame. 3. Add 
> trace code to VM_GetOrSetLocal in
> !PRODUCT or ASSERT configurations depending on an option or property.
> Any other ideas?
> 
> I'm in favour of 1.
> 
> [1] 
> http://mail.openjdk.java.net/pipermail/serviceability-dev/2020-September/032876.html

Marked as reviewed by cjplummer (Reviewer).

-

PR: https://git.openjdk.java.net/jdk/pull/142