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