Thanks very much

> Subject: Re: Why Tomcat crashes
> From: dmik...@gopivotal.com
> Date: Fri, 28 Mar 2014 17:54:05 -0400
> To: users@tomcat.apache.org
> 
> On Mar 27, 2014, at 2:20 PM, wangke <keow...@hotmail.com> wrote:
> 
> > 
> > 
> >> Date: Thu, 27 Mar 2014 12:20:28 -0400
> >> From: ch...@christopherschultz.net
> >> To: users@tomcat.apache.org
> >> Subject: Re: Why Tomcat crashes
> >> 
> >> -----BEGIN PGP SIGNED MESSAGE-----
> >> Hash: SHA256
> >> 
> >> Wangke,
> >> 
> >> On 3/27/14, 2:18 AM, wangke wrote:
> >>> Hi All: Recently I've encountered a very strange problem, I managed
> >>> to crash tomcat entirely with my application for a few times.
> >>> Personally,  I am quite suspicious about the the settings of a
> >>> shared library libswipl. What I did according to 
> >>> https://code.google.com/p/javanaproche/wiki/HowToJPL is I have
> >>> Java.library.path point to libswipl for a jar file called JPL (a
> >>> bidirectional interface between Java and Prolog since I need to run
> >>> some simple Prolog rules) and then when I start calling JPL
> >>> provided interface in my application code, the following exceptions
> >>> are thrown:
> 
> Looking at the crash dump file, here’s the stack trace leading up to the 
> crash.
> 
> Stack: [0x00007fd8276f7000,0x00007fd8277f8000],  sp=0x00007fd8277f3548,  free 
> space=1009k
> Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native 
> code)
> C  [libpthread.so.0+0xcf60]  pthread_kill+0x0
> 
> Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
> J  jpl.fli.Prolog.next_solution(Ljpl/fli/qid_t;)Z
> J  jpl.Query.hasMoreSolutions()Z
> j  jpl.Query.oneSolution()Ljava/util/Hashtable;+18
> j  jpl.Query.hasSolution()Z+1
> j  jpl.Query.hasSolution(Ljava/lang/String;)Z+8
> J  iGeotutor_engine.WorkFlow.consultProlog(Ljava/lang/String;Ljava/util/Map;)V
> …
> 
> Which points towards the JPL library that you’re using.  Perhaps you could 
> check with the maintainers of that project and see if they have seen similar 
> errors or could assist in debugging the issue further.
> 
> Dan
> 
> >> 
> >> That sounds like a lot of fun!
> >> 
> >>> Can anybody help me to figure out what happened exactly, BTW,
> >>> Tomcat is not crashing all the time but fairly frequent though. 
> >>> Thanks very much.
> >>> 
> >>> WARNING: Error while removing context [/XXXXXX] 
> >>> java.lang.NoClassDefFoundError:
> >>> org/apache/struts2/util/ObjectFactoryDestroyable at
> >>> org.apache.struts2.dispatcher.Dispatcher.cleanup(Dispatcher.java:265)
> >>> 
> >>> 
> >> at
> >> org.apache.struts2.dispatcher.ng.PrepareOperations.cleanupDispatcher(PrepareOperations.java:188)
> >>> at
> >>> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.destroy(StrutsPrepareAndExecuteFilter.java:100)
> >>> 
> >>> 
> >> at
> >> org.apache.catalina.core.ApplicationFilterConfig.release(ApplicationFilterConfig.java:358)
> >>> at
> >>> org.apache.catalina.core.StandardContext.filterStop(StandardContext.java:4107)
> >>> 
> >>> 
> >> at org.apache.catalina.core.StandardContext.stop(StandardContext.java:4876)
> >>> at
> >>> org.apache.catalina.core.ContainerBase.removeChild(ContainerBase.java:936)
> >>> 
> >>> 
> >> at
> >> org.apache.catalina.startup.HostConfig.checkResources(HostConfig.java:1212)
> >>> at
> >>> org.apache.catalina.startup.HostConfig.check(HostConfig.java:1382) 
> >>> at
> >>> org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:306)
> >>> 
> >>> 
> >> at
> >> org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
> >>> at
> >>> org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1389)
> >>> 
> >>> 
> >> at
> >> org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1653)
> >>> at
> >>> org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1662)
> >>> 
> >>> 
> >> at
> >> org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1642)
> >>> at java.lang.Thread.run(Thread.java:662) Caused by:
> >>> java.lang.ClassNotFoundException:
> >>> org.apache.struts2.util.ObjectFactoryDestroyable at
> >>> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
> >>> 
> >>> 
> >> at
> >> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
> >>> ... 16 more Mar 26, 2014 6:18:51 PM
> >>> org.apache.catalina.core.ContainerBase stop INFO: Container
> >>> org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/XXXXXX].[jsp]
> >>> has not been started Mar 26, 2014 6:18:51 PM
> >>> org.apache.catalina.core.ContainerBase stop INFO: Container
> >>> org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/XXXXXX].[default]
> >>> has not been started Mar 26, 2014 6:18:51 PM
> >>> org.apache.catalina.startup.HostConfig checkResources WARNING:
> >>> Error during context [/XXXXXX] destroy 
> >>> java.lang.NoClassDefFoundError:
> >>> org/apache/struts2/util/ObjectFactoryDestroyable at
> >>> org.apache.struts2.dispatcher.Dispatcher.cleanup(Dispatcher.java:265)
> >>> 
> >>> 
> >> at
> >> org.apache.struts2.dispatcher.ng.PrepareOperations.cleanupDispatcher(PrepareOperations.java:188)
> >>> at
> >>> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.destroy(StrutsPrepareAndExecuteFilter.java:100)
> >>> 
> >>> 
> >> at
> >> org.apache.catalina.core.ApplicationFilterConfig.release(ApplicationFilterConfig.java:358)
> >>> at
> >>> org.apache.catalina.core.StandardContext.filterStop(StandardContext.java:4107)
> >>> 
> >>> 
> >> at org.apache.catalina.core.StandardContext.stop(StandardContext.java:4876)
> >>> at
> >>> org.apache.catalina.core.ContainerBase.destroy(ContainerBase.java:1176)
> >>> 
> >>> 
> >> at
> >> org.apache.catalina.core.StandardContext.destroy(StandardContext.java:4976)
> >>> at
> >>> org.apache.catalina.startup.HostConfig.checkResources(HostConfig.java:1219)
> >>> 
> >>> 
> >> at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1382)
> >>> at
> >>> org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:306)
> >>> 
> >>> 
> >> at
> >> org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
> >>> at
> >>> org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1389)
> >>> 
> >>> 
> >> at
> >> org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1653)
> >>> at
> >>> org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1662)
> >>> 
> >>> 
> >> at
> >> org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1642)
> >>> at java.lang.Thread.run(Thread.java:662) Mar 26, 2014 6:19:05 PM
> >>> org.apache.coyote.http11.Http11Protocol pause INFO: Pausing Coyote
> >>> HTTP/1.1 on http-8080 Mar 26, 2014 6:19:06 PM
> >>> org.apache.catalina.core.StandardService stop INFO: Stopping
> >>> service Catalina Mar 26, 2014 6:19:06 PM
> >>> org.apache.coyote.http11.Http11Protocol destroy INFO: Stopping
> >>> Coyote HTTP/1.1 on http-8080
> >> 
> >> It looks like Tomcat is stopping -- really shutting-down your web
> >> application, but something is trying to load classes after the
> >> WebappClassLoadet for your webapp has been marked as stopped.
> >> 
> >> This can happen under something like the following:
> >> 
> >> 1. Application is running fine
> >> 2. Application launches a thread
> >> 3. Application is stopped
> >> [time passes, maybe only a few ms]
> >> 4. The thread from #2 attempts to perform an operation which requires
> >> a class to be loaded (e.g. ObjectFactoryDestroyable from above)
> >> 5. You get an error from the WebappClassLoader because the application
> >> stopped in step #3
> >> 
> >> If you re-deploy your web application, this kind of thing can easily
> >> happen to the "old" application while the new copy is running.
> >> 
> >> Given the stack trace above, it seems like Tomcat is trying to
> >> intentionally stop your web application (your Filter is being
> >> shut-down) and so the WebappClassLoader should still be valid. Is it
> >> possible that the Struts component you are using plays games with the
> >> ClassLoader and so it's using the wrong one? For example, it may cache
> >> the first ClassLoader that was used for some static operation, and
> >> then retain it longer than appropriate. You would then have an error
> >> the *second* time you tried to re-deploy.
> > Thanks very much for the detailed analysis, I mean I am no Struts expert at 
> > all, I will not get into those kind of fancy techniques to play with the 
> > classLoader by any means. From your suggestions, I think the best way to do 
> > is to test my app on a stand-alone java application rather than a Struts 
> > and see what happened, if the application still crashed that means it has 
> > nothing to do with struts or tomcat at all, but if it did not crash, then I 
> > may have to come back to bother you again. :)
> > Thanks anyway
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> >> 
> >> - -chris
> >> -----BEGIN PGP SIGNATURE-----
> >> Version: GnuPG v1
> >> Comment: GPGTools - http://gpgtools.org
> >> Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/
> >> 
> >> iQIcBAEBCAAGBQJTNE/MAAoJEBzwKT+lPKRYj2wP/RKtRO5m/IRNjRRSicKeSBDD
> >> AFhYbh5I8ESipHgFSv60sUgEUMIWrYnAW9xUdVKlGei18U27+8gjEalROXIwMDx7
> >> KyICJWU6ykJQCVOmxxEiWOq61RGN811bgs4lL2sCYDpm5zkUtycauhenuWgG6NFC
> >> +YbFc3wQdrHErLknmM4XppdZNzQUCH9Sgrb2AOC/SKaxqTyyCRTXUIDkhfzbY1Ne
> >> f4FqkSXmxPjWOxJ0VeMrC18GOJx2sQfCJO87OUNWs4f+sx/Wgl4abtcsQ0DbrMoJ
> >> o8zUFg+vvsLd9BPJJuCvoMSYaggJUW9IgbdtOgqu1UUQ7iTdaZsLsklVc0nvYL7R
> >> wdVTauWLM+YFHEVcwL6d2XD9ecdDsUt7YMj+C6yU3n331FYK9GTtl+LRtYA69h70
> >> 2Z/w+yE/9ZEg0FVYVTaFRIRjsqDd1yOBQwnGDRWihOC5SUfGhrnz495BM+Y6v7cQ
> >> OtK4DdpblrktCJeLX6EUlmZw2MNqDGN+KRDWj79A4BLqexDhRjzIDoRTj3aP2qF4
> >> cl3X8gKh4dbtLER6Gvq8lecvIXtxJ8QifOGsHoSxArU1Qi+y/n4+Mjzsh0yRn5Nw
> >> GEyZf8rzeHUvoKjFsMeZlVokzWg5MBa6mgPk9e68xeRn8TkikcU8hJ0s9MeFZ0Mq
> >> //Vwg5wjlpNJhSYNcLEl
> >> =JoZT
> >> -----END PGP SIGNATURE-----
> >> 
> >> ---------------------------------------------------------------------
> >> 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