Hi Martin,

On 28/02/2018 1:02 PM, Martin Buchholz wrote:
I should probably do more testing than usual when touching classloading...

We have a jdi test that does this (hg blame finds duke as only author):

     public static ClassLoader classLoaderValue;
     {
         try {
             urls[0] = new URL("hi there");
         } catch (java.net.MalformedURLException ee) {
         }
         classLoaderValue = new URLClassLoader(urls);
     }

The assignment to urls[0] never succeeds (!), so URLClassLoader(URL[]) is called with an array holding a null.  Which should cause a NPE, but did not prior to JDK-8198484 <https://bugs.openjdk.java.net/browse/JDK-8198484>.
ArrayDeque does not permit null elements!

Should we accept the NPE as a bug fix and file a retroactive CSR for that, or should we continue to compatibly tolerate null URLs (yuk)?

As I wrote in the bug report the tolerance for nulls is very limited. Seems you can have them in the initial URL[] but if you actually try to use one you get NPE. So accepting a null entry in the URL[] seems rather pointless - and addURL explicitly states that null is ignored. So I'd argue for the CSR so we can at least consider whether we need tolerate this.

Can we get jdi team to fix their dodgy tests?

Yes. Depending on which way we go we may need a new bug, otherwise this one can be assigned back to hotspot->svc. I'm also perplexed by the test logic.

Thanks,
David

Reply via email to