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:[email protected]]
Sent: donderdag 19 februari 2009 16:22
To: Tomcat Users List
Subject: RE: Fatal error: Cleaner terminated abnormally
> From: Taylan Develioglu [mailto:[email protected]]
> 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: [email protected]
For additional commands, e-mail: [email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]