You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hivemind.apache.org by "Howard M. Lewis Ship (JIRA)" <hi...@jakarta.apache.org> on 2005/03/31 17:42:17 UTC

[jira] Resolved: (HIVEMIND-104) Thread Deadlock

     [ http://issues.apache.org/jira/browse/HIVEMIND-104?page=history ]
     
Howard M. Lewis Ship resolved HIVEMIND-104:
-------------------------------------------

      Assign To: Howard M. Lewis Ship
     Resolution: Fixed
    Fix Version: 1.1

I've checked in the proposed fix; let's let it stew for a while and see if it actually fixes the problem, or if we have to take a more radical approach.

> Thread Deadlock
> ---------------
>
>          Key: HIVEMIND-104
>          URL: http://issues.apache.org/jira/browse/HIVEMIND-104
>      Project: HiveMind
>         Type: Bug
>   Components: framework
>     Versions: 1.1
>  Environment: HiveMind 1.1-alpha-3
>     Reporter: Howard M. Lewis Ship
>     Assignee: Howard M. Lewis Ship
>      Fix For: 1.1

>
> Occasionally my Tapestry applications seem to lock up.  Just happened when I was in the debugger and I was able to pause and see what the contention is.
> Thread [http-8080-Processor25] (Suspended)
> 	PooledServiceModel.returnServiceToPool(PooledServiceModel$PooledService) line: 213
> 	PooledServiceModel.unbindPooledServiceFromCurrentThread(PooledServiceModel$PooledService) line: 248
> 	PooledServiceModel.access$100(PooledServiceModel, PooledServiceModel$PooledService) line: 38
> 	PooledServiceModel$PooledService.threadDidCleanup() line: 96
> 	ThreadEventNotifierImpl.fireThreadCleanup() line: 75
> 	$ThreadEventNotifier_102f0461661.fireThreadCleanup() line: not available
> 	RegistryInfrastructureImpl.cleanupThread() line: 420
> 	RegistryImpl.cleanupThread() line: 86
> 	ApplicationPortlet.render(RenderRequest, RenderResponse) line: 165
> 	PortletApplicationHandler.render_aroundBody8(PortletApplicationHandler, Portlet, RenderRequest, RenderResponse) line: 226
> 	PortletApplicationHandler.render_aroundBody9$advice(PortletApplicationHandler, Portlet, RenderRequest, RenderResponse, PortletFilterAspect, Portlet, RenderRequest, RenderResponse, AroundClosure) line: 458
> 	PortletApplicationHandler.render_aroundBody10(PortletApplicationHandler, Portlet, RenderRequest, RenderResponse) line: not available
> 	PortletApplicationHandler.render_aroundBody11$advice(PortletApplicationHandler, Portlet, RenderRequest, RenderResponse, PortletContentAspect, Portlet, RenderRequest, RenderResponse, AroundClosure) line: 340
> 	PortletApplicationHandler.render_aroundBody12(PortletApplicationHandler, Portlet, RenderRequest, RenderResponse) line: not available
> 	PortletApplicationHandler.render_aroundBody13$advice(PortletApplicationHandler, Portlet, RenderRequest, RenderResponse, PortletCacheAspect, Portlet, RenderRequest, RenderResponse, AroundClosure) line: 172
> 	PortletApplicationHandler.render_aroundBody14(PortletApplicationHandler, Portlet, RenderRequest, RenderResponse) line: not available
> 	PortletApplicationHandler.render_aroundBody15$advice(PortletApplicationHandler, Portlet, RenderRequest, RenderResponse, PortletSecurityAspect, Portlet, RenderRequest, RenderResponse, AroundClosure) line: 738
> 	PortletApplicationHandler.render_aroundBody16(PortletApplicationHandler, Portlet, RenderRequest, RenderResponse) line: not available
> 	PortletApplicationHandler.render_aroundBody17$advice(PortletApplicationHandler, Portlet, RenderRequest, RenderResponse, PortletMonitorAspect, Portlet, RenderRequest, RenderResponse, AroundClosure) line: 628
> 	PortletApplicationHandler.process(ServletContext, HttpServletRequest, HttpServletResponse, Input, Output, PortletWindowInternal, boolean) line: 226
> 	ServletWrapper.service(HttpServletRequest, HttpServletResponse) line: 70
> 	ServletWrapper(HttpServlet).service(ServletRequest, ServletResponse) line: 802
> 	ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 237
> 	ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 157
> 	ApplicationDispatcher.invoke(ServletRequest, ServletResponse) line: 704
> 	ApplicationDispatcher.doInclude(ServletRequest, ServletResponse) line: 590
> 	ApplicationDispatcher.include(ServletRequest, ServletResponse) line: 510
> 	PortletContainerDispatcher.dispatch(HttpServletRequest, HttpServletResponse, String) line: 370
> 	PortletContainerDispatcher.process(HttpServletRequest, HttpServletResponse, Input, boolean) line: 310
> 	PortletContainerDispatcher.render(HttpServletRequest, HttpServletResponse, RenderInput) line: 271
> 	PortletContainerServiceImpl.render(HttpServletRequest, HttpServletResponse, RenderInput) line: 144
> 	PortletRenderer.encodeChildren(FacesContext, UIComponent) line: 100
> 	UIPortlet(UIComponentBase).encodeChildren(FacesContext) line: 693
> 	ContainerRowRenderer.renderViewMode(FacesContext, UIContainer) line: 40
> 	ContainerRowRenderer(ContainerRenderer).encodeChildren(FacesContext, UIComponent) line: 34
> 	UIContainer(UIComponentBase).encodeChildren(FacesContext) line: 693
> 	PortalRenderer(HtmlBasicRenderer).renderChildren(FacesContext, UIComponent) line: 63
> 	PortalRenderer.encodeChildren(FacesContext, UIComponent) line: 58
> 	UIPortal(UIComponentBase).encodeChildren(FacesContext) line: 693
> 	ExoPortalViewHandler.renderView(FacesContext, UIViewRoot) line: 63
> 	RenderResponsePhase.execute(FacesContext) line: 87
> 	LifecycleImpl.phase(PhaseId, Phase, FacesContext) line: 200
> 	LifecycleImpl.render(FacesContext) line: 117
> 	FacesServlet.service(ServletRequest, ServletResponse) line: 198
> 	ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 237
> 	ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 157
> 	PrivateRequestFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 82
> 	ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 186
> 	ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 157
> 	StandardWrapperValve.invoke(Request, Response, ValveContext) line: 214
> 	StandardValveContext.invokeNext(Request, Response) line: 104
> 	StandardPipeline.invoke(Request, Response) line: 520
> 	StandardContextValve.invokeInternal(Wrapper, Request, Response) line: 198
> 	StandardContextValve.invoke(Request, Response, ValveContext) line: 152
> 	StandardValveContext.invokeNext(Request, Response) line: 104
> 	FormAuthenticator(AuthenticatorBase).invoke(Request, Response, ValveContext) line: 540
> 	StandardValveContext.invokeNext(Request, Response) line: 102
> 	StandardPipeline.invoke(Request, Response) line: 520
> 	StandardHostValve.invoke(Request, Response, ValveContext) line: 137
> 	StandardValveContext.invokeNext(Request, Response) line: 104
> 	ErrorReportValve.invoke(Request, Response, ValveContext) line: 117
> 	StandardValveContext.invokeNext(Request, Response) line: 102
> 	StandardPipeline.invoke(Request, Response) line: 520
> 	StandardEngineValve.invoke(Request, Response, ValveContext) line: 109
> 	StandardValveContext.invokeNext(Request, Response) line: 104
> 	StandardPipeline.invoke(Request, Response) line: 520
> 	StandardEngine(ContainerBase).invoke(Request, Response) line: 929
> 	CoyoteAdapter.service(Request, Response) line: 160
> 	Http11Processor.process(InputStream, OutputStream) line: 799
> 	Http11Protocol$Http11ConnectionHandler.processConnection(TcpConnection, Object[]) line: 705
> 	TcpWorkerThread.runIt(Object[]) line: 577
> 	ThreadPool$ControlRunnable.run() line: 683
> 	ThreadWithAttributes(Thread).run() line: 536
>     private synchronized void returnServiceToPool(PooledService pooled)
>     {
>         if (_servicePool == null)  // line 213
>             _servicePool = new ArrayList();
>         _servicePool.add(pooled);
>     }
> and
> Thread [http-8080-Processor22] (Suspended)
> 	RegistryInfrastructureImpl.checkShutdown() line: 345
> 	RegistryInfrastructureImpl.getServicePoint(String, Module) line: 153
> 	RegistryInfrastructureImpl.getService(String, Class, Module) line: 168
> 	ModuleImpl.getService(String, Class) line: 97
> 	ServiceTranslator.translate(Module, Class, String, Location) line: 40
> 	BuilderPropertyFacet.getFacetValue(ServiceImplementationFactoryParameters, Class) line: 41
> 	BuilderFactoryLogic.wireProperty(Object, BuilderFacet) line: 357
> 	BuilderFactoryLogic.setProperties(Object) line: 320
> 	BuilderFactoryLogic.createService() line: 77
> 	BuilderFactory.createCoreServiceImplementation(ServiceImplementationFactoryParameters) line: 42
> 	InvokeFactoryServiceConstructor.constructCoreServiceImplementation() line: 84
> 	PooledServiceModel(AbstractServiceModelImpl).constructCoreServiceImplementation() line: 106
> 	PooledServiceModel.constructPooledService() line: 223
> 	PooledServiceModel.obtainPooledService() line: 196
> 	PooledServiceModel.getServiceImplementationForCurrentThread() line: 180
> 	$ApplicationStateManager_102f04616a3._service() line: not available
> 	$ApplicationStateManager_102f04616a3.flush() line: not available
> 	$ApplicationStateManager_102f04616a4.flush() line: not available
> 	BaseEngine(AbstractEngine).service(WebRequest, WebResponse) line: 312
> 	InvokeEngineTerminator.service(WebRequest, WebResponse) line: 60
> 	RenderRequestServicerToWebRequestServicerBridge.service(RenderRequest, RenderResponse) line: 49
> 	ApplicationPortlet.render(RenderRequest, RenderResponse) line: 157
> 	PortletApplicationHandler.render_aroundBody8(PortletApplicationHandler, Portlet, RenderRequest, RenderResponse) line: 226
> 	PortletApplicationHandler.render_aroundBody9$advice(PortletApplicationHandler, Portlet, RenderRequest, RenderResponse, PortletFilterAspect, Portlet, RenderRequest, RenderResponse, AroundClosure) line: 458
> 	PortletApplicationHandler.render_aroundBody10(PortletApplicationHandler, Portlet, RenderRequest, RenderResponse) line: not available
> 	PortletApplicationHandler.render_aroundBody11$advice(PortletApplicationHandler, Portlet, RenderRequest, RenderResponse, PortletContentAspect, Portlet, RenderRequest, RenderResponse, AroundClosure) line: 340
> 	PortletApplicationHandler.render_aroundBody12(PortletApplicationHandler, Portlet, RenderRequest, RenderResponse) line: not available
> 	PortletApplicationHandler.render_aroundBody13$advice(PortletApplicationHandler, Portlet, RenderRequest, RenderResponse, PortletCacheAspect, Portlet, RenderRequest, RenderResponse, AroundClosure) line: 172
> 	PortletApplicationHandler.render_aroundBody14(PortletApplicationHandler, Portlet, RenderRequest, RenderResponse) line: not available
> 	PortletApplicationHandler.render_aroundBody15$advice(PortletApplicationHandler, Portlet, RenderRequest, RenderResponse, PortletSecurityAspect, Portlet, RenderRequest, RenderResponse, AroundClosure) line: 738
> 	PortletApplicationHandler.render_aroundBody16(PortletApplicationHandler, Portlet, RenderRequest, RenderResponse) line: not available
> 	PortletApplicationHandler.render_aroundBody17$advice(PortletApplicationHandler, Portlet, RenderRequest, RenderResponse, PortletMonitorAspect, Portlet, RenderRequest, RenderResponse, AroundClosure) line: 628
> 	PortletApplicationHandler.process(ServletContext, HttpServletRequest, HttpServletResponse, Input, Output, PortletWindowInternal, boolean) line: 226
> 	ServletWrapper.service(HttpServletRequest, HttpServletResponse) line: 70
> 	ServletWrapper(HttpServlet).service(ServletRequest, ServletResponse) line: 802
> 	ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 237
> 	ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 157
> 	ApplicationDispatcher.invoke(ServletRequest, ServletResponse) line: 704
> 	ApplicationDispatcher.doInclude(ServletRequest, ServletResponse) line: 590
> 	ApplicationDispatcher.include(ServletRequest, ServletResponse) line: 510
> 	PortletContainerDispatcher.dispatch(HttpServletRequest, HttpServletResponse, String) line: 370
> 	PortletContainerDispatcher.process(HttpServletRequest, HttpServletResponse, Input, boolean) line: 310
> 	PortletContainerDispatcher.render(HttpServletRequest, HttpServletResponse, RenderInput) line: 271
> 	PortletContainerServiceImpl.render(HttpServletRequest, HttpServletResponse, RenderInput) line: 144
> 	PortletRenderer.encodeChildren(FacesContext, UIComponent) line: 100
> 	UIPortlet(UIComponentBase).encodeChildren(FacesContext) line: 693
> 	ContainerRowRenderer.renderViewMode(FacesContext, UIContainer) line: 40
> 	ContainerRowRenderer(ContainerRenderer).encodeChildren(FacesContext, UIComponent) line: 34
> 	UIContainer(UIComponentBase).encodeChildren(FacesContext) line: 693
> 	PortalRenderer(HtmlBasicRenderer).renderChildren(FacesContext, UIComponent) line: 63
> 	PortalRenderer.encodeChildren(FacesContext, UIComponent) line: 58
> 	UIPortal(UIComponentBase).encodeChildren(FacesContext) line: 693
> 	ExoPortalViewHandler.renderView(FacesContext, UIViewRoot) line: 63
> 	RenderResponsePhase.execute(FacesContext) line: 87
> 	LifecycleImpl.phase(PhaseId, Phase, FacesContext) line: 200
> 	LifecycleImpl.render(FacesContext) line: 117
> 	FacesServlet.service(ServletRequest, ServletResponse) line: 198
> 	ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 237
> 	ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 157
> 	PrivateRequestFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line: 82
> 	ApplicationFilterChain.internalDoFilter(ServletRequest, ServletResponse) line: 186
> 	ApplicationFilterChain.doFilter(ServletRequest, ServletResponse) line: 157
> 	StandardWrapperValve.invoke(Request, Response, ValveContext) line: 214
> 	StandardValveContext.invokeNext(Request, Response) line: 104
> 	StandardPipeline.invoke(Request, Response) line: 520
> 	StandardContextValve.invokeInternal(Wrapper, Request, Response) line: 198
> 	StandardContextValve.invoke(Request, Response, ValveContext) line: 152
> 	StandardValveContext.invokeNext(Request, Response) line: 104
> 	FormAuthenticator(AuthenticatorBase).invoke(Request, Response, ValveContext) line: 540
> 	StandardValveContext.invokeNext(Request, Response) line: 102
> 	StandardPipeline.invoke(Request, Response) line: 520
> 	StandardHostValve.invoke(Request, Response, ValveContext) line: 137
> 	StandardValveContext.invokeNext(Request, Response) line: 104
> 	ErrorReportValve.invoke(Request, Response, ValveContext) line: 117
> 	StandardValveContext.invokeNext(Request, Response) line: 102
> 	StandardPipeline.invoke(Request, Response) line: 520
> 	StandardEngineValve.invoke(Request, Response, ValveContext) line: 109
> 	StandardValveContext.invokeNext(Request, Response) line: 104
> 	StandardPipeline.invoke(Request, Response) line: 520
> 	StandardEngine(ContainerBase).invoke(Request, Response) line: 929
> 	CoyoteAdapter.service(Request, Response) line: 160
> 	Http11Processor.process(InputStream, OutputStream) line: 799
> 	Http11Protocol$Http11ConnectionHandler.processConnection(TcpConnection, Object[]) line: 705
> 	TcpWorkerThread.runIt(Object[]) line: 577
> 	ThreadPool$ControlRunnable.run() line: 683
> 	ThreadWithAttributes(Thread).run() line: 536
>  private synchronized void checkShutdown()
>     {
>         if (_shutdown)  // Line 345
>             throw new ApplicationRuntimeException(HiveMindMessages.registryShutdown());
>     }
> Are the only threads in the application anywhere near HiveMind. 
> Unfortunately, I was running with JDK 1.4, so I can't use Eclipse's debugger to get at threads and monitors.
> This is something that needs more attention ... and I can't see how they would be conflicting.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: hivemind-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: hivemind-dev-help@jakarta.apache.org