问题标签 [stack-overflow]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
9 回答
112441 浏览

memory - “堆栈溢出”是如何发生的以及如何防止它?

堆栈溢出是如何发生的,确保它不会发生的最佳方法是什么,或者防止发生的方法是什么,特别是在 Web 服务器上,但其他示例也会很有趣?

0 投票
6 回答
5932 浏览

c - What is causing a stack overflow?

You may think that this is a coincidence that the topic of my question is similar to the name of the forum but I actually got here by googling the term "stack overflow".

I use the OPNET network simulator in which I program using C. I think I am having a problem with big array sizes. It seems that I am hitting some sort of memory allocation limitation. It may have to do with OPNET, Windows, my laptop memory or most likely C language. The problem is caused when I try to use nested arrays with a total number of elements coming to several thousand integers. I think I am exceeding an overall memory allocation limit and I am wondering if there is a way to increase this cap. Here's the exact problem description:

I basically have a routing table. Let's call it routing_tbl[n], meaning I am supporting 30 nodes (routers). Now, for each node in this table, I keep info. about many (hundreds) available paths, in an array called paths[p]. Again, for each path in this array, I keep the list of nodes that belong to it in an array called hops[h]. So, I am using at least nph integers worth of memory but this table contains other information as well. In the same function, I am also using another nested array that consumes almost 40,000 integers as well. As soon as I run my simulation, it quits complaining about stack overflow. It works when I reduce the total size of the routing table. What do you think causes the problem and how can it be solved? Much appreciated Ali

0 投票
10 回答
155279 浏览

c# - 如何防止和/或处理 StackOverflowException?

我想阻止或处理StackOverflowException我从正在编写的XslCompiledTransform.Transform方法调用中得到的。Xsl Editor问题似乎是用户可以编写一个Xsl script无限递归的,它只是在调用该Transform方法时崩溃了。(也就是说,问题不仅仅是典型的程序错误,这通常是导致此类异常的原因。)

有没有办法检测和/或限制允许的递归次数?或者有什么其他想法可以防止这段代码对我产生影响?

0 投票
15 回答
748085 浏览

java - 什么是 StackOverflowError?

什么是 a StackOverflowError,是什么原因造成的,我应该如何处理它们?

0 投票
3 回答
6074 浏览

asp.net-mvc - 由 linq 查询引起的 StackOverflowException

编辑#2:问题解决了一半。往下看

作为一个后续问题,有没有人知道一种非侵入性的方法来解决我在下面尝试做的事情(即,在不触发无限循环的情况下将对象相互链接)?


我尝试创建一个 asp.net-mvc web 应用程序,并得到一个 StackOverFlowException。控制器触发以下命令:

GameService 像这样处理它(WithCountryId 是一个扩展):

GameRepository 像这样处理它:

GetGames() 方法导致 StackOverflowException:

我的业务对象与 linq2sql 类不同,这就是我用 select new 填充它们的原因。

mscorlib.dll 中出现“System.StackOverflowException”类型的未处理异常


编辑#1:我找到了罪魁祸首,它是以下方法,它触发了 GetCountries() 方法,该方法反过来又触发了 GetSubRegions() ,令人作呕:

可能必须在这里考虑其他事情:) 当您因为咖啡太多而以 OO 思维方式思考时会发生这种情况

0 投票
5 回答
1616 浏览

delphi - EStackOverflow 被弃用了多长时间,它的替代品是什么?

我注意到 SysUtils.pas 中定义的 EStackOverflow 在 Delphi 2009 中被标记为已弃用。我检查并在 2007 年也被标记为已弃用。我在这里有一个 Delphi 7 安装磁盘,但我想我会问是否有人知道什么时候它已被弃用。

此外,有谁知道为什么,以及什么取代它?我编写了一个通过递归导致堆栈溢出的测试应用程序,我仍然得到一个 EStackOverflow 异常,但是如果我专门为它添加一个处理程序,那么我得到

[DCC 警告] Unit57.pas(85): W1000 符号 'EStackOverflow' 已弃用

我知道 EStackOverflow 是 EExternal 的后代,我可以捕获 EExternal 并检查 STATUS_STACK_OVERFLOW 的 ExceptionCode,但这似乎没有必要,因为它仍然会引发 EStackOverflow 异常。

这只是为了阻止我在自己的代码中抛出 EStackOverflow 吗?

(是的,我意识到在一个名为StackOverflow的网站上询问有关EStackOverflow的问题具有讽刺意味,是的,我非常认真。)

0 投票
3 回答
6356 浏览

c - C中的堆栈溢出利用

问题实际上是关于 C 中的堆栈溢出。我有一个我一生都无法完成的任务,我查看了 gdb 中的所有内容,但我无法理解。

问题如下:

好的,所以我设法正确地得到了第一个问题,即任意调用主路径中未显式调用的两个函数之一。顺便说一句,这必须在运行程序时完成,无需任何修改。我通过运行程序来做到这一点,设置N7,这让我到了victim_func帧的函数指针,我a[7]用混淆或的内存地址写入shell_call,它可以工作。(我有一台 64 位机器,这就是为什么我必须将其设置为 7,因为 EBI 指针是 2 个整数宽,而不是 1)

我的问题如下,我如何控制将哪个参数传递给函数shell_code?IE。我怎么写string重点是通过仅运行程序来执行pschar* cunix 命令。

我想用ps的十六进制表示来编写 EBI 指针并将 arg 列表设置shell_call为此,但这不起作用。我也尝试输入argsv参数并将 arg 列表设置shell_callarg_listmain,但也没有工作。

我认为第二个版本应该可以工作,但我相信我没有正确设置新堆栈帧的 arg 列表(我是通过写入a[8]来完成的0,因为它是函数指针的第一部分,并且写入a[9]=736cand a[10]=0000,但它可能不对,因为这些是 的参数victim_func。那么如何访问 的参数shell_call

0 投票
4 回答
6400 浏览

excel - 长数据类型溢出

我正在尝试用我的 VBA excel 做一些素因数分解,我正在达到long数据类型的限制 -

运行时错误 6 溢出

有没有办法解决这个问题并仍然留在 VBA 中?我知道显而易见的是使用另一种更合适的编程语言。


到目前为止, Lance 的解决方案有效,我现在可以将大数字放入变量中。但是,当我尝试应用MOD函数时 - 例如 bignumber MOD 2- 它仍然失败并显示错误消息

运行时错误 6 溢出

0 投票
1 回答
371 浏览

asp.net - Cassini(又名 VS 开发服务器)的堆栈限制是多少?

我在限制为 256k 的 IIS6/2k3 中遇到了 StackOverflowException(请不要问,这不是我的错),但在 VS 调试器中不会发生异常。

作为一个理解问题,我很想知道,但未能通过谷歌搜索 Cassini 的堆栈限制是什么......如果它确实有一个?

0 投票
2 回答
5985 浏览

java - Java Stackoverflow 错误

嗨,有时我在重新启动 sun 应用程序服务器 8.2 域后遇到此错误,有人知道可能是什么原因吗?

javax.servlet.ServletException at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:255) at javax.servlet.http.HttpServlet.service(HttpServlet.java:860) at sun.reflect.GeneratedMethodAccessor156.invoke( Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil .java:249) 在 java.security.AccessController.doPrivileged(Native Method) 在 javax.security.auth.Subject.doAsPrivileged(Subject.java:517) 在 org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java :282) 在 org.apache.catalina.core.ApplicationFilterChain 的 org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:165)。internalDoFilter(ApplicationFilterChain.java:257) at org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilterChain.java:55) at org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain.java:161) at java .security.AccessController.doPrivileged(Native Method) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:723) at 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。在 org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:313) 在 org.apache.catalina.core.StandardHostValve 的 java.security.AccessController.doPrivileged(Native Method) 运行(ApplicationDispatcher.java:95)。 custom(StandardHostValve.java:448) at org.apache.catalina.core.StandardHostValve.status(StandardHostValve.java:339) at org.apache.catalina.core.StandardHostValve.throwable(StandardHostValve.java:282) at 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 Method) at com.sun.security.auth.PolicyFile .getPermissions(PolicyFile.java:818) 在 javax.security.auth。SubjectDomainCombiner$3.run(SubjectDomainCombiner.java:357) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.SubjectDomainCombiner.combineJavaxPolicy(SubjectDomainCombiner.java:353) at 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 的 com.sun.security.auth.PolicyFile.init(PolicyFile.java:269)。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)

… 无限期