Kumar,

Great to have you look at this, you are correct, this patch doesn’t address the 
wildcard expansion issue, but only to address the potential crash if a main 
class is not specified as Nikola pointed out. 

We definitely need a follow up to fix wildcard expansion. The pointer to 
simplify the test is helpful, it would make the test more obvious.

Cheers,
Henry

> On Dec 3, 2019, at 7:14 AM, Kumar Srinivasan <ksrini...@gmail.com> wrote:
> 
> Hi,
> 
> Sorry for chiming in  late in the review process, for what it's worth....
> 
> 1. It is not at all clear to me if this solution is correct, yes it averts 
> the problem of not finding the main-class
>     and subsequent crash,  but it does not address  wildcard arguments 
> expansion.
> 
>     What if we have
>     % java --module-path=mods --module=jdk.compiler/com.sun.tools.javac.Main 
> *.java
>     Where jdk.compiler is a java compiler implementation (javac).
>     The user would expect the above compiler module to build all the .java 
> files in that directory, 
>     and this fix will not address that.
> 
> Some background:
> https://bugs.openjdk.java.net/browse/JDK-7146424
> Please see all the related bugs in the above JIRA issue.
> 
> Paragraph #6 in this interview surmises the wild card behavior on  Windows:
> https://www.princeton.edu/~hos/mike/transcripts/kernighan.htm
> 
> 2. Though the arguments related tests are in Aaarghs.java the modules related 
> tests for the launcher are at:
> https://hg.openjdk.java.net/jdk/jdk13/file/0368f3a073a9/test/jdk/tools/launcher/modules/basic
> Using the modules test framework may make the test simpler.
> 
> Kumar Srinivasan
> 
> 
> On Mon, Dec 2, 2019 at 11:34 AM Nikola Grcevski 
> <nikola.grcev...@microsoft.com> wrote:
> Hi Alan and Henry,
> 
> Thank you for reviewing my email! Henry's observation matches mine, the 
> shared common code for all platforms in checkArg 
> (src/java.base/share/native/libjli/args.c) can potentially leave the 
> firstAppArgIndex static set to -1, if all passed command line arguments are 
> prefixed with a dash. Later on the arguments are validated, however we might 
> crash before then on Windows because of the negative index access. In this 
> case, the customer command was valid (modules usage) and the program runs 
> successfully.
> 
> I created a webrev here for the change, including a new test in Arrrghs.java:
> 
> https://grcevski.github.io/JDK-8234076/webrev/
> 
> I copied the test validation and assertion style of other code inside the 
> test class.
> 
> Please let me know if you have any comments or suggestions.
> 
> Thanks again!
> 
> -----Original Message-----
> From: Henry Jen <henry....@oracle.com> 
> Sent: December 2, 2019 12:26 PM
> To: Alan Bateman <alan.bate...@oracle.com>
> Cc: Nikola Grcevski <nikola.grcev...@microsoft.com>; 
> core-libs-dev@openjdk.java.net
> Subject: [EXTERNAL] Re: JDK-8234076 bug fix candidate
> 
> The fix looks reasonable to me, basically, if the command argument format is 
> not legal, it’s possible we won’t find the main class when doing argument 
> file expansion, and the index is -1 which could cause crash on Windows 
> platform for the wildcard processing.
> 
> I think we should add a test case for this, probably in 
> test/jdk/tools/launcher/Arrrghs.java.
> 
> As I understand it, the argument validation is done in a later stage after 
> calling JLI_Launch.
> 
> Cheers,
> Henry
> 
> 
> > On Dec 2, 2019, at 2:12 AM, Alan Bateman <alan.bate...@oracle.com> wrote:
> > 
> > On 20/11/2019 19:42, Nikola Grcevski wrote:
> >> :
> >> 
> >> Please let me know if this approach is acceptable for the current bug 
> >> report and I'll make a webrev and include appropriate launcher tests. I 
> >> was thinking the tests should do extra validation on the output from 
> >> _JAVA_LAUNCHER_DEBUG on Windows.
> >> 
> > I think you're in the right area but I would have expected the arg index to 
> > 0 here. Henry Jen (cc'ed) might have some comments on this.
> > 
> > -Alan
> 

Reply via email to