PING: RFR: 8209790: SA tools not providing option to connect to debug server

Yasumasa Suenaga yasuenag at gmail.com
Mon Jun 17 13:11:51 UTC 2019


Hi David,

On 2019/06/17 21:42, David Holmes wrote:
> Hi Yasumasa,
> 
> On 17/06/2019 6:50 pm, Yasumasa Suenaga wrote:
>> Hi David,
>>
>> 8209790 is filed as a bug.
> 
> I don't agree this is a "bug" - sorry. For this to be a bug there must 
> be some specification of behaviour that the implementation is violating. 
> Is that the case? To me this is missing functionality which makes it an 
> enhancement.

The feature for connecting to remote debug server has been provided JDK 
8 or earlier. However it was missed since JDK 9. So I think we can 
handle it as a "bug".
Anyway, I added jdk13-enhancement-request label to JBS. I'm waiting for 
the approval.


>> According to [1], I think we can push the fix to jdk/jdk13. Does it 
>> correct?
>>
>> I'm not sure which version (13 or 14) should be set on JBS before 
>> pushing.
> 
> Just to clarify the process here, you don't want to set the "Fix 
> Version" to 13 or 14 in JBS before pushing. That will be set based on 
> the repo you push to. If you push to jdk/jdk it will be 14. If you push 
> to jdk/jdk13 it will be 13. Any fix pushed to jdk/jdk13 will be 
> "automatically" forward-ported to jdk/jdk and thus 14.

Thanks! I got it.


Yasumasa


> David
> -----
> 
>> (Of course I will push it after the CSR is approved.)
>>
>>
>> Thanks,
>>
>> Yasumasa
>>
>>
>> [1] http://mail.openjdk.java.net/pipermail/jdk-dev/2019-June/003051.html
>>
>>
>> On 2019/06/17 17:06, David Holmes wrote:
>>> Hi Yasumasa,
>>>
>>> On 17/06/2019 8:52 am, Yasumasa Suenaga wrote:
>>>> 2019年6月17日(月) 6:47 serguei.spitsyn at oracle.com 
>>>> <mailto:serguei.spitsyn at oracle.com> <serguei.spitsyn at oracle.com 
>>>> <mailto:serguei.spitsyn at oracle.com>>:
>>>>
>>>>     Forgot to tell...
>>>>     This can be pushed only after the CSR is approved.
>>>>
>>>>
>>>> Sure!
>>>> And I will push it when I get second reviewer.
>>>>
>>>> BTW should I push this change to jdk/jdk? or push to jdk/jdk13 
>>>> manually?
>>>
>>> JDK 13 has now entered RDP1 so if you want this to go into 13 it will 
>>> need special approval:
>>>
>>> http://openjdk.java.net/jeps/3#Late-Enhancement-Request-Process
>>>
>>> Otherwise push to jdk/jdk and it will be for JDK 14.
>>>
>>> Cheers,
>>> David
>>>
>>>>
>>>> Thanks,
>>>>
>>>> Yasumasa
>>>>
>>>>
>>>>
>>>>     Thanks,
>>>>     Serguei
>>>>
>>>>
>>>>     On 6/16/19 14:44, serguei.spitsyn at oracle.com
>>>>     <mailto:serguei.spitsyn at oracle.com> wrote:
>>>>      > Hi Yasumasa,
>>>>      >
>>>>      >
>>>>      > On 6/16/19 07:22, Yasumasa Suenaga wrote:
>>>>      >> Hi Serguei,
>>>>      >>
>>>>      >> >>> One minor suggestion is to use the final field NO_REMOTE 
>>>> instead
>>>>      >> >>> of null for initialization of the local variable "remote".
>>>>      >>
>>>>      >> I fixed it on new webrev. Could you check again?
>>>>      >> http://cr.openjdk.java.net/~ysuenaga/JDK-8209790/webrev.02/
>>>>      >
>>>>      >
>>>>      > It looks good.
>>>>      > Thanks you for the update!
>>>>      >
>>>>      >>
>>>>      >> >> IMHO refactoring should be worked on another issue.
>>>>      >> >
>>>>      >> > Agreed.
>>>>      >>
>>>>      >> I filed it to JBS:
>>>>      >> https://bugs.openjdk.java.net/browse/JDK-8226204
>>>>      >
>>>>      > Thank you for filing the enhancement!
>>>>      >
>>>>      > Thanks.
>>>>      > Serguei
>>>>      >
>>>>      >
>>>>      >> Thanks,
>>>>      >>
>>>>      >> Yasumasa
>>>>      >>
>>>>      >>
>>>>      >> On 2019/06/15 15:10, serguei.spitsyn at oracle.com
>>>>     <mailto:serguei.spitsyn at oracle.com> wrote:
>>>>      >>> Hi Yasumasa,
>>>>      >>>
>>>>      >>>
>>>>      >>> On 6/14/19 21:11, Yasumasa Suenaga wrote:
>>>>      >>>> Hi Serguei,
>>>>      >>>>
>>>>      >>>> Thank you for your comment!
>>>>      >>>>
>>>>      >>>> On 2019/06/15 8:00, serguei.spitsyn at oracle.com
>>>>     <mailto:serguei.spitsyn at oracle.com> wrote:
>>>>      >>>>> Hi Yasumasa,
>>>>      >>>>>
>>>>      >>>>> I've added myself as a reviewer, so you can finalize it now.
>>>>      >>>>
>>>>      >>>> I moved CSR to Finalized, and added a comment for your 
>>>> question.
>>>>      >>>
>>>>      >>> Okay, thanks!
>>>>      >>>
>>>>      >>>
>>>>      >>>>> The fix looks pretty good to me.
>>>>      >>>>>
>>>>      >>>>> One minor suggestion is to use the final field NO_REMOTE 
>>>> instead
>>>>      >>>>> of null for initialization of the local variable "remote".
>>>>      >>>>
>>>>      >>>> I will fix that.
>>>>      >>>>
>>>>      >>>>
>>>>      >>>>> Also just an observation that there is some room for option
>>>>      >>>>> processing refactoring.
>>>>      >>>>
>>>>      >>>> Your suggestion handles all options in one parser method.
>>>>      >>>> I concern it might be complex for option validation.
>>>>      >>>> (e.g. `jmap -heap` is allowed, but `jstack -heap` is not 
>>>> allowed.)
>>>>      >>>
>>>>      >>> This concern is not valid as the list allowed options allowed
>>>>     for each
>>>>      >>> jhsdb sub-command is controlled with the longOpts argument.
>>>>      >>>
>>>>      >>> jmap has:
>>>>      >>>           String[] longOpts = {"exe=", "core=", "pid=", 
>>>> "remote=",
>>>>      >>>                 "heap", "binaryheap", "dumpfile=", "histo",
>>>>      >>> "clstats", "finalizerinfo"};
>>>>      >>>
>>>>      >>> but jstack has:
>>>>      >>>           String[] longOpts = {"exe=", "core=", "pid=", 
>>>> "remote=",
>>>>      >>> "mixed", "locks"};
>>>>      >>>
>>>>      >>>> IMHO refactoring should be worked on another issue.
>>>>      >>>
>>>>      >>> Agreed.
>>>>      >>>
>>>>      >>>
>>>>      >>>> If you are OK in above, I will upload new webrev.
>>>>      >>>
>>>>      >>> Yes, I'm Okay with it.
>>>>      >>>
>>>>      >>>
>>>>      >>> Thanks,
>>>>      >>> Serguei
>>>>      >>>
>>>>      >>>
>>>>      >>>> Thanks,
>>>>      >>>>
>>>>      >>>> Yasumasa
>>>>      >>>>
>>>>      >>>>
>>>>      >>>>> All the jhsdb sub-commands do execute similar loops like 
>>>> this:
>>>>      >>>>> while((s = sg.next(null, longOpts)) != null) {
>>>>      >>>>>          . . .
>>>>      >>>>>      }
>>>>      >>>>>
>>>>      >>>>> It can be moved into a separate method instead.
>>>>      >>>>> The longOpts can passed in arguments.
>>>>      >>>>>
>>>>      >>>>> It can be something like this:
>>>>      >>>>>
>>>>      >>>>>      private ArrayList<String> processOptions(final String[]
>>>>     oldArgs,
>>>>      >>>>>                                               final String[]
>>>>      >>>>> longOpts,
>>>>      >>>>>                                               boolean
>>>>     allowEmpty) {
>>>>      >>>>>          SAGetopt sg = new SAGetopt(oldArgs);
>>>>      >>>>>          ArrayList<String> newArgs = new ArrayList();
>>>>      >>>>>
>>>>      >>>>>          String pid = null;
>>>>      >>>>>          String exe = null;
>>>>      >>>>>          String core = null;
>>>>      >>>>>          String s = null;
>>>>      >>>>>          String dumpfile = null;
>>>>      >>>>>          String remote = NO_REMOTE;
>>>>      >>>>>          boolean requestHeapdump = false;
>>>>      >>>>>
>>>>      >>>>>          while((s = sg.next(null, longOpts)) != null) {
>>>>      >>>>>              if (s.equals("exe")) {
>>>>      >>>>>                  exe = sg.getOptarg();
>>>>      >>>>>                  continue;
>>>>      >>>>>              }
>>>>      >>>>>              if (s.equals("core")) {
>>>>      >>>>>                  core = sg.getOptarg();
>>>>      >>>>>                  continue;
>>>>      >>>>>              }
>>>>      >>>>>              if (s.equals("pid")) {
>>>>      >>>>>                   pid = sg.getOptarg();
>>>>      >>>>>                   continue;
>>>>      >>>>>              }
>>>>      >>>>>              if (s.equals("remote")) {
>>>>      >>>>>                  remote = sg.getOptarg();
>>>>      >>>>>                  continue;
>>>>      >>>>>              }
>>>>      >>>>>              if (s.equals("mixed")) {
>>>>      >>>>>                  newArgs.add("-m");
>>>>      >>>>>                  continue;
>>>>      >>>>>              }
>>>>      >>>>>              if (s.equals("locks")) {
>>>>      >>>>>                  newArgs.add("-l");
>>>>      >>>>>                  continue;
>>>>      >>>>>              }
>>>>      >>>>>              if (s.equals("heap")) {
>>>>      >>>>>                  newArgs.add("-heap");
>>>>      >>>>>                  continue;
>>>>      >>>>>              }
>>>>      >>>>>              if (s.equals("binaryheap")) {
>>>>      >>>>>                  requestHeapdump = true;
>>>>      >>>>>                  continue;
>>>>      >>>>>              }
>>>>      >>>>>              if (s.equals("dumpfile")) {
>>>>      >>>>>                  dumpfile = sg.getOptarg();
>>>>      >>>>>                  continue;
>>>>      >>>>>              }
>>>>      >>>>>              if (s.equals("histo")) {
>>>>      >>>>>                  newArgs.add("-histo");
>>>>      >>>>>                  continue;
>>>>      >>>>>              }
>>>>      >>>>>              if (s.equals("clstats")) {
>>>>      >>>>>                  newArgs.add("-clstats");
>>>>      >>>>>                   continue;
>>>>      >>>>>              }
>>>>      >>>>>              if (s.equals("finalizerinfo")) {
>>>>      >>>>>                  newArgs.add("-finalizerinfo");
>>>>      >>>>>                  continue;
>>>>      >>>>>              }
>>>>      >>>>>              if (s.equals("flags")) {
>>>>      >>>>>                  newArgs.add("-flags");
>>>>      >>>>>                  continue;
>>>>      >>>>>              }
>>>>      >>>>>              if (s.equals("sysprops")) {
>>>>      >>>>>                  newArgs.add("-sysprops");
>>>>      >>>>>                  continue;
>>>>      >>>>>              }
>>>>      >>>>>              if (s.equals("serverid")) {
>>>>      >>>>>                  String serverid = sg.getOptarg();
>>>>      >>>>>                  if (serverid != null) {
>>>>      >>>>>                      newArgs.add(serverid);
>>>>      >>>>>                  }
>>>>      >>>>>                  continue;
>>>>      >>>>>              }
>>>>      >>>>>          }
>>>>      >>>>>
>>>>      >>>>>          if (!requestHeapdump && (dumpfile != null)) {
>>>>      >>>>>              throw new IllegalArgumentException("Unexpected
>>>>      >>>>> argument dumpfile");
>>>>      >>>>>          }
>>>>      >>>>>          if (requestHeapdump) {
>>>>      >>>>>              if (dumpfile == null) {
>>>>      >>>>>                  newArgs.add("-heap:format=b");
>>>>      >>>>>              } else {
>>>>      >>>>>                   newArgs.add("-heap:format=b,file=" + 
>>>> dumpfile);
>>>>      >>>>>              }
>>>>      >>>>>          }
>>>>      >>>>>          buildAttachArgs(newArgs, pid, exe, core, remote,
>>>>      >>>>> allowEmpty);
>>>>      >>>>>
>>>>      >>>>>          return newArgs;
>>>>      >>>>>      }
>>>>      >>>>>
>>>>      >>>>>      private static void runCLHSDB(String[] oldArgs) {
>>>>      >>>>>          String[] longOpts = {"exe=", "core=", "pid="};
>>>>      >>>>>          ArrayList<String> newArgs = processOptions(oldArgs,
>>>>      >>>>> longOpts, true);
>>>>      >>>>>
>>>>      >>>>>          CLHSDB.main(newArgs.toArray(new
>>>>     String[newArgs.size()]));
>>>>      >>>>>      }
>>>>      >>>>>
>>>>      >>>>>      private static void runHSDB(String[] oldArgs) {
>>>>      >>>>>          String[] longOpts = {"exe=", "core=", "pid="};
>>>>      >>>>>           ArrayList<String> newArgs = 
>>>> processOptions(oldArgs,
>>>>      >>>>> longOpts, true);
>>>>      >>>>>
>>>>      >>>>>           HSDB.main(newArgs.toArray(new 
>>>> String[newArgs.size()]));
>>>>      >>>>>      }
>>>>      >>>>>
>>>>      >>>>>      private static void runJSTACK(String[] oldArgs) {
>>>>      >>>>>          String[] longOpts = {"exe=", "core=", "pid=",
>>>>     "remote=",
>>>>      >>>>> "mixed", "locks"};
>>>>      >>>>>          ArrayList<String> newArgs = processOptions(oldArgs,
>>>>      >>>>> longOpts, false);
>>>>      >>>>>
>>>>      >>>>>          JStack jstack = new JStack(false, false);
>>>>      >>>>>          jstack.runWithArgs(newArgs.toArray(new
>>>>      >>>>> String[newArgs.size()]));
>>>>      >>>>>      }
>>>>      >>>>>
>>>>      >>>>>      private static void runJMAP(String[] oldArgs) {
>>>>      >>>>>          String[] longOpts = {"exe=", "core=", "pid=", 
>>>> "remote=",
>>>>      >>>>>                "heap", "binaryheap", "dumpfile=", "histo",
>>>>      >>>>> "clstats", "finalizerinfo"};
>>>>      >>>>>
>>>>      >>>>>          ArrayList<String> newArgs = processOptions(oldArgs,
>>>>      >>>>> longOpts, false);
>>>>      >>>>>
>>>>      >>>>>          JMap.main(newArgs.toArray(new 
>>>> String[newArgs.size()]));
>>>>      >>>>>      }
>>>>      >>>>>
>>>>      >>>>>      private static void runJINFO(String[] oldArgs) {
>>>>      >>>>>          String[] longOpts = {"exe=", "core=", "pid=",
>>>>     "remote=",
>>>>      >>>>> "flags", "sysprops"};
>>>>      >>>>>          ArrayList<String> newArgs = processOptions(oldArgs,
>>>>      >>>>> longOpts, false);
>>>>      >>>>>
>>>>      >>>>>          JInfo.main(newArgs.toArray(new 
>>>> String[newArgs.size()]));
>>>>      >>>>>      }
>>>>      >>>>>
>>>>      >>>>>      private static void runJSNAP(String[] oldArgs) {
>>>>      >>>>>          String[] longOpts = {"exe=", "core=", "pid=",
>>>>     "remote=",
>>>>      >>>>> "all"};
>>>>      >>>>>          ArrayList<String> newArgs = processOptions(oldArgs,
>>>>      >>>>> longOpts, false);
>>>>      >>>>>          JSnap.main(newArgs.toArray(new 
>>>> String[newArgs.size()]));
>>>>      >>>>>      }
>>>>      >>>>>
>>>>      >>>>>      private static void runDEBUGD(String[] oldArgs) {
>>>>      >>>>>          // By default SA agent classes prefer Windows 
>>>> process
>>>>      >>>>> debugger
>>>>      >>>>>          // to windbg debugger. SA expects special 
>>>> properties to
>>>>      >>>>> be set
>>>>      >>>>>          // to choose other debuggers. We will set those 
>>>> here
>>>>     before
>>>>      >>>>>          // attaching to SA agent.
>>>>      >>>>> 
>>>> System.setProperty("sun.jvm.hotspot.debugger.useWindbgDebugger",
>>>>      >>>>> "true");
>>>>      >>>>>
>>>>      >>>>>          String[] longOpts = {"exe=", "core=", "pid=",
>>>>     "serverid="};
>>>>      >>>>>          ArrayList<String> newArgs = processOptions(oldArgs,
>>>>      >>>>> longOpts, false);
>>>>      >>>>>
>>>>      >>>>>          // delegate to the actual SA debug server.
>>>>      >>>>> sun.jvm.hotspot.DebugServer.main(newArgs.toArray(new
>>>>      >>>>> String[newArgs.size()]));
>>>>      >>>>>      }
>>>>      >>>>>
>>>>      >>>>>
>>>>      >>>>> Please, let me know what do you think.
>>>>      >>>>>
>>>>      >>>>> Thanks,
>>>>      >>>>> Serguei
>>>>      >>>>>
>>>>      >>>>>
>>>>      >>>>> On 6/9/19 7:29 PM, Yasumasa Suenaga wrote:
>>>>      >>>>>> Sorry, new webrev is here:
>>>>      >>>>>> http://cr.openjdk.java.net/~ysuenaga/JDK-8209790/webrev.01/
>>>>      >>>>>>
>>>>      >>>>>> Yasumasa
>>>>      >>>>>>
>>>>      >>>>>> 2019年6月10日(月) 11:27 Yasumasa Suenaga<yasuenag at gmail.com
>>>>     <mailto:yasuenag at gmail.com>>:
>>>>      >>>>>>> PING: Could you review them?
>>>>      >>>>>>>
>>>>      >>>>>>>>>>> JBS:https://bugs.openjdk.java.net/browse/JDK-8209790
>>>>      >>>>>>>>>>> CSR:https://bugs.openjdk.java.net/browse/JDK-8224979
>>>>      >>>>>>>>>>>
>>>>     webrev:http://cr.openjdk.java.net/~ysuenaga/JDK-8209790/webrev.00/
>>>>      >>>>>>>>>>>
>>>>      >>>>>>> It is P3 bug, but I want to fix it before JDK 13 RDP 1 if
>>>>     possible.
>>>>      >>>>>>>
>>>>      >>>>>>>
>>>>      >>>>>>> Thanks,
>>>>      >>>>>>>
>>>>      >>>>>>> Yasumasa
>>>>      >>>>>>>
>>>>      >>>>>>>
>>>>      >>>>>>> 2019年6月5日(水) 14:06 Yasumasa Suenaga<yasuenag at gmail.com
>>>>     <mailto:yasuenag at gmail.com>>:
>>>>      >>>>>>>> Hi Jc,
>>>>      >>>>>>>>
>>>>      >>>>>>>> Thank you for your comment!
>>>>      >>>>>>>> I updated a webrev:
>>>>      >>>>>>>>
>>>>      >>>>>>>> 
>>>> http://cr.openjdk.java.net/~ysuenaga/JDK-8209790/webrev.01/
>>>>      >>>>>>>>
>>>>      >>>>>>>>>     - In runTests; if DebugdUtils implemented 
>>>> Closeable, you
>>>>      >>>>>>>>> could just do a try-with-resources instead of the 
>>>> finally
>>>>      >>>>>>>>> clause...
>>>>      >>>>>>>> I created DebugdUtils for convenience class for attach -
>>>>     detach
>>>>      >>>>>>>> mechanism of debug server.
>>>>      >>>>>>>> IMHO it is prefer "detach" to "close" in this case.
>>>>      >>>>>>>>
>>>>      >>>>>>>>
>>>>      >>>>>>>> Thanks,
>>>>      >>>>>>>>
>>>>      >>>>>>>> Yasumasa
>>>>      >>>>>>>>
>>>>      >>>>>>>>
>>>>      >>>>>>>> 2019年6月5日(水) 11:34 Jean Christophe
>>>>     Beyler<jcbeyler at google.com <mailto:jcbeyler at google.com>>:
>>>>      >>>>>>>>
>>>>      >>>>>>>>> Hi Yasumasa,
>>>>      >>>>>>>>>
>>>>      >>>>>>>>> I'm not an official reviewer but I don't see an issue
>>>>     with the
>>>>      >>>>>>>>> CSR (except that this seems to be bringing a fork in the
>>>>     tools
>>>>      >>>>>>>>> with some handling remote and others not).
>>>>      >>>>>>>>>
>>>>      >>>>>>>>> However, this code is really repetitive and this is 
>>>> not the
>>>>      >>>>>>>>> place to do a big refactor probably but we could do a 
>>>> few
>>>>     nits
>>>>      >>>>>>>>> perhaps:
>>>>      >>>>>>>>>     - Instead of every tool calling commonHelp with an
>>>>      >>>>>>>>> additional flag you could divide into commonHelp and
>>>>      >>>>>>>>> commonHelpWithRemote for the tools and they both call 
>>>> the
>>>>      >>>>>>>>> current commonHelp with that boolean; so that when we 
>>>> are
>>>>      >>>>>>>>> looking at the tool code we know what we are 
>>>> getting... So
>>>>      >>>>>>>>> something like:
>>>>      >>>>>>>>>
>>>>      >>>>>>>>> private static boolean commonHelp(String mode, boolean
>>>>      >>>>>>>>> canConnectToRemote) {
>>>>      >>>>>>>>>      ..
>>>>      >>>>>>>>>   }
>>>>      >>>>>>>>>
>>>>      >>>>>>>>> private static boolean commonHelp(String mode) {
>>>>      >>>>>>>>>     return commonHelp(mode, false);
>>>>      >>>>>>>>> }
>>>>      >>>>>>>>>
>>>>      >>>>>>>>> private static boolean commonHelpWithRemote(String 
>>>> mode) {
>>>>      >>>>>>>>>     return commonHelp(mode, false);
>>>>      >>>>>>>>> }
>>>>      >>>>>>>>>
>>>>      >>>>>>>>> and that way the tools that change are just going from:
>>>>      >>>>>>>>> -        return commonHelp("jmap");
>>>>      >>>>>>>>> +        return commonHelpWithRemote("jmap");
>>>>      >>>>>>>>>
>>>>      >>>>>>>>> - In the same vein, instead of passing null to the
>>>>      >>>>>>>>> buildAttachArgs; you could  make a variable null:
>>>>      >>>>>>>>>
>>>>      >>>>>>>>> -        buildAttachArgs(newArgs, pid, exe, core, true);
>>>>      >>>>>>>>> +        String noRemote = null;
>>>>      >>>>>>>>> +        buildAttachArgs(newArgs, pid, exe, core, 
>>>> noRemote,
>>>>      >>>>>>>>> true);
>>>>      >>>>>>>>>
>>>>      >>>>>>>>>
>>>>      >>>>>>>>>
>>>> -http://cr.openjdk.java.net/~ysuenaga/JDK-8209790/webrev.00/test/hotspot/jtreg/serviceability/sa/sadebugd/DebugdUtils.java.html 
>>>>
>>>>
>>>>      >>>>>>>>>
>>>>      >>>>>>>>>     Nit: you have empty lines at l64 and l73
>>>>      >>>>>>>>>
>>>>      >>>>>>>>>
>>>> -http://cr.openjdk.java.net/~ysuenaga/JDK-8209790/webrev.00/test/hotspot/jtreg/serviceability/sa/sadebugd/DebugdConnectTest.java.html 
>>>>
>>>>
>>>>      >>>>>>>>>
>>>>      >>>>>>>>>      Nit : you have an empty line at l110
>>>>      >>>>>>>>>
>>>>      >>>>>>>>>     - In runTests; if DebugdUtils implemented 
>>>> Closeable, you
>>>>      >>>>>>>>> could just do a try-with-resources instead of the 
>>>> finally
>>>>      >>>>>>>>> clause...
>>>>      >>>>>>>>>
>>>>      >>>>>>>>> All of these are details, I just thought I'd mention 
>>>> them :)
>>>>      >>>>>>>>> Jc
>>>>      >>>>>>>>>
>>>>      >>>>>>>>> On Tue, Jun 4, 2019 at 6:44 PM Yasumasa
>>>>      >>>>>>>>> Suenaga<yasuenag at gmail.com 
>>>> <mailto:yasuenag at gmail.com>>     wrote:
>>>>      >>>>>>>>>> PING: Could you review them?
>>>>      >>>>>>>>>>
>>>>      >>>>>>>>>>> JBS:https://bugs.openjdk.java.net/browse/JDK-8209790
>>>>      >>>>>>>>>>> CSR:https://bugs.openjdk.java.net/browse/JDK-8224979
>>>>      >>>>>>>>>>>
>>>>     webrev:http://cr.openjdk.java.net/~ysuenaga/JDK-8209790/webrev.00/
>>>>      >>>>>>>>>>>
>>>>      >>>>>>>>>> CSR status is provisional. So I need reviewers both 
>>>> CSR and
>>>>      >>>>>>>>>> webrev.
>>>>      >>>>>>>>>>
>>>>      >>>>>>>>>>
>>>>      >>>>>>>>>> Thanks,
>>>>      >>>>>>>>>>
>>>>      >>>>>>>>>> Yasumasa
>>>>      >>>>>>>>>>
>>>>      >>>>>>>>>>
>>>>      >>>>>>>>>> 2019年5月29日(水) 22:37 Yasumasa
>>>>     Suenaga<yasuenag at gmail.com <mailto:yasuenag at gmail.com>>:
>>>>      >>>>>>>>>>> Hi all,
>>>>      >>>>>>>>>>>
>>>>      >>>>>>>>>>> Please review this change:
>>>>      >>>>>>>>>>>
>>>>      >>>>>>>>>>> JBS:https://bugs.openjdk.java.net/browse/JDK-8209790
>>>>      >>>>>>>>>>> CSR:https://bugs.openjdk.java.net/browse/JDK-8224979
>>>>      >>>>>>>>>>>
>>>>     webrev:http://cr.openjdk.java.net/~ysuenaga/JDK-8209790/webrev.00/
>>>>      >>>>>>>>>>>
>>>>      >>>>>>>>>>>
>>>>      >>>>>>>>>>> In JDK 8 or earlier, some tools (jstack, jmap, 
>>>> jinfo) can
>>>>      >>>>>>>>>>> connect to
>>>>      >>>>>>>>>>> debug server (jsadebugd). However it has not done 
>>>> so since
>>>>      >>>>>>>>>>> JDK 9 because
>>>>      >>>>>>>>>>> jhsdb cannot accept the attach request to debug 
>>>> server.
>>>>      >>>>>>>>>>> So I want to introduce new option `--remote` to 
>>>> connect to
>>>>      >>>>>>>>>>> debug server.
>>>>      >>>>>>>>>>>
>>>>      >>>>>>>>>>> I created CSR for this issue. So please review it 
>>>> together.
>>>>      >>>>>>>>>>>
>>>>      >>>>>>>>>>>
>>>>      >>>>>>>>>>> Thanks,
>>>>      >>>>>>>>>>>
>>>>      >>>>>>>>>>> Yasumasa
>>>>      >>>>>>>>>
>>>>      >>>>>>>>> --
>>>>      >>>>>>>>>
>>>>      >>>>>>>>> Thanks,
>>>>      >>>>>>>>> Jc
>>>>      >>>>>
>>>>      >>>
>>>>      >
>>>>


More information about the serviceability-dev mailing list