How to reproduce it:
1. customize an existing regression tests with policy file.
Such as jdk9-dev/jdk/test/java/net/URLPermission/policy.2
change
permission "java.net.SocketPermission" "localhost:1024-", "listen,resolve,accept";
to
permission "java.net.SocketPermission" "localhost:1024-" "listen,resolve,accept";
2. run the test with latest jdk9 dev nightly build.
3. my locale is CN
It will fail with following error:
----------messages:(3/150)----------
command: main URLTest two
reason: User specified action: run main/othervm/java.security.policy=policy.2 URLTest two
elapsed time (seconds): 0.366
----------System.out:(0/0)----------
----------System.err:(110/8134)----------
Exception in thread "main" java.lang.ClassCircularityError: sun/util/resources/provider/NonEnLocaleDataMetaInfo
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:370)
at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:368)
at java.util.ServiceLoader$LazyIterator.access$700(ServiceLoader.java:321)
at java.util.ServiceLoader$LazyIterator$2.run(ServiceLoader.java:405)
at java.security.AccessController.doPrivileged(Native Method)
at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:407)
at java.util.ServiceLoader$1.next(ServiceLoader.java:478)
at sun.util.locale.provider.JRELocaleProviderAdapter$1.run(JRELocaleProviderAdapter.java:430)
at sun.util.locale.provider.JRELocaleProviderAdapter$1.run(JRELocaleProviderAdapter.java:425)
at java.security.AccessController.doPrivileged(Native Method)
at sun.util.locale.provider.JRELocaleProviderAdapter.createSupportedLocaleString(JRELocaleProviderAdapter.java:425)
at sun.util.locale.provider.JRELocaleProviderAdapter.createLanguageTagSet(JRELocaleProviderAdapter.java:406)
at sun.util.locale.provider.JRELocaleProviderAdapter.getLanguageTagSet(JRELocaleProviderAdapter.java:396)
at sun.util.locale.provider.JRELocaleProviderAdapter.lambda$getNumberFormatProvider$5(JRELocaleProviderAdapter.java:230)
at java.security.AccessController.doPrivileged(Native Method)
at sun.util.locale.provider.JRELocaleProviderAdapter.getNumberFormatProvider(JRELocaleProviderAdapter.java:226)
at sun.util.locale.provider.JRELocaleProviderAdapter.getLocaleServiceProvider(JRELocaleProviderAdapter.java:97)
at sun.util.locale.provider.LocaleProviderAdapter.findAdapter(LocaleProviderAdapter.java:284)
at sun.util.locale.provider.LocaleProviderAdapter.getAdapter(LocaleProviderAdapter.java:254)
at java.text.NumberFormat.getInstance(NumberFormat.java:859)
at java.text.NumberFormat.getInstance(NumberFormat.java:442)
at java.text.MessageFormat.subformat(MessageFormat.java:1271)
at java.text.MessageFormat.format(MessageFormat.java:865)
at java.text.Format.format(Format.java:157)
at sun.security.provider.PolicyParser$ParsingException.<init>(PolicyParser.java:1347)
at sun.security.provider.PolicyParser.match(PolicyParser.java:777)
at sun.security.provider.PolicyParser.parseGrantEntry(PolicyParser.java:558)
at sun.security.provider.PolicyParser.read(PolicyParser.java:189)
at sun.security.provider.PolicyFile.init(PolicyFile.java:602)
at sun.security.provider.PolicyFile.access$300(PolicyFile.java:258)
at sun.security.provider.PolicyFile$3.run(PolicyFile.java:518)
at sun.security.provider.PolicyFile$3.run(PolicyFile.java:492)
at java.security.AccessController.doPrivileged(Native Method)
at sun.security.provider.PolicyFile.initPolicyFile(PolicyFile.java:492)
at sun.security.provider.PolicyFile.initPolicyFile(PolicyFile.java:477)
at sun.security.provider.PolicyFile.init(PolicyFile.java:436)
at sun.security.provider.PolicyFile.<init>(PolicyFile.java:296)
at java.security.Policy.loadPolicyProvider(Policy.java:207)
at java.security.Policy.getPolicyNoCheck(Policy.java:177)
at java.security.ProtectionDomain.implies(ProtectionDomain.java:295)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:446)
at java.security.AccessController.checkPermission(AccessController.java:894)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:541)
at java.lang.SecurityManager.checkPackageAccess(SecurityManager.java:1479)
at java.lang.ClassLoader$1.run(ClassLoader.java:501)
at java.lang.ClassLoader$1.run(ClassLoader.java:499)
at java.security.AccessController.doPrivileged(Native Method)
at java.lang.ClassLoader.checkPackageAccess(ClassLoader.java:499)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:759)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:148)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:370)
at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:368)
at java.util.ServiceLoader$LazyIterator.access$700(ServiceLoader.java:321)
at java.util.ServiceLoader$LazyIterator$2.run(ServiceLoader.java:405)
at java.security.AccessController.doPrivileged(Native Method)
at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:407)
at java.util.ServiceLoader$1.next(ServiceLoader.java:478)
at sun.util.locale.provider.JRELocaleProviderAdapter$1.run(JRELocaleProviderAdapter.java:430)
at sun.util.locale.provider.JRELocaleProviderAdapter$1.run(JRELocaleProviderAdapter.java:425)
at java.security.AccessController.doPrivileged(Native Method)
at sun.util.locale.provider.JRELocaleProviderAdapter.createSupportedLocaleString(JRELocaleProviderAdapter.java:425)
at sun.util.locale.provider.JRELocaleProviderAdapter.createLanguageTagSet(JRELocaleProviderAdapter.java:406)
at sun.util.locale.provider.JRELocaleProviderAdapter.getLanguageTagSet(JRELocaleProviderAdapter.java:396)
at sun.util.locale.provider.JRELocaleProviderAdapter.lambda$getNumberFormatProvider$5(JRELocaleProviderAdapter.java:230)
at java.security.AccessController.doPrivileged(Native Method)
at sun.util.locale.provider.JRELocaleProviderAdapter.getNumberFormatProvider(JRELocaleProviderAdapter.java:226)
at sun.util.locale.provider.JRELocaleProviderAdapter.getLocaleServiceProvider(JRELocaleProviderAdapter.java:97)
at sun.util.locale.provider.LocaleProviderAdapter.findAdapter(LocaleProviderAdapter.java:284)
at sun.util.locale.provider.LocaleProviderAdapter.getAdapter(LocaleProviderAdapter.java:254)
at java.text.NumberFormat.getInstance(NumberFormat.java:859)
at java.text.NumberFormat.getInstance(NumberFormat.java:442)
at java.text.MessageFormat.subformat(MessageFormat.java:1271)
at java.text.MessageFormat.format(MessageFormat.java:865)
at java.text.Format.format(Format.java:157)
at sun.security.provider.PolicyParser$ParsingException.<init>(PolicyParser.java:1347)
at sun.security.provider.PolicyParser.match(PolicyParser.java:777)
at sun.security.provider.PolicyParser.parseGrantEntry(PolicyParser.java:558)
at sun.security.provider.PolicyParser.read(PolicyParser.java:189)
at sun.security.provider.PolicyFile.init(PolicyFile.java:602)
at sun.security.provider.PolicyFile.access$300(PolicyFile.java:258)
at sun.security.provider.PolicyFile$3.run(PolicyFile.java:518)
at sun.security.provider.PolicyFile$3.run(PolicyFile.java:492)
at java.security.AccessController.doPrivileged(Native Method)
at sun.security.provider.PolicyFile.initPolicyFile(PolicyFile.java:492)
at sun.security.provider.PolicyFile.initPolicyFile(PolicyFile.java:477)
at sun.security.provider.PolicyFile.init(PolicyFile.java:436)
at sun.security.provider.PolicyFile.<init>(PolicyFile.java:296)
at java.security.Policy.loadPolicyProvider(Policy.java:207)
at java.security.Policy.getPolicyNoCheck(Policy.java:177)
at java.security.ProtectionDomain.implies(ProtectionDomain.java:295)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:446)
at java.security.AccessController.checkPermission(AccessController.java:894)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:541)
at java.lang.SecurityManager.checkRead(SecurityManager.java:880)
at java.io.FileInputStream.<init>(FileInputStream.java:127)
at java.io.FileInputStream.<init>(FileInputStream.java:93)
at java.io.FileReader.<init>(FileReader.java:58)
at com.sun.javatest.regtest.agent.MainWrapper.main(MainWrapper.java:43)
1. customize an existing regression tests with policy file.
Such as jdk9-dev/jdk/test/java/net/URLPermission/policy.2
change
permission "java.net.SocketPermission" "localhost:1024-", "listen,resolve,accept";
to
permission "java.net.SocketPermission" "localhost:1024-" "listen,resolve,accept";
2. run the test with latest jdk9 dev nightly build.
3. my locale is CN
It will fail with following error:
----------messages:(3/150)----------
command: main URLTest two
reason: User specified action: run main/othervm/java.security.policy=policy.2 URLTest two
elapsed time (seconds): 0.366
----------System.out:(0/0)----------
----------System.err:(110/8134)----------
Exception in thread "main" java.lang.ClassCircularityError: sun/util/resources/provider/NonEnLocaleDataMetaInfo
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:370)
at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:368)
at java.util.ServiceLoader$LazyIterator.access$700(ServiceLoader.java:321)
at java.util.ServiceLoader$LazyIterator$2.run(ServiceLoader.java:405)
at java.security.AccessController.doPrivileged(Native Method)
at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:407)
at java.util.ServiceLoader$1.next(ServiceLoader.java:478)
at sun.util.locale.provider.JRELocaleProviderAdapter$1.run(JRELocaleProviderAdapter.java:430)
at sun.util.locale.provider.JRELocaleProviderAdapter$1.run(JRELocaleProviderAdapter.java:425)
at java.security.AccessController.doPrivileged(Native Method)
at sun.util.locale.provider.JRELocaleProviderAdapter.createSupportedLocaleString(JRELocaleProviderAdapter.java:425)
at sun.util.locale.provider.JRELocaleProviderAdapter.createLanguageTagSet(JRELocaleProviderAdapter.java:406)
at sun.util.locale.provider.JRELocaleProviderAdapter.getLanguageTagSet(JRELocaleProviderAdapter.java:396)
at sun.util.locale.provider.JRELocaleProviderAdapter.lambda$getNumberFormatProvider$5(JRELocaleProviderAdapter.java:230)
at java.security.AccessController.doPrivileged(Native Method)
at sun.util.locale.provider.JRELocaleProviderAdapter.getNumberFormatProvider(JRELocaleProviderAdapter.java:226)
at sun.util.locale.provider.JRELocaleProviderAdapter.getLocaleServiceProvider(JRELocaleProviderAdapter.java:97)
at sun.util.locale.provider.LocaleProviderAdapter.findAdapter(LocaleProviderAdapter.java:284)
at sun.util.locale.provider.LocaleProviderAdapter.getAdapter(LocaleProviderAdapter.java:254)
at java.text.NumberFormat.getInstance(NumberFormat.java:859)
at java.text.NumberFormat.getInstance(NumberFormat.java:442)
at java.text.MessageFormat.subformat(MessageFormat.java:1271)
at java.text.MessageFormat.format(MessageFormat.java:865)
at java.text.Format.format(Format.java:157)
at sun.security.provider.PolicyParser$ParsingException.<init>(PolicyParser.java:1347)
at sun.security.provider.PolicyParser.match(PolicyParser.java:777)
at sun.security.provider.PolicyParser.parseGrantEntry(PolicyParser.java:558)
at sun.security.provider.PolicyParser.read(PolicyParser.java:189)
at sun.security.provider.PolicyFile.init(PolicyFile.java:602)
at sun.security.provider.PolicyFile.access$300(PolicyFile.java:258)
at sun.security.provider.PolicyFile$3.run(PolicyFile.java:518)
at sun.security.provider.PolicyFile$3.run(PolicyFile.java:492)
at java.security.AccessController.doPrivileged(Native Method)
at sun.security.provider.PolicyFile.initPolicyFile(PolicyFile.java:492)
at sun.security.provider.PolicyFile.initPolicyFile(PolicyFile.java:477)
at sun.security.provider.PolicyFile.init(PolicyFile.java:436)
at sun.security.provider.PolicyFile.<init>(PolicyFile.java:296)
at java.security.Policy.loadPolicyProvider(Policy.java:207)
at java.security.Policy.getPolicyNoCheck(Policy.java:177)
at java.security.ProtectionDomain.implies(ProtectionDomain.java:295)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:446)
at java.security.AccessController.checkPermission(AccessController.java:894)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:541)
at java.lang.SecurityManager.checkPackageAccess(SecurityManager.java:1479)
at java.lang.ClassLoader$1.run(ClassLoader.java:501)
at java.lang.ClassLoader$1.run(ClassLoader.java:499)
at java.security.AccessController.doPrivileged(Native Method)
at java.lang.ClassLoader.checkPackageAccess(ClassLoader.java:499)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:759)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:148)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:370)
at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:368)
at java.util.ServiceLoader$LazyIterator.access$700(ServiceLoader.java:321)
at java.util.ServiceLoader$LazyIterator$2.run(ServiceLoader.java:405)
at java.security.AccessController.doPrivileged(Native Method)
at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:407)
at java.util.ServiceLoader$1.next(ServiceLoader.java:478)
at sun.util.locale.provider.JRELocaleProviderAdapter$1.run(JRELocaleProviderAdapter.java:430)
at sun.util.locale.provider.JRELocaleProviderAdapter$1.run(JRELocaleProviderAdapter.java:425)
at java.security.AccessController.doPrivileged(Native Method)
at sun.util.locale.provider.JRELocaleProviderAdapter.createSupportedLocaleString(JRELocaleProviderAdapter.java:425)
at sun.util.locale.provider.JRELocaleProviderAdapter.createLanguageTagSet(JRELocaleProviderAdapter.java:406)
at sun.util.locale.provider.JRELocaleProviderAdapter.getLanguageTagSet(JRELocaleProviderAdapter.java:396)
at sun.util.locale.provider.JRELocaleProviderAdapter.lambda$getNumberFormatProvider$5(JRELocaleProviderAdapter.java:230)
at java.security.AccessController.doPrivileged(Native Method)
at sun.util.locale.provider.JRELocaleProviderAdapter.getNumberFormatProvider(JRELocaleProviderAdapter.java:226)
at sun.util.locale.provider.JRELocaleProviderAdapter.getLocaleServiceProvider(JRELocaleProviderAdapter.java:97)
at sun.util.locale.provider.LocaleProviderAdapter.findAdapter(LocaleProviderAdapter.java:284)
at sun.util.locale.provider.LocaleProviderAdapter.getAdapter(LocaleProviderAdapter.java:254)
at java.text.NumberFormat.getInstance(NumberFormat.java:859)
at java.text.NumberFormat.getInstance(NumberFormat.java:442)
at java.text.MessageFormat.subformat(MessageFormat.java:1271)
at java.text.MessageFormat.format(MessageFormat.java:865)
at java.text.Format.format(Format.java:157)
at sun.security.provider.PolicyParser$ParsingException.<init>(PolicyParser.java:1347)
at sun.security.provider.PolicyParser.match(PolicyParser.java:777)
at sun.security.provider.PolicyParser.parseGrantEntry(PolicyParser.java:558)
at sun.security.provider.PolicyParser.read(PolicyParser.java:189)
at sun.security.provider.PolicyFile.init(PolicyFile.java:602)
at sun.security.provider.PolicyFile.access$300(PolicyFile.java:258)
at sun.security.provider.PolicyFile$3.run(PolicyFile.java:518)
at sun.security.provider.PolicyFile$3.run(PolicyFile.java:492)
at java.security.AccessController.doPrivileged(Native Method)
at sun.security.provider.PolicyFile.initPolicyFile(PolicyFile.java:492)
at sun.security.provider.PolicyFile.initPolicyFile(PolicyFile.java:477)
at sun.security.provider.PolicyFile.init(PolicyFile.java:436)
at sun.security.provider.PolicyFile.<init>(PolicyFile.java:296)
at java.security.Policy.loadPolicyProvider(Policy.java:207)
at java.security.Policy.getPolicyNoCheck(Policy.java:177)
at java.security.ProtectionDomain.implies(ProtectionDomain.java:295)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:446)
at java.security.AccessController.checkPermission(AccessController.java:894)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:541)
at java.lang.SecurityManager.checkRead(SecurityManager.java:880)
at java.io.FileInputStream.<init>(FileInputStream.java:127)
at java.io.FileInputStream.<init>(FileInputStream.java:93)
at java.io.FileReader.<init>(FileReader.java:58)
at com.sun.javatest.regtest.agent.MainWrapper.main(MainWrapper.java:43)