Hi,

While testing for the attached regex changes, a fatal vm init error was triggered for test case with -Djava.security.debug=xyz turned on, as showed in following stacktrace.

It appears sun.security.util.Debug is being initialized even before the lambda is ready for use, and unfortunately it uses j.u.regex (for its args parsing), which is being migrated
to use lambda function in the proposed regex change.

Since Debug is the only class now triggers j.u.regex -> lambda during initialization, it is suggested to update/rewrite the related method in Debug to NOT use j.u.regex to
solve/workaround this specific initialization issue.

The webrev below has been updated to include such a change.

http://cr.openjdk.java.net/~sherman/regexBackTrack.Lamnda.CanonEQ/webrev/

The sun.security.util.Debug related change is at

http://cr.openjdk.java.net/~sherman/regexBackTrack.Lamnda.CanonEQ/webrev/src/java.base/share/classes/sun/security/util/Debug.java.sdiff.html

Can security-dev guys help take a look if this is an acceptable/reasonable approach.

Thanks,
Sherman

-----------------------------------------------------------------------------

Caused by: java.lang.ExceptionInInitializerError


        at 
jdk.internal.loader.BootLoader.loadClassOrNull(java.base/BootLoader.java:110)
        at 
java.lang.invoke.BoundMethodHandle$Factory$1.apply(java.base/BoundMethodHandle.java:497)
        at 
java.lang.invoke.BoundMethodHandle$Factory$1.apply(java.base/BoundMethodHandle.java:492)
...
        at 
java.lang.invoke.MethodHandleNatives.linkCallSite(java.base/MethodHandleNatives.java:240)
        at java.util.regex.Pattern.<clinit>(java.base/Pattern.java:5682)
        at sun.security.util.Debug.marshal(java.base/Debug.java:247)
        at sun.security.util.Debug.<clinit>(java.base/Debug.java:59)
        at 
java.security.ProtectionDomain.<clinit>(java.base/ProtectionDomain.java:142)
        at 
jdk.internal.misc.InnocuousThread.<clinit>(java.base/InnocuousThread.java:129)
        at 
jdk.internal.ref.CleanerFactory$1$1.run(java.base/CleanerFactory.java:48)
        at 
jdk.internal.ref.CleanerFactory$1$1.run(java.base/CleanerFactory.java:45)
        at java.security.AccessController.doPrivileged(java.base/Native Method)
        at 
jdk.internal.ref.CleanerFactory$1.newThread(java.base/CleanerFactory.java:45)
        at jdk.internal.ref.CleanerImpl.start(java.base/CleanerImpl.java:116)
        at java.lang.ref.Cleaner.create(java.base/Cleaner.java:203)
        at 
jdk.internal.ref.CleanerFactory.<clinit>(java.base/CleanerFactory.java:42)
        at sun.nio.fs.NativeBuffer.<init>(java.base/NativeBuffer.java:60)
        at 
sun.nio.fs.NativeBuffers.allocNativeBuffer(java.base/NativeBuffers.java:49)
        at 
sun.nio.fs.UnixNativeDispatcher.copyToNativeBuffer(java.base/UnixNativeDispatcher.java:44)
        at 
sun.nio.fs.UnixNativeDispatcher.stat(java.base/UnixNativeDispatcher.java:306)
        at 
sun.nio.fs.UnixFileSystemProvider.isRegularFile(java.base/UnixFileSystemProvider.java:514)
        at java.nio.file.Files.isRegularFile(java.base/Files.java:2244)
        at 
java.lang.module.ModuleFinder.ofSystem(java.base/ModuleFinder.java:165)
        at 
jdk.internal.module.ModuleBootstrap.boot(java.base/ModuleBootstrap.java:105)
        at java.lang.System.initPhase2(java.base/System.java:1924)

---------------------------------------------------------------------------------


On 3/18/16 1:05 PM, Xueming Shen wrote:
Hi,

There are couple regex related changes waiting for review. I have pull them
together here (with the notes) to make it easy to review.

http://cr.openjdk.java.net/~sherman/regexBackTrack.Lamnda.CanonEQ/webrev/

(1) Exponential backtracking

Note: http://cr.openjdk.java.net/~sherman/regexBackTrack.Lamnda.CanonEQ/backtracking

https://bugs.openjdk.java.net/browse/JDK-6328855
https://bugs.openjdk.java.net/browse/JDK-6192895
https://bugs.openjdk.java.net/browse/JDK-6345469
https://bugs.openjdk.java.net/browse/JDK-6988218
https://bugs.openjdk.java.net/browse/JDK-6693451
https://bugs.openjdk.java.net/browse/JDK-7006761
https://bugs.openjdk.java.net/browse/JDK-8140212

(2) Anonymous class to lambda function cleanup

Note: http://cr.openjdk.java.net/~sherman/regexBackTrack.Lamnda.CanonEQ/lambdafunction

https://bugs.openjdk.java.net/browse/JDK-8151481
https://bugs.openjdk.java.net/browse/JDK-6609854

(3) Canonical Equivalents

Note: http://cr.openjdk.java.net/~sherman/regexBackTrack.Lamnda.CanonEQ/canonEQ

https://bugs.openjdk.java.net/browse/JDK-4916384
https://bugs.openjdk.java.net/browse/JDK-4867170
https://bugs.openjdk.java.net/browse/JDK-6995635
https://bugs.openjdk.java.net/browse/JDK-6728861
https://bugs.openjdk.java.net/browse/JDK-6736245
https://bugs.openjdk.java.net/browse/JDK-7080302

Thanks
Sherman


Reply via email to