Thanks Jini. Regards, Daniel
-----Original Message----- From: Jini George [mailto:jini.geo...@oracle.com] Sent: Sunday, February 4, 2018 10:56 PM To: stewartd.qdt <stewartd....@qualcommdatacenter.com>; David Holmes <david.hol...@oracle.com> Cc: serviceability-dev <serviceability-dev@openjdk.java.net>; hotspot-...@openjdk.java.net Subject: Re: RFR: 8196361: JTReg failure in serviceability/sa/ClhsdbInspect.java Your changes look good, Daniel. I can sponsor the changes. Thank you, Jini. On 2/2/2018 7:28 PM, stewartd.qdt wrote: > Hi Jini, > > Thank you for the review. I have made the requested changes and posted > them at http://cr.openjdk.java.net/~dstewart/8196361/webrev.03/ > > Please have a look and review the changes. > > Thanks, > Daniel > > > -----Original Message----- > From: Jini George [mailto:jini.geo...@oracle.com] > Sent: Friday, February 2, 2018 1:19 AM > To: David Holmes <david.hol...@oracle.com>; stewartd.qdt > <stewartd....@qualcommdatacenter.com> > Cc: serviceability-dev <serviceability-dev@openjdk.java.net>; > hotspot-...@openjdk.java.net > Subject: Re: RFR: 8196361: JTReg failure in > serviceability/sa/ClhsdbInspect.java > > Hi Daniel, > > Your changes look good to me overall. Just some nits: > > * Please do add 2018 to the copyright year. > * Since the rest of the file follows 4 spaces for indentation, please keep > the indentation to 4 spaces. > * Line 81: It would be great if the opening brace is at line 80, so that it > would be consistent with the rest of the file. > * Line 65: The declaration could be a part of line 79. > * Line 51: Please add the 'oop address of a java.lang.Class' to the comment. > > Thanks! > Jini. > > > On 2/2/2018 7:31 AM, David Holmes wrote: >> On 2/02/2018 1:50 AM, stewartd.qdt wrote: >>> Please have a look at the newest changes at: >>> http://cr.openjdk.java.net/~dstewart/8196361/webrev.02/ >>> >>> The only difference between this and the last changeset is the use >>> of "\\R" instead of whatever is the platform line.separator. >> >> Thanks for that. >> >> The overall changes seem reasonable but I'll defer to Jini for final >> approval. If Jini approves then consider this Reviewed. >> >> Thanks, >> David >> >>> Thank you, >>> Daniel >>> >>> -----Original Message----- >>> From: David Holmes [mailto:david.hol...@oracle.com] >>> Sent: Thursday, February 1, 2018 2:51 AM >>> To: stewartd.qdt <stewartd....@qualcommdatacenter.com>; Jini George >>> <jini.geo...@oracle.com> >>> Cc: serviceability-dev <serviceability-dev@openjdk.java.net>; >>> hotspot-...@openjdk.java.net >>> Subject: Re: RFR: 8196361: JTReg failure in >>> serviceability/sa/ClhsdbInspect.java >>> >>> Hi Daniel, >>> >>> On 1/02/2018 2:45 AM, stewartd.qdt wrote: >>>> Hi Jini, David, >>>> >>>> Please have a look at the revised webrev: >>>> http://cr.openjdk.java.net/~dstewart/8196361/webrev.01/ >>>> >>>> In this webrev I have changed the approach to finding the addresses. >>>> This was necessary because in the case of matching for the locks >>>> the addresses are before what is matched and in the case of Method >>>> the address is after it. The existing code only looked for the >>>> addresses after the matched string. I've also tried to align what >>>> tokens are being looked for in the lock case. I've taken an >>>> approach of breaking the jstack output into lines and then >>>> searching each line for it containing what we want. Once found, the >>>> line is broken into pieces to find the actual address we want. >>>> >>>> Please let me know if this is an unacceptable approach or any >>>> changes you would like to see. >>> >>> I'm not clear on the overall approach as I'm unclear exactly how >>> inspect operates or exactly what the test is trying to verify. One >>> comment on breaking things into lines though: >>> >>> 73 String newline = >>> System.getProperty("line.separator"); >>> 74 String[] lines = jstackOutput.split(newline); >>> >>> As split() takes a regex, I suggest using \R to cover all potential >>> line-breaks, rather than the platform specific line-seperator. We've >>> been recently bitten by the distinction between output that comes >>> from reading a process's stdout/stderr (and for which a newline \n >>> is translated into the platform line-seperator), and output that >>> comes across a socket connection (for which \n is not translated). >>> This could result in failing to parse things correctly on Windows. >>> It's safer/simpler to expect any kind of line-seperator. >>> >>> Thanks, >>> David >>> >>>> Thanks, >>>> Daniel >>>> >>>> >>>> -----Original Message----- >>>> From: Jini George [mailto:jini.geo...@oracle.com] >>>> Sent: Tuesday, January 30, 2018 6:58 AM >>>> To: David Holmes <david.hol...@oracle.com>; stewartd.qdt >>>> <stewartd....@qualcommdatacenter.com> >>>> Cc: serviceability-dev <serviceability-dev@openjdk.java.net>; >>>> hotspot-...@openjdk.java.net >>>> Subject: Re: RFR: 8196361: JTReg failure in >>>> serviceability/sa/ClhsdbInspect.java >>>> >>>> Hi Daniel, David, >>>> >>>> Thanks, Daniel, for bringing this up. The intent of the test is to >>>> get the oop address corresponding to a >>>> java.lang.ref.ReferenceQueue$Lock, >>>> which can typically be obtained from the stack traces of the >>>> Common-Cleaner or the Finalizer threads. The stack traces which I >>>> had been noticing were typically of the form: >>>> >>>> >>>> "Common-Cleaner" #8 daemon prio=8 tid=0x00007f09c82ac000 nid=0xf6e >>>> in >>>> Object.wait() [0x00007f09a18d2000] >>>> java.lang.Thread.State: TIMED_WAITING (on object monitor) >>>> JavaThread state: _thread_blocked >>>> - java.lang.Object.wait(long) @bci=0, pc=0x00007f09b7d6480b, >>>> Method*=0x00007f09acc43d60 (Interpreted frame) >>>> - waiting on <0x000000072e61f6e0> (a >>>> java.lang.ref.ReferenceQueue$Lock) >>>> - java.lang.ref.ReferenceQueue.remove(long) @bci=59, line=151, >>>> pc=0x00007f09b7d55243, Method*=0x00007f09acdab9b0 (Interpreted >>>> frame) >>>> - waiting to re-lock in wait() <0x000000072e61f6e0> (a >>>> java.lang.ref.ReferenceQueue$Lock) >>>> ... >>>> >>>> I chose 'waiting to re-lock in wait' since that was what I had been >>>> observing next to the oop address of java.lang.ref.ReferenceQueue$Lock. >>>> But I see how with a timing difference, one could get 'waiting to lock' >>>> as in your case. So, a good way to fix might be to check for the >>>> line containing '(a java.lang.ref.ReferenceQueue$Lock)', getting >>>> the oop address from that line (should be the address appearing >>>> immediately before '(a java.lang.ref.ReferenceQueue$Lock)') and >>>> passing that to the 'inspect' command. >>>> >>>> Thanks much, >>>> Jini. >>>> >>>> On 1/30/2018 3:35 AM, David Holmes wrote: >>>>> Hi Daniel, >>>>> >>>>> Serviceability issues should go to >>>>> serviceability-dev@openjdk.java.net >>>>> - now cc'd. >>>>> >>>>> On 30/01/2018 7:53 AM, stewartd.qdt wrote: >>>>>> Please review this webrev [1] which attempts to fix a test error >>>>>> in serviceability/sa/ClhsdbInspect.java when it is run under an >>>>>> AArch64 system (not necessarily exclusive to this system, but it >>>>>> was the system under test). The bug report [2] provides further details. >>>>>> Essentially the line "waiting to re-lock in wait" never actually >>>>>> occurs. Instead I have the line "waiting to lock" which occurs >>>>>> for the referenced item of /java/lang/ref/ReferenceQueue$Lock. >>>>>> Unfortunately the test is written such that only the first >>>>>> "waiting to lock" >>>>>> occurrence is seen (for java/lang/Class), which is already >>>>>> accounted for in the test. >>>>> >>>>> I can't tell exactly what the test expects, or why, but it would >>>>> be extremely hard to arrange for "waiting to re-lock in wait" to >>>>> be seen for the ReferenceQueue lock! That requires acquiring the >>>>> lock yourself, issuing a notify() to unblock the wait(), and then >>>>> issuing the jstack command while still holding the lock! >>>>> >>>>> David >>>>> ----- >>>>> >>>>>> I'm not overly happy with this approach as it actually removes a >>>>>> test line. However, the test line does not actually appear in the >>>>>> output (at least on my system) and the test is not currently >>>>>> written to look for the second occurrence of the line "waiting to lock". >>>>>> Perhaps the original author could chime in and provide further >>>>>> guidance as to the intention of the test. >>>>>> >>>>>> I am happy to modify the patch as necessary. >>>>>> >>>>>> Regards, >>>>>> Daniel Stewart >>>>>> >>>>>> >>>>>> [1] - http://cr.openjdk.java.net/~dstewart/8196361/webrev.00/ >>>>>> [2] - https://bugs.openjdk.java.net/browse/JDK-8196361 >>>>>>