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 2011/10/17 16:39:00 UTC
DO NOT REPLY [Bug 52042] New: Possible NullPointerException in
DefaultInstanceManager#processAnnotations
https://issues.apache.org/bugzilla/show_bug.cgi?id=52042
Bug #: 52042
Summary: Possible NullPointerException in
DefaultInstanceManager#processAnnotations
Product: Tomcat 7
Version: 7.0.22
Platform: PC
Status: NEW
Severity: critical
Priority: P2
Component: Catalina
AssignedTo: dev@tomcat.apache.org
ReportedBy: gurkanerdogdu@yahoo.com
Classification: Unclassified
NullPointerException exception is thrown randomly from
"DefaultInstanceManager#processAnnotations" method on the following lines,
List<AnnotationCacheEntry> annotations;
synchronized (annotationCache) {
annotations = annotationCache.get(clazz).get();
}
//Null Pointer Exception is thrown, because annotations is NULL
for (AnnotationCacheEntry entry : annotations) {
For example, I have a JSF Managed Bean
public class X extends Y{
}
Open JSF page that contains managed bean X. Randomly opening the same page
throws NullPointerException because for superclass Y "annotations =
annotationCache.get(clazz).get();" returns null.
Using WeakHashMap on "annotationCache" field may be the reason of exception.
--
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- 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
DO NOT REPLY [Bug 52042] Possible NullPointerException in
DefaultInstanceManager#processAnnotations
Posted by bu...@apache.org.
https://issues.apache.org/bugzilla/show_bug.cgi?id=52042
--- Comment #3 from Mark Thomas <ma...@apache.org> 2011-10-17 16:40:14 UTC ---
OK. Looks like the problem isn't the WeakReference but that the fields of a
class which are cached using soft references. There is a chance that a GC run
could clear the soft references which would then make the weak references
eligible for GC too.
It looks like we'll need to revisit the annotation cache implementation.
--
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- 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
DO NOT REPLY [Bug 52042] Possible NullPointerException in
DefaultInstanceManager#processAnnotations
Posted by bu...@apache.org.
https://issues.apache.org/bugzilla/show_bug.cgi?id=52042
--- Comment #4 from Mark Thomas <ma...@apache.org> 2011-10-18 13:25:31 UTC ---
This error is actually most likely triggered by a simple threading bug.
However, there are differences between how the cache is intended to behave and
how it is actually implemented. Reconciling these differences is not trivial.
I'm currently working on a fix.
--
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- 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
DO NOT REPLY [Bug 52042] Possible NullPointerException in
DefaultInstanceManager#processAnnotations
Posted by bu...@apache.org.
https://issues.apache.org/bugzilla/show_bug.cgi?id=52042
Mark Thomas <ma...@apache.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
OS/Version| |All
--- Comment #1 from Mark Thomas <ma...@apache.org> 2011-10-17 15:07:33 UTC ---
That code snippet could refer to several places in the DefaultInstanceManager.
Please provide the full stack trace.
I don't think the use of WeakReferences is the problem since there should be a
strong reference present to prevent the collection of the weak reference until
the point where the web app is reloaded.
We have seen issues where annotations weren't scanned because objects weren't
created through the instance manager. That is another possible explanation.
--
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- 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
DO NOT REPLY [Bug 52042] Possible NullPointerException in
DefaultInstanceManager#processAnnotations
Posted by bu...@apache.org.
https://issues.apache.org/bugzilla/show_bug.cgi?id=52042
Mark Thomas <ma...@apache.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |FIXED
--- Comment #5 from Mark Thomas <ma...@apache.org> 2011-10-19 09:32:43 UTC ---
Thanks for the report. I have fixed this and the additional errors I discovered
while investigating this issue. The fix has been applied to trunk (8.0.x) and
7.0.x and will be included in 7.0.23 onwards.
--
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- 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
DO NOT REPLY [Bug 52042] Possible NullPointerException in
DefaultInstanceManager#processAnnotations
Posted by bu...@apache.org.
https://issues.apache.org/bugzilla/show_bug.cgi?id=52042
--- Comment #2 from Gurkan Erdogdu <gu...@yahoo.com> 2011-10-17 16:03:03 UTC ---
Here is the full stack trace
java.lang.NullPointerException
at
org.apache.catalina.core.DefaultInstanceManager.processAnnotations(DefaultInstanceManager.java:460)
at
org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:146)
at
org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:139)
at
org.apache.myfaces.config.annotation.Tomcat7AnnotationLifecycleProvider.postConstruct(Tomcat7AnnotationLifecycleProvider.java:90)
at
org.apache.myfaces.config.ManagedBeanBuilder.buildManagedBean(ManagedBeanBuilder.java:211)
at
org.apache.myfaces.el.unified.resolver.ManagedBeanResolver.createManagedBean(ManagedBeanResolver.java:332)
at
org.apache.myfaces.el.unified.resolver.ManagedBeanResolver.getValue(ManagedBeanResolver.java:295)
at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:67)
at
org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:142)
at
org.apache.myfaces.el.VariableResolverImpl.resolveVariable(VariableResolverImpl.java:65)
at
org.apache.myfaces.el.convert.VariableResolverToELResolver.getValue(VariableResolverToELResolver.java:116)
at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:67)
at
org.apache.myfaces.el.unified.resolver.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:142)
at org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:71)
at org.apache.el.parser.AstValue.getValue(AstValue.java:147)
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:189)
at
com.sun.facelets.el.TagValueExpression.getValue(TagValueExpression.java:71)
at
org.apache.myfaces.application.ApplicationImpl.createComponent(ApplicationImpl.java:433)
at
com.sun.facelets.tag.jsf.ComponentHandler.createComponent(ComponentHandler.java:224)
at
com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:139)
at
com.sun.facelets.tag.jsf.ComponentHandler.applyNextHandler(ComponentHandler.java:314)
at
com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:169)
at
com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
at
com.sun.facelets.tag.jsf.ComponentHandler.applyNextHandler(ComponentHandler.java:314)
at
com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:169)
at
com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
at
com.sun.facelets.tag.jsf.ComponentHandler.applyNextHandler(ComponentHandler.java:314)
at
com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:169)
at
com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
at
com.sun.facelets.tag.jsf.ComponentHandler.applyNextHandler(ComponentHandler.java:314)
at
com.sun.facelets.tag.jsf.ComponentHandler.apply(ComponentHandler.java:169)
at
com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
at
com.sun.facelets.tag.ui.DefineHandler.applyDefinition(DefineHandler.java:64)
at
com.sun.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:131)
at
com.sun.facelets.impl.DefaultFaceletContext$TemplateManager.apply(DefaultFaceletContext.java:337)
at
com.sun.facelets.impl.DefaultFaceletContext.includeDefinition(DefaultFaceletContext.java:307)
at com.sun.facelets.tag.ui.InsertHandler.apply(InsertHandler.java:68)
at
com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
at
com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49)
at
com.sun.facelets.tag.CompositeFaceletHandler.apply(CompositeFaceletHandler.java:47)
at com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:25)
at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:248)
at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:294)
at com.sun.facelets.impl.DefaultFacelet.include(DefaultFacelet.java:273)
at
com.sun.facelets.impl.DefaultFaceletContext.includeFacelet(DefaultFaceletContext.java:140)
at
com.sun.facelets.tag.ui.CompositionHandler.apply(CompositionHandler.java:113)
at
com.sun.facelets.compiler.NamespaceHandler.apply(NamespaceHandler.java:49)
at com.sun.facelets.compiler.EncodingHandler.apply(EncodingHandler.java:25)
at com.sun.facelets.impl.DefaultFacelet.apply(DefaultFacelet.java:95)
at
com.sun.facelets.FaceletViewHandler.buildView(FaceletViewHandler.java:524)
at
com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:567)
at
org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100)
at
org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176)
at
org.apache.myfaces.lifecycle.RenderResponseExecutor.execute(RenderResponseExecutor.java:85)
at
org.apache.myfaces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:239)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:191)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:206)
at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
at
org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388)
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515)
at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:964)
at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
at
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
--
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- 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