Hi Mark,

> -----Original Message-----
> From: Mark Thomas [mailto:ma...@apache.org]
> Sent: Thursday, October 17, 2013 1:10 PM
> To: Tomcat Developers List
> Subject: Re: svn commit: r1533035 -
> /tomcat/tc7.0.x/trunk/webapps/examples/WEB-
> INF/classes/websocket/drawboard/Room.java
> 
> On 17/10/2013 11:53, Mark Thomas wrote:
> > On 17/10/2013 11:50, Konstantin Preißer wrote:
> >> Hi Mark,
> >>
> >>> -----Original Message-----
> >>> From: Mark Thomas [mailto:ma...@apache.org]
> >>> Sent: Thursday, October 17, 2013 12:49 PM
> >>> To: Tomcat Developers List
> >>> Subject: Re: svn commit: r1533035 -
> >>> /tomcat/tc7.0.x/trunk/webapps/examples/WEB-
> >>> INF/classes/websocket/drawboard/Room.java
> >>>
> >>> On 17/10/2013 11:39, Konstantin Kolinko wrote:
> >>>> 2013/10/17  <ma...@apache.org>:
> >>>>> Author: markt
> >>>>> Date: Thu Oct 17 10:32:21 2013
> >>>>> New Revision: 1533035
> >>>>>
> >>>>> URL: http://svn.apache.org/r1533035
> >>>>> Log:
> >>>>> Avoid hangs on shutdown
> >>>>>
> >>>>> Modified:
> >>>>>     tomcat/tc7.0.x/trunk/webapps/examples/WEB-
> >>> INF/classes/websocket/drawboard/Room.java
> >>>>>
> >>>>
> >>>> I expect this to
> >>>> a) fail when running with a security manager
> >>>> b) cause a memory leak when examples app is reloaded, as you will get
> >>>> a new instance of ShutdownDetection class in webapp's classloader
> and
> >>>> new instance of shutdown hook.
> >>>
> >>> I'm open to better suggestions. Another option I considered was just
> >>> removing the call to roomGraphics.dispose(); and letting GC take care of
> >>> things.
> >>>
> >>> Alternatively, we could provide some form of global flag.
> >>>
> >>> I think I prefer the global flag that indicates that a shutdown is in
> >>> process. I can think of several other places where such a flag would
> >>> have been useful and we can expose it through a custom servlet context
> >>> attribute such as
> "org.apache.tomcat.JVM_SHUTDOWN_IN_PROGRESS".
> >>>
> >>> I'll start looking at the global flag option. Meanwhile, any suggestions
> >>> on how to improve the fix or an alternative fix welcome.
> >>
> >> Can you give me some insight of why Grahpics2D.dispose() may cause a
> hang on shutdown? I have never seen .dispose() causing a hang, at least not
> on Windows.
> >> If it hangs, might this be a result of different threads using the Grahpics
> object?
> >
> > Clean 7.0.x build
> > catalina.bat start
> > CTRL-C in the Tomcat Window
> >
> > The result is an exception written to stderr (I assume err rather than
> > out) and Tomcat fails to stop. The exception is triggered by AWT trying
> > to register a shutdown hook after the shutdown process has started.
> 
> Ah. More info. It only occurs with Java 6.
> 
> We could just classify this as a JVM bug and more on. That said, I think
> some changes to the init code could probably avoid this in Java 6 as
> well. I'll take a quick look.

OK, thanks.
However, I can reproduce the hang now with Tomcat 7 on Java 7. Although I do 
not get a exception, I get a short hang and a warning: "The executor associated 
with thread pool [http-bio-8080] has not fully shutdown. Some application 
threads may still be running." After that, Tomcat closed.
I do not get this with Tomcat 8.

My reaction also would have been to just remove the dispose() in the Tomcat 7 
example since it is unlikely that the examples application is reloaded many 
times on a Tomcat run and creates too much Graphics2D objects that the GC does 
not dispose. But of course, I have nothing against a better solution if you 
find one. :)


Regards,
Konstantin Preißer




---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to