I wanted to let you know it worked. The system.exit does get trapped.

java.lang.Error: Cleaner terminated abnormally
        at sun.misc.Cleaner$1.run(Cleaner.java:130)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.misc.Cleaner.clean(Cleaner.java:127)
        at
java.lang.ref.Reference$ReferenceHandler.run(Reference.java:124)
Caused by: java.lang.Error: java.io.IOException: Broken pipe
        at sun.nio.ch.Util$SelectorWrapper$Closer.run(Util.java:97)
        at sun.misc.Cleaner.clean(Cleaner.java:125)
        ... 1 more
Caused by: java.io.IOException: Broken pipe
        at sun.nio.ch.EPollArrayWrapper.interrupt(Native Method)
        at
sun.nio.ch.EPollArrayWrapper.interrupt(EPollArrayWrapper.java:242)
        at
sun.nio.ch.EPollSelectorImpl.wakeup(EPollSelectorImpl.java:170)
        at
sun.nio.ch.SelectorImpl.implCloseSelector(SelectorImpl.java:92)
        at
java.nio.channels.spi.AbstractSelector.close(AbstractSelector.java:91)
        at sun.nio.ch.Util$SelectorWrapper$Closer.run(Util.java:95)
        ... 2 more
Exception in thread "Reference Handler" java.lang.SecurityException:
Can't call System.exit()
        at
com.emessenger.web.CustomSecurityManager.checkExit(CustomSecurityManager
.java:22)
        at java.lang.Runtime.exit(Runtime.java:88)
        at java.lang.System.exit(System.java:906)
        at sun.misc.Cleaner$1.run(Cleaner.java:132)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.misc.Cleaner.clean(Cleaner.java:127)
        at
java.lang.ref.Reference$ReferenceHandler.run(Reference.java:124)


- What we see is, GC breaks and class unloading starts after the first
full GC:

[Unloading class sun.reflect.GeneratedMethodAccessor100]
[Unloading class sun.reflect.GeneratedConstructorAccessor76]
[Unloading class sun.reflect.GeneratedConstructorAccessor80]
[Unloading class sun.reflect.GeneratedConstructorAccessor77]
[Unloading class sun.reflect.GeneratedMethodAccessor95]
[Unloading class sun.reflect.GeneratedMethodAccessor98]
[Unloading class sun.reflect.GeneratedConstructorAccessor78]
[Unloading class sun.reflect.GeneratedMethodAccessor106]
[Unloading class sun.reflect.GeneratedMethodAccessor91]
[Unloading class sun.reflect.GeneratedMethodAccessor105]
[Unloading class sun.reflect.GeneratedMethodAccessor85]

- And then Full GC madness begins:

[GC 4080947K(4177280K), 0.0603370 secs]
[GC 4090738K(4177280K), 0.0683390 secs]
[Full GC 4177280K->4081390K(4177280K), 16.2954960 secs]
[GC 4081673K(4177280K), 0.0607990 secs]
[GC 4097803K(4177280K), 0.0739870 secs]
[Full GC 4177279K->4081951K(4177280K), 16.2857450 secs]
[GC 4082100K(4177280K), 0.0614000 secs]
[GC 4101581K(4177280K), 0.0814330 secs]
[Full GC 4177279K->4082845K(4177280K), 16.2079870 secs]
[GC 4084452K(4177280K), 0.0628080 secs]
[GC 4106928K(4177280K), 0.0835720 secs]
[Full GC 4177279K->4083187K(4177280K), 16.3403530 secs]
[GC 4084203K(4177280K), 0.0627750 secs]
[GC 4101856K(4177280K), 0.0737540 secs]
[Full GC 4177278K->4083998K(4177280K), 16.2605530 secs]
[GC 4084493K(4177280K), 0.0632620 secs]
[GC 4107486K(4177280K), 0.0804700 secs]
[Full GC 4177278K->4084298K(4177280K), 16.3931240 secs]
[GC 4084500K(4177280K), 0.0633480 secs]
[Full GC 4177279K->4085842K(4177280K), 16.4017970 secs]
[GC 4096666K(4177280K), 0.0702090 secs]
[GC 4127816K(4177280K), 0.1089220 secs]

- But it's still better then an instant shutdown.


-----Original Message-----
From: Caldarale, Charles R [mailto:chuck.caldar...@unisys.com] 
Sent: donderdag 19 februari 2009 16:22
To: Tomcat Users List
Subject: RE: Fatal error: Cleaner terminated abnormally


> From: Taylan Develioglu [mailto:tdevelio...@ebuddy.com]
> Subject: Re: Fatal error: Cleaner terminated abnormally
>
> By trapping the exit call using security manager we hope to prevent
> Tomcat from closing down on a cleaner termination.

This is not likely to work, since the Cleaner is running this code as a
privileged operation; if regular applications could trap those, I think
there would be some serious security holes.

> Not sure what the side  effects would be to keep running
> after a cleaner terminates (any idea).

The thread doing the System.exit() call is the reference handler; the
JVM will not function properly if it's not running.  The exception
should have been logged and ignored, not result in JVM termination, but
I suspect it will be difficult to convince Sun of that at this point.

> I forgot to say thanks for the response guys. Especially
> yours Chris, it was very helpful.

Odd, because Chris didn't participate in this thread...

 - Chuck


THIS COMMUNICATION MAY CONTAIN CONFIDENTIAL AND/OR OTHERWISE PROPRIETARY
MATERIAL and is thus for use only by the intended recipient. If you
received this in error, please contact the sender and delete the e-mail
and its attachments from all computers.

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


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

Reply via email to