ngbatis icon indicating copy to clipboard operation
ngbatis copied to clipboard

有没有碰到过StackOverflowError的问题,数据量很小

Open Szt-1 opened this issue 2 years ago • 15 comments

Szt-1 avatar Oct 24 '22 08:10 Szt-1

#32 有提过 看样子不是偶发的问题,方便提供一下报错日志吗,我看看哪里递归太深了

CorvusYe avatar Oct 24 '22 09:10 CorvusYe

报错日志可能看不出来

Szt-1 avatar Oct 24 '22 11:10 Szt-1

org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.StackOverflowError at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1082) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) at javax.servlet.http.HttpServlet.service(HttpServlet.java:517) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) at javax.servlet.http.HttpServlet.service(HttpServlet.java:584) at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:74) at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129) at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:96) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61) at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131) at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84) at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62) at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:68) at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) at io.undertow.servlet.handlers.RedirectDirHandler.handleRequest(RedirectDirHandler.java:68) at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:117) at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57) at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46) at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64) at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:60) at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:77) at io.undertow.security.handlers.AbstractSecurityContextAssociationHandler.handleRequest(AbstractSecurityContextAssociationHandler.java:43) at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) at io.undertow.servlet.handlers.SendErrorPageHandler.handleRequest(SendErrorPageHandler.java:52) at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:275) at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:79) at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:134) at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:131) at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48) at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43) at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:255) at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:79) at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:100) at io.undertow.server.Connectors.executeRootHandler(Connectors.java:387) at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:852) at org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35) at org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:2019) at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1558) at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1423) at org.xnio.XnioWorker$WorkerThreadFactory$1$1.run(XnioWorker.java:1280) at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.StackOverflowError: null at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:756) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:468) at java.net.URLClassLoader.access$100(URLClassLoader.java:74) at java.net.URLClassLoader$1.run(URLClassLoader.java:369) at java.net.URLClassLoader$1.run(URLClassLoader.java:363) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:362) at java.lang.ClassLoader.loadClass(ClassLoader.java:418) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355) at java.lang.ClassLoader.loadClass(ClassLoader.java:351) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:756) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:468) at java.net.URLClassLoader.access$100(URLClassLoader.java:74) at java.net.URLClassLoader$1.run(URLClassLoader.java:369) at java.net.URLClassLoader$1.run(URLClassLoader.java:363) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:362) at java.lang.ClassLoader.loadClass(ClassLoader.java:418) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355) at java.lang.ClassLoader.loadClass(ClassLoader.java:351) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:756) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:468) at java.net.URLClassLoader.access$100(URLClassLoader.java:74) at java.net.URLClassLoader$1.run(URLClassLoader.java:369) at java.net.URLClassLoader$1.run(URLClassLoader.java:363) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:362) at java.lang.ClassLoader.loadClass(ClassLoader.java:418) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355) at java.lang.ClassLoader.loadClass(ClassLoader.java:351) at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClass(ClassLoader.java:756) at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) at java.net.URLClassLoader.defineClass(URLClassLoader.java:468) at java.net.URLClassLoader.access$100(URLClassLoader.java:74) at java.net.URLClassLoader$1.run(URLClassLoader.java:369) at java.net.URLClassLoader$1.run(URLClassLoader.java:363) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:362) at java.lang.ClassLoader.loadClass(ClassLoader.java:418) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355) at java.lang.ClassLoader.loadClass(ClassLoader.java:351) at org.beetl.core.parser.BeetlParser.prog(BeetlParser.java:153) at org.beetl.core.engine.DefaultTemplateEngine.createProgram(DefaultTemplateEngine.java:59) at org.beetl.core.engine.FastRuntimeEngine.createProgram(FastRuntimeEngine.java:32) at org.beetl.core.GroupTemplate.loadTemplate(GroupTemplate.java:520) at org.beetl.core.GroupTemplate.lambda$getTemplateByLoader$1(GroupTemplate.java:481) at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660) at org.beetl.core.impl.cache.DefaultBeetlCache.get(DefaultBeetlCache.java:61) at org.beetl.core.GroupTemplate.getTemplateByLoader(GroupTemplate.java:481) at org.beetl.core.GroupTemplate.getTemplate(GroupTemplate.java:455) at com.bigitom.common.nebulagraph.binding.BeetlTextRender.resolve(BeetlTextRender.java:35) at com.bigitom.common.nebulagraph.proxy.MapperProxy.invoke(MapperProxy.java:115) at com.bigitom.common.nebulagraph.proxy.MapperProxy.invoke(MapperProxy.java:161) at com.bigitom.common.nebulagraph.proxy.MapperProxy.pageSupport(MapperProxy.java:177) at com.bigitom.common.nebulagraph.proxy.MapperProxy.invoke(MapperProxy.java:80) at com.bigitom.powermodel.graph.dao.SubGraphMapper$Proxy.getSubgraphFromMore(Unknown Source) at com.bigitom.powermodel.service.impl.SubGraphServiceImpl.getSubGraph(SubGraphServiceImpl.java:23) at com.bigitom.powermodel.service.impl.BitRelationshipRuleServiceImpl.selectTopoRelationship(BitRelationshipRuleServiceImpl.java:315) at com.bigitom.powermodel.controller.BitRelationshipRuleController.selectTopoRelationship(BitRelationshipRuleController.java:142) at com.bigitom.powermodel.controller.BitRelationshipRuleController$$FastClassBySpringCGLIB$$b9065a63.invoke() at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:793) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763) at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:123) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763) at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:89) at com.bigitom.common.security.aspect.PreAuthorizeAspect.around(PreAuthorizeAspect.java:63) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:634) at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:624) at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:72) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:175) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763) at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:708) at com.bigitom.powermodel.controller.BitRelationshipRuleController$$EnhancerBySpringCGLIB$$a75727e3.selectTopoRelationship() at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150) at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895) at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1067) ... 57 common frames omitted

*** java.lang.instrument ASSERTION FAILED ***: "!errorOutstanding" with message transform method call failed at JPLISAgent.c line: 844

Szt-1 avatar Oct 24 '22 11:10 Szt-1

很奇怪的错,发生在执行Dao里自定义方法的时候,springboot的测试用例可以通过,但是打包成服务对外暴露接口后,调接口就不行。报的这个错

Szt-1 avatar Oct 24 '22 11:10 Szt-1

你先用 设置 -Xss2m 的方式看看能不能解决

看上去像是 antlr4 在解析 nGQL 的模板语法树上出的问题 自定义的 nGQL 很复杂吗

CorvusYe avatar Oct 24 '22 12:10 CorvusYe

参数设置成 -Xss108k 问题重现了 估计就是因为测试用例运行的 jvm Xss 的值比服务运行时的 Xss 大

如果是这样的话,为了避免服务运行不可预知的问题,建议把测试时的 jvm 参数也设置一下。

这个问题这边再做一下跟进

CorvusYe avatar Oct 24 '22 12:10 CorvusYe

fetch prop on res_object @for(p in idList){ @if(pLP.last){ "${p}" @} @else{ "${p}", @} @} yield id(vertex) as id | get subgraph with prop 150 steps from $-.id yield vertices as nodes,edges as relationships | yield reduce(nodelist=list[],x in collect($-.nodes) | nodelist + x) as nodes,reduce(nodelist=list[],x in collect($-.relationships) | nodelist + x) as relationships

Szt-1 avatar Oct 24 '22 12:10 Szt-1

是这个for循环的问题吗

Szt-1 avatar Oct 24 '22 13:10 Szt-1

看着还好,不复杂,for这个用法我也经常用😂,先提高一下Xss吧,如果能解决问题的话

CorvusYe avatar Oct 24 '22 16:10 CorvusYe

我在循环边的时候,同时去查找 边的左右节点的时候,会导致内存溢出

btbox avatar Oct 25 '22 02:10 btbox

我在循环边的时候,同时去查找 边的左右节点的时候,会导致内存溢出

数据量大概在什么量级,最后是修改JVM参数吗

CorvusYe avatar Oct 26 '22 03:10 CorvusYe

改了Xss的值为2m问题解决了

Szt-1 avatar Oct 26 '22 06:10 Szt-1

我也遇到了这个问题,在for循环的时候使用任意一个dao的方法都会报StackOverflowError。但是如果用debug启动,则不会报错。

我用VisualVM分别监控了run和debug启动的线程状态,发现run只比debug多了一个线程:Monitor Ctrl-Break,查了一下发现这个是idea在run模式特有的线程,出现stackoverflow很可能跟它有关。 所以如果是用idea遇到这个问题,可以试下debug启动,我修改Xss后用run启动也没用(也可能是我修改的方式不对?)

yiyi3681 avatar Mar 02 '23 07:03 yiyi3681

我也遇到了这个问题,在for循环的时候使用任意一个dao的方法都会报StackOverflowError。但是如果用debug启动,则不会报错。

我用VisualVM分别监控了run和debug启动的线程状态,发现run只比debug多了一个线程:Monitor Ctrl-Break,查了一下发现这个是idea在run模式特有的线程,出现stackoverflow很可能跟它有关。 所以如果是用idea遇到这个问题,可以试下debug启动,我修改Xss后用run启动也没用(也可能是我修改的方式不对?)

-Xss2m 加在jvm那一栏也还是报错吗

CorvusYe avatar Mar 02 '23 11:03 CorvusYe

我也遇到了这个问题,在for循环的时候使用任意一个dao的方法都会报StackOverflowError。但是如果用debug启动,则不会报错。 我用VisualVM分别监控了run和debug启动的线程状态,发现run只比debug多了一个线程:Monitor Ctrl-Break,查了一下发现这个是idea在run模式特有的线程,出现stackoverflow很可能跟它有关。 所以如果是用idea遇到这个问题,可以试下debug启动,我修改Xss后用run启动也没用(也可能是我修改的方式不对?)

-Xss2m 加在jvm那一栏也还是报错吗

不报错了,之前看来是没改对地方

yiyi3681 avatar Mar 03 '23 06:03 yiyi3681