RFR: JDK-8234808: jdb quoted option parsing broken

Alex Menkov alexey.menkov at oracle.com
Wed Aug 19 22:11:36 UTC 2020


Hi Serguei,

thank you for the feedback.

On 08/19/2020 13:58, serguei.spitsyn at oracle.com wrote:
> Hi Alex,
> 
> Sorry, I've overlooked this request for review.
> The fix looks good in general.
> 
> 
> http://cr.openjdk.java.net/~amenkov/jdk16/jdb_options/webrev/src/jdk.jdi/share/classes/com/sun/tools/example/debug/tty/VMConnection.java.frames.html
> 
> 81 private Map <String, com.sun.jdi.connect.Connector.Argument> 
> parseConnectorArgs(Connector connector,
> 82 String argString,
> 83 String extraOptions) {
> 
> To make it more elegant I'd suggest to place the returned type on a 
> separate line like below:
> private Map<String, com.sun.jdi.connect.Connector.Argument>
> parseConnectorArgs(Connector connector, String argString, String 
> extraOptions) {

Do you mean second line indent should be the same as 1st?
or make it 8 spaces:

private Map<String, com.sun.jdi.connect.Connector.Argument>
         parseConnectorArgs(Connector connector, String argString, 
String extraOptions) {

> 
> 127 sb.append(extraOptions).append(" ");
> 128 // set extraOptions to null to not set it again
> 129 extraOptions = null;
> 
> What about rewording the comment like below? :
>       // set extraOptions to null to avoid appending it again

ok.

> 
> 165 if (extraOptions != null) {
> 166 // there was no "option" specified in argString
> 167 Connector.Argument argument = arguments.get("options");
> 168 if (argument != null) {
> 169 argument.setValue(extraOptions);
> 170 }
> 171 }
> 
> Should the "option" in the comment be replaced with "options"?

right.

> What if the argument at line 167 was set to null?
> Will the extraOptions be ignored in such a case?

extraOptions makes sense only for CommandLineLaunch connector which 
launches new VM (and only this connector has "options" argument).
Other connectors (attach or listen) connect to existing VM and cannot 
set its options.

> 
> 
> http://cr.openjdk.java.net/~amenkov/jdk16/jdb_options/webrev/test/jdk/com/sun/jdi/JdbOptions.java.html
> 
> This line is probably not needed anymore:
> 
>   157             //jdb.quit();
> 

will delete.

--alex

> 
> 
> 
> Thanks,
> Serguei
> 
> On 8/7/20 15:09, Alex Menkov wrote:
>> Hi all,
>>
>> please review the fix for
>> https://bugs.openjdk.java.net/browse/JDK-8234808
>> webrev:
>> http://cr.openjdk.java.net/~amenkov/jdk16/jdb_options/webrev/
>>
>> 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).
>>
>> --alex
> 


More information about the serviceability-dev mailing list