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. Mark --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org