Ошибка Stackoverflow Java - PullRequest
       10

Ошибка Stackoverflow Java

2 голосов
/ 28 ноября 2008

Привет, иногда я призываю эту ошибку после перезапуска домена сервера приложений Sun 8.2. Кто-нибудь знает, в чем причина?

javax.servlet.ServletException в org.apache.jasper.servlet.JspServlet.service (JspServlet.java:255) в javax.servlet.http.HttpServlet.service (HttpServlet.java:860) в sun.reflect.GeneratedMethodAccessor156.invoke (Неизвестно Источник) в sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) в java.lang.reflect.Method.invoke (Method.java:585) в org.apache.catalina.security.SecurityUtil $ 1.run (SecurityUtil.java:249) в java.security.AccessController.doPrivileged (Native Метод) в javax.security.auth.Subject.doAsPrivileged (Subject.java:517) в org.apache.catalina.security.SecurityUtil.execute (SecurityUtil.java:282) в org.apache.catalina.security.SecurityUtil.doAsPrivilege (SecurityUtil.java:165) в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:257) в org.apache.catalina.core.ApplicationFilterChain.access $ 000 (ApplicationFilterChain.java:55) в org.apache.catalina.core.ApplicationFilterChain $ 1.run (ApplicationFilterChain.java:161) в java.security.AccessController.doPrivileged (Native Метод) в org.apache.catalina.core.ApplicationFilterChain.doFilter (ApplicationFilterChain.java:157) в org.apache.catalina.core.ApplicationDispatcher.invoke (ApplicationDispatcher.java:723) в org.apache.catalina.core.ApplicationDispatcher.processRequest (ApplicationDispatcher.java:484) в org.apache.catalina.core.ApplicationDispatcher.doForward (ApplicationDispatcher.java:417) в org.apache.catalina.core.ApplicationDispatcher.access $ 000 (ApplicationDispatcher.java:80) в org.apache.catalina.core.ApplicationDispatcher $ PrivilegedForward.run (ApplicationDispatcher.java:95) в java.security.AccessController.doPrivileged (Native Метод) в org.apache.catalina.core.ApplicationDispatcher.forward (ApplicationDispatcher.java:313) в org.apache.catalina.core.StandardHostValve.custom (StandardHostValve.java:448) в org.apache.catalina.core.StandardHostValve.status (StandardHostValve.java:339) в org.apache.catalina.core.StandardHostValve.throwable (StandardHostValve.java:282) в org.apache.catalina.core.StandardHostValve.postInvoke (StandardHostValve.java:184) в org.apache.catalina.core.StandardPipeline.invoke (StandardPipeline.java:552) в org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.java:132) в org.apache.catalina.core.StandardPipeline.invoke (StandardPipeline.java:551) в org.apache.catalina.core.ContainerBase.invoke (ContainerBase.java:933) в org.apache.coyote.tomcat5.CoyoteAdapter.service (CoyoteAdapter.java:189) в com.sun.enterprise.web.connector.grizzly.ProcessorTask.doProcess (ProcessorTask.java:604) в com.sun.enterprise.web.connector.grizzly.ProcessorTask.process (ProcessorTask.java:475) в com.sun.enterprise.web.connector.grizzly.ReadTask.executeProcessorTask (ReadTask.java:371) в com.sun.enterprise.web.connector.grizzly.ReadTask.doTask (ReadTask.java:264) в com.sun.enterprise.web.connector.grizzly.TaskBase.run (TaskBase.java:281) в com.sun.enterprise.web.connector.grizzly.WorkerThread.run (WorkerThread.java:83) ----- Первопричина ----- java.lang.StackOverflowError at java.security.AccessController.doPrivileged (Native Метод) в com.sun.security.auth.PolicyFile.getPermissions (PolicyFile.java:818) в javax.security.auth.SubjectDomainCombiner $ 3.run (SubjectDomainCombiner.java:357) в java.security.AccessController.doPrivileged (Native Метод) в javax.security.auth.SubjectDomainCombiner.combineJavaxPolicy (SubjectDomainCombiner.java:353) в javax.security.auth.SubjectDomainCombiner.combine (SubjectDomainCombiner.java:191) в java.security.AccessControlContext.goCombiner (AccessControlContext.java:390) вjava.security.AccessControlContext.optimize (AccessControlContext.java:304) в java.security.AccessController.checkPermission (AccessController.java:426) в java.lang.SecurityManager.checkPermission (SecurityManager.java:532) в java.security.Security.getProperty (Security.java:724) в com.sun.security.auth.PolicyFile.initPolicyFile (PolicyFile.java:356) в com.sun.security.auth.PolicyFile.init (PolicyFile.java:269) в com.sun.security.auth.PolicyFile.getPermissions (PolicyFile.java:869) в com.sun.security.auth.PolicyPermissions.init (PolicyFile.java:1416) в com.sun.security.auth.PolicyPermissions.elements (PolicyFile.java:1429) в javax.security.auth.SubjectDomainCombiner.combineJavaxPolicy (SubjectDomainCombiner.java:366) в javax.security.auth.SubjectDomainCombiner.combine (SubjectDomainCombiner.java:191)

… ad inifinitum

Ответы [ 2 ]

4 голосов
/ 28 ноября 2008

Бесконечная рекурсия.

Это видно по твоему длинному, повторяющемуся следу. Тот факт, что вы получаете ошибку переполнение стека , также поддерживает это.

2 голосов
/ 14 декабря 2008

Я думаю, что ваша политика безопасности запускает бесконечно рекурсивную операцию. Хотя здесь, похоже, нет никакого кода приложения, трудно сказать наверняка. Всегда ли повторяющаяся секция ограничена между вызовами SubjectDomainCombiner?

Одна вещь, которую вы можете сделать, вы подтверждаете, что это действительно рекурсивная проблема бесконечно , - это увеличение размера стека. Вы должны увидеть расширение цикла зацикливания, чтобы заполнить оставшуюся часть пространства, когда он действительно падает. В противном случае у вас просто не хватает стека ... это случается, особенно если у вас уже есть 30 или 40 кадров в стеке от самой среды сервера приложений.

Размер стека по умолчанию - 256 КБ.

Вы можете увеличить его, применив аргумент JVM, например -Xss2M, чтобы получить 2 МБ стека.

Делайте это только для подтверждения проблемы, а не как постоянное решение.

...