RFR: 8214499: SA should follow 8150689

Yasumasa Suenaga yasuenag at gmail.com
Fri Nov 30 04:42:40 UTC 2018


Thanks David!

I will remove them.


Yasumasa

2018年11月30日(金) 13:09 David Holmes <david.holmes at oracle.com>:
>
> Hi Yasumasa,
>
> On 30/11/2018 1:39 pm, Yasumasa Suenaga wrote:
> > Hi David, Poonam,
> >
> > I filed this issue to JBS and uploaded webrev:
> >
> >    JBS: https://bugs.openjdk.java.net/browse/JDK-8214499
> >    webrev: http://cr.openjdk.java.net/~ysuenaga/JDK-8214499/webrev.00/
> >
> > This change works fine on test/hotspot/jtreg/serviceability/sa jtreg
> > test and submit repo
> > (mach5-one-ysuenaga-JDK-8214499-20181130-0216-12402).
> >
> > Could you review it?
>
> As per the main bug you should delete this part of the comment block:
>
>   102         // At this level we can't distinguish the two cases to report
>   103         // "waited on" rather than "waiting on" for the second case.
>
> Otherwise looks fine. No need to see an updated webrev.
>
> Thanks,
> David
>
> >
> > Thanks,
> >
> > Yasumasa
> >
> >
> > 2018年11月30日(金) 10:37 David Holmes <david.holmes at oracle.com>:
> >>
> >> Yes please file a bug Yasumasa.
> >>
> >> This was an oversight in the fixing of 8150689. I have to remember when
> >> grepping the code that the SA source is no longer under hotspot :(
> >>
> >> Thanks,
> >> David
> >>
> >> On 30/11/2018 5:29 am, Poonam Parhar wrote:
> >>> Hello Yasumasa,
> >>>
> >>> It seems to be a good fix to have in SA. Please file a bug and send in
> >>> your review request.
> >>>
> >>> Thanks,
> >>> Poonam
> >>>
> >>> On 11/29/18 6:29 AM, Yasumasa Suenaga wrote:
> >>>> Hi all,
> >>>>
> >>>> Does someone work for adapting SA to the 8150689?
> >>>> 8150689 fixed not to show incorrect lock information in thread dump.
> >>>>
> >>>> jstack code in SA implements which refer to HotSpot implementation.
> >>>> So it should be fixed as below:
> >>>>
> >>>> ----------------------
> >>>> diff -r 157c1130b46e
> >>>> src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/OopUtilities.java
> >>>>
> >>>> ---
> >>>> a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/OopUtilities.java
> >>>> Thu Nov 29 07:40:45 2018 +0800
> >>>> +++
> >>>> b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/oops/OopUtilities.java
> >>>> Thu Nov 29 22:52:34 2018 +0900
> >>>> @@ -1,5 +1,5 @@
> >>>>   /*
> >>>> - * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights
> >>>> reserved.
> >>>> + * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights
> >>>> reserved.
> >>>>    * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
> >>>>    *
> >>>>    * This code is free software; you can redistribute it and/or modify it
> >>>> @@ -65,14 +65,14 @@
> >>>>     // possible values of java_lang_Thread::ThreadStatus
> >>>>     private static int THREAD_STATUS_NEW;
> >>>>
> >>>> -  private static int THREAD_STATUS_RUNNABLE;
> >>>> -  private static int THREAD_STATUS_SLEEPING;
> >>>> -  private static int THREAD_STATUS_IN_OBJECT_WAIT;
> >>>> -  private static int THREAD_STATUS_IN_OBJECT_WAIT_TIMED;
> >>>> -  private static int THREAD_STATUS_PARKED;
> >>>> -  private static int THREAD_STATUS_PARKED_TIMED;
> >>>> -  private static int THREAD_STATUS_BLOCKED_ON_MONITOR_ENTER;
> >>>> -  private static int THREAD_STATUS_TERMINATED;
> >>>> +  public static int THREAD_STATUS_RUNNABLE;
> >>>> +  public static int THREAD_STATUS_SLEEPING;
> >>>> +  public static int THREAD_STATUS_IN_OBJECT_WAIT;
> >>>> +  public static int THREAD_STATUS_IN_OBJECT_WAIT_TIMED;
> >>>> +  public static int THREAD_STATUS_PARKED;
> >>>> +  public static int THREAD_STATUS_PARKED_TIMED;
> >>>> +  public static int THREAD_STATUS_BLOCKED_ON_MONITOR_ENTER;
> >>>> +  public static int THREAD_STATUS_TERMINATED;
> >>>>
> >>>>     // java.util.concurrent.locks.AbstractOwnableSynchronizer fields
> >>>>     private static OopField absOwnSyncOwnerThreadField;
> >>>> diff -r 157c1130b46e
> >>>> src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/JavaVFrame.java
> >>>>
> >>>> ---
> >>>> a/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/JavaVFrame.java
> >>>> Thu Nov 29 07:40:45 2018 +0800
> >>>> +++
> >>>> b/src/jdk.hotspot.agent/share/classes/sun/jvm/hotspot/runtime/JavaVFrame.java
> >>>> Thu Nov 29 22:52:34 2018 +0900
> >>>> @@ -1,5 +1,5 @@
> >>>>   /*
> >>>> - * Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights
> >>>> reserved.
> >>>> + * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights
> >>>> reserved.
> >>>>    * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
> >>>>    *
> >>>>    * This code is free software; you can redistribute it and/or modify it
> >>>> @@ -106,6 +106,9 @@
> >>>>             StackValue sv = locs.get(0);
> >>>>             if (sv.getType() == BasicType.getTObject()) {
> >>>>               OopHandle o = sv.getObject();
> >>>> +            if
> >>>> (OopUtilities.threadOopGetThreadStatus(thread.getThreadObj()) ==
> >>>> OopUtilities.THREAD_STATUS_BLOCKED_ON_MONITOR_ENTER) {
> >>>> +                waitState = "waiting to re-lock in wait()";
> >>>> +            }
> >>>>               printLockedObjectClassName(tty, o, waitState);
> >>>>             }
> >>>>           } else {
> >>>> @@ -146,13 +149,6 @@
> >>>>               // an inflated monitor that is first on the monitor list in
> >>>>               // the first frame can block us on a monitor enter.
> >>>>               lockState = identifyLockState(monitor, "waiting to lock");
> >>>> -          } else if (frameCount != 0) {
> >>>> -            // This is not the first frame so we either own this monitor
> >>>> -            // or we owned the monitor before and called wait(). Because
> >>>> -            // wait() could have been called on any monitor in a lower
> >>>> -            // numbered frame on the stack, we have to check all the
> >>>> -            // monitors on the list for this frame.
> >>>> -            lockState = identifyLockState(monitor, "waiting to
> >>>> re-lock in wait()");
> >>>>             }
> >>>>             printLockedObjectClassName(tty, monitor.owner(), lockState);
> >>>>             foundFirstMonitor = true;
> >>>> ----------------------
> >>>>
> >>>>
> >>>> Please tell me if I should file it to JBS and send review request.
> >>>>
> >>>>
> >>>> Thanks,
> >>>>
> >>>> Yasumasa
> >>>


More information about the serviceability-dev mailing list