[crac] Integrated: Fix NPE on ZipFile$Source access
Anton Kozlov
akozlov at openjdk.java.net
Mon Apr 11 17:59:19 UTC 2022
On Thu, 3 Mar 2022 13:52:31 GMT, Anton Kozlov <akozlov at openjdk.org> wrote:
> A race between ZipFile$CleanableResource.run() and ZipFile$Resource.beforeCheckpoint() can lead to NullPointerException when zsrc == null. This is observed on some runs of JavaCompilerCRaC.java from #16. The change aligns beforeCheckpoint() with the run(), providing the zsrc check and the proper locking.
>
> The exception looks like below:
>
> java.lang.reflect.InvocationTargetException
> at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
> at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> at java.base/java.lang.reflect.Method.invoke(Method.java:568)
> at java.base/jdk.internal.loader.URLClassPath$JarLoader$ClassLoaderJarFile.beforeCheckpoint(URLClassPath.java:837)
> at java.base/jdk.crac.impl.AbstractContextImpl.beforeCheckpoint(AbstractContextImpl.java:66)
> at java.base/jdk.crac.impl.AbstractContextImpl.beforeCheckpoint(AbstractContextImpl.java:66)
> at java.base/jdk.crac.Core.checkpointRestore1(Core.java:108)
> at java.base/jdk.crac.Core.checkpointRestore(Core.java:182)
> at JavaCompilerCRaC.main(JavaCompilerCRaC.java:27)
> Caused by: java.lang.NullPointerException: Cannot invoke "java.util.zip.ZipFile$Source.getFile()" because the return value of "java.util.zip.ZipFile$CleanableResource.getSource()" is null
> at java.base/java.util.zip.ZipFile.beforeCheckpoint(ZipFile.java:1088)
> ... 10 more
This pull request has now been integrated.
Changeset: 6363393d
Author: Anton Kozlov <akozlov at openjdk.org>
URL: https://git.openjdk.java.net/crac/commit/6363393d025d823e531cfd894d33e6777aef4021
Stats: 28 lines in 1 file changed: 13 ins; 10 del; 5 mod
Fix NPE on ZipFile$Source access
Reviewed-by: heidinga
-------------
PR: https://git.openjdk.java.net/crac/pull/17
More information about the crac-dev
mailing list