You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by bu...@apache.org on 2019/12/16 04:03:55 UTC

[Bug 64005] New: NullPointerException in Tomcat 8.5.50 from java.util.zip.ZipFile.getEntry

https://bz.apache.org/bugzilla/show_bug.cgi?id=64005

            Bug ID: 64005
           Summary: NullPointerException in Tomcat 8.5.50 from
                    java.util.zip.ZipFile.getEntry
           Product: Tomcat 8
           Version: 8.5.50
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: Catalina
          Assignee: dev@tomcat.apache.org
          Reporter: vladimir.mencl@gmail.com
  Target Milestone: ----

Hi,

I'm running an application developed in a rather outdated version of Grails
(2.2.4).

The application still works fine with Tomcat 8.5.49, but breaks with 8.5.50.

On startup, I get the following in catalina.out:

2019-12-16 16:07:47,147 [localhost-startStop-1] ERROR
context.GrailsContextLoader  - Error initializing the application: name
java.lang.NullPointerException: name
        at java.util.zip.ZipFile.getEntry(ZipFile.java:307)
        at java.util.jar.JarFile.getEntry(JarFile.java:227)
        at java.util.jar.JarFile.getJarEntry(JarFile.java:210)
        at java.net.JarURLConnection.getJarEntry(JarURLConnection.java:249)
        at
grails.spring.BeanBuilder.invokeBeanDefiningClosure(BeanBuilder.java:757)
        at grails.spring.BeanBuilder.beans(BeanBuilder.java:584)
        at grails.spring.BeanBuilder.invokeMethod(BeanBuilder.java:527)
        at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:473)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:622)
        at java.lang.Thread.run(Thread.java:748)
2019-12-16 16:07:47,148 [localhost-startStop-1] ERROR
context.GrailsContextLoader  - Error initializing Grails: name
java.lang.NullPointerException: name
        at java.util.zip.ZipFile.getEntry(ZipFile.java:307)
        at java.util.jar.JarFile.getEntry(JarFile.java:227)
        at java.util.jar.JarFile.getJarEntry(JarFile.java:210)
        at java.net.JarURLConnection.getJarEntry(JarURLConnection.java:249)
        at
grails.spring.BeanBuilder.invokeBeanDefiningClosure(BeanBuilder.java:757)
        at grails.spring.BeanBuilder.beans(BeanBuilder.java:584)
        at grails.spring.BeanBuilder.invokeMethod(BeanBuilder.java:527)
        at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:473)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:622)
        at java.lang.Thread.run(Thread.java:748)
16-Dec-2019 16:07:47.148 SEVERE [localhost-startStop-1]
org.apache.catalina.core.StandardContext.startInternal One or more listeners
failed to start. Full details will be found in the appropriate container log
file
16-Dec-2019 16:07:47.153 SEVERE [localhost-startStop-1]
org.apache.catalina.core.StandardContext.startInternal Context
[/federationregistry] startup failed due to previous errors

I have checked the code in ZipFile.java: getEntry - and it has:
    public ZipEntry getEntry(String name) {
        if (name == null) {
            throw new NullPointerException("name");
        }

So I assume something in the classloader chain started passing null as the name
to JarFile.getEntry (which delegates to ZipFile.getEntry).

In the org.codehaus.groovy.grails.web.context.GrailsContextLoader, I could see
the initialization starts with
    application = ctx.getBean(GrailsApplication.APPLICATION_ID,
GrailsApplication.class);
... and than bails out with the messages I see (but the actual exception
appears to happen in a worker thread)

I so far haven't been able to trace what happens in-between.

And I don't know if this is related to #63970 and/or other changes to
CachedResource.java done recently... but linking it here in case it's relevant.


Any help on this would be much appreciated - thanks a lot in advance.

Cheers,
Vlad

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


[Bug 64005] NullPointerException in Tomcat 8.5.50 from java.util.zip.ZipFile.getEntry

Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=64005

--- Comment #8 from Vlad Mencl <vl...@gmail.com> ---
Thanks for the quick fix!

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


[Bug 64005] NullPointerException in Tomcat 8.5.50 from java.util.zip.ZipFile.getEntry

Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=64005

--- Comment #2 from Vlad Mencl <vl...@gmail.com> ---
Hi,

Thanks for the reply - and agree a test case to reproduce the bug is essential
for troubleshooting from your end.

I am just about to go on leave, and will be back at work in the week of January
13th (southern hemisphere Christmas).

Sorry about the delay in advance - hope you can leave this bug as NEEDINFO
until I'm back from leave.

Cheers,
Vlad

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


[Bug 64005] NullPointerException in Tomcat 8.5.50 from java.util.zip.ZipFile.getEntry

Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=64005

--- Comment #4 from Vlad Mencl <vl...@gmail.com> ---
Hi,

I'm getting this for a web-app running off a 50MB WAR file.

I do NOT get the error when I configure Tomcat to unpack the WAR File, only
when running directly from the WAR file.

And it works fine with Tomcat 8.5.49 - so the WAR file is intact.

I have now received a proper stack trace that also traverses Catalina - hope it
is useful:

        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:622)
[ 17.12.19 10:28:42.798] ERROR StackTrace  - Full Stack Trace:
java.lang.NullPointerException: name
        at java.util.zip.ZipFile.getEntry(ZipFile.java:307)
        at java.util.jar.JarFile.getEntry(JarFile.java:227)
        at sun.net.www.protocol.jar.URLJarFile.getEntry(URLJarFile.java:128)
        at java.util.jar.JarFile.getJarEntry(JarFile.java:210)
        at java.net.JarURLConnection.getJarEntry(JarURLConnection.java:249)
        at
org.springframework.core.io.support.PathMatchingResourcePatternResolver.doFindPathMatchingJarResources(PathMatchingResourcePatternResolver.java:439)
        at
org.springframework.core.io.support.PathMatchingResourcePatternResolver.findPathMatchingResources(PathMatchingResourcePatternResolver.java:341)
        at
org.springframework.core.io.support.PathMatchingResourcePatternResolver.getResources(PathMatchingResourcePatternResolver.java:279)
        at
org.springframework.context.support.AbstractApplicationContext.getResources(AbstractApplicationContext.java:1257)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:607)
        at
org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoCachedMethodSiteNoUnwrap.invoke(PojoMetaMethodSite.java:210)
        at
org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:53)
        at
org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:45)
        at
org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:108)
        at
org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
        at
org.codehaus.groovy.runtime.callsite.AbstractCallSite.callSafe(AbstractCallSite.java:82)
        at
org.codehaus.groovy.grails.plugins.i18n.I18nGrailsPlugin$_closure1.doCall(I18nGrailsPlugin.groovy:65)
        at
org.codehaus.groovy.grails.plugins.i18n.I18nGrailsPlugin$_closure1.doCall(I18nGrailsPlugin.groovy)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:607)
        at
org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:90)
        at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1082)
        at
groovy.lang.ExpandoMetaClass.invokeMethod(ExpandoMetaClass.java:1106)
        at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:906)
        at groovy.lang.Closure.call(Closure.java:412)
        at groovy.lang.Closure.call(Closure.java:406)
        at
grails.spring.BeanBuilder.invokeBeanDefiningClosure(BeanBuilder.java:757)
        at grails.spring.BeanBuilder.beans(BeanBuilder.java:584)
        at grails.spring.BeanBuilder.invokeMethod(BeanBuilder.java:527)
        at
org.codehaus.groovy.grails.plugins.DefaultGrailsPlugin.doWithRuntimeConfiguration(DefaultGrailsPlugin.java:512)
        at
org.codehaus.groovy.grails.plugins.AbstractGrailsPluginManager.doRuntimeConfiguration(AbstractGrailsPluginManager.java:124)
        at
org.codehaus.groovy.grails.commons.spring.GrailsRuntimeConfigurator.configure(GrailsRuntimeConfigurator.java:156)
        at
org.codehaus.groovy.grails.commons.spring.GrailsRuntimeConfigurator.configure(GrailsRuntimeConfigurator.java:127)
        at
org.codehaus.groovy.grails.web.context.GrailsConfigUtils.configureWebApplicationContext(GrailsConfigUtils.java:121)
        at
org.codehaus.groovy.grails.web.context.GrailsContextLoader.initWebApplicationContext(GrailsContextLoader.java:107)
        at
org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111)
        at
org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4699)
        at
org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5165)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
        at
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:743)
        at
org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:719)
        at
org.apache.catalina.core.StandardHost.addChild(StandardHost.java:705)
        at
org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:614)
        at
org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1823)
        at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:473)
        at java.util.concurrent.FutureTask.run(FutureTask.java:262)
        at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:622)
        at java.lang.Thread.run(Thread.java:748)


Cheers,
Vlad

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


[Bug 64005] NullPointerException in Tomcat 8.5.50 from java.util.zip.ZipFile.getEntry

Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=64005

--- Comment #5 from Vlad Mencl <vl...@gmail.com> ---
PS: the WAR file I'm running is at 
https://github.com/REANNZ/federationregistry2-Tuakiri/releases/tag/2.9.0-tuakiri5
- but it also needs a config file (template at
https://github.com/REANNZ/federationregistry2-Tuakiri/blob/master/app/federationregistry/fr-config.groovy.example),
so I hope I'll be able to prepare a smaller test case - after I'm back from
leave.

Cheers,
Vlad

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


[Bug 64005] NullPointerException in Tomcat 8.5.50 from java.util.zip.ZipFile.getEntry

Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=64005

Remy Maucherat <re...@apache.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |NEEDINFO

--- Comment #1 from Remy Maucherat <re...@apache.org> ---
Ok for the possible regression, but we would likely still need a reasonable way
to reproduce it.

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


[Bug 64005] NullPointerException in Tomcat 8.5.50 from java.util.zip.ZipFile.getEntry

Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=64005

Mark Thomas <ma...@apache.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEEDINFO                    |NEW

--- Comment #6 from Mark Thomas <ma...@apache.org> ---
I can reproduce this will the following test.jsp in a packed WAR file:

===start===
<p><%= ((java.net.JarURLConnection)
application.getResource("/").openConnection()).getJarEntry() %></p>
===end===

It is almost certainly related to the changes made to URLs for cached
resources.

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


[Bug 64005] NullPointerException in Tomcat 8.5.50 from java.util.zip.ZipFile.getEntry

Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=64005

--- Comment #3 from Michael Osipov <mi...@apache.org> ---
Can you tacke the actual JAR and test it with "unzip -t" as well as NIO2 zipfs
provider?

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


[Bug 64005] NullPointerException in Tomcat 8.5.50 from java.util.zip.ZipFile.getEntry

Posted by bu...@apache.org.
https://bz.apache.org/bugzilla/show_bug.cgi?id=64005

Mark Thomas <ma...@apache.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|---                         |FIXED

--- Comment #7 from Mark Thomas <ma...@apache.org> ---
Fixed in:
- master for 9.0.31 onwards
- 8.5.x for 8.5.51 onwards

7.0.x was not affected.

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org