问题标签 [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 投票
14 回答
87897 浏览

java - 如何在 Java 中处理 StackOverflowError?

我如何StackOverflowError在 Java 中处理?

0 投票
2 回答
745 浏览

stack-overflow - 堆栈溢出的可能原因是什么?

堆栈溢出的可能原因是什么?

0 投票
4 回答
1175 浏览

java - 在 Java 中减少运行时的最大堆栈大小

我正在尝试编写一个 junit 测试来防止一段代码陷入无休止的迭代中,这最终会导致 StackOverflow。

所以我正在寻找一种在运行时减少堆栈大小的方法,这样 Junittest 会更快地失败。

无法将最大堆栈设置为 jvm 参数,因为测试是更大的测试套件的一部分。

0 投票
5 回答
282 浏览

c# - 换色器功能上的堆栈溢出错误

我有两种颜色“红色”和“鲑鱼”。我需要创建动态面板也面板背景颜色。这些颜色必须介于两种颜色(红色

但我该怎么做。上面的代码给了我stackoverflow错误。

0 投票
5 回答
1674 浏览

exception - Windows:避免在堆栈上推送完整的 x86 上下文

我已经实现了PARLANSE,这是一种 MS Windows 下的语言,它使用仙人掌堆栈来实现并行程序。堆栈块是在每个函数的基础上分配的,并且大小正好适合处理局部变量、表达式临时推送/弹出和库调用(包括库例程工作的堆栈空间)。这种堆栈帧实际上可以小到 32 字节,而且通常如此。

这一切都很好,除非代码做了一些愚蠢的事情并导致硬件陷阱......此时Windows似乎坚持将整个x86机器上下文“推入堆栈”。如果包含 FP/MMX/等,这大​​约是 500+ 字节。注册,它确实如此。自然地,对 32 字节堆栈的 500 字节推送会破坏它不应该的东西。(硬件在陷阱上推了几句话,但不是整个上下文)。

[编辑 2012 年 11 月 27 日:有关Windows 实际推送的可笑堆栈数量的测量详细信息,请参阅此内容]

我可以让 Windows 将异常上下文块存储在其他地方(例如,存储到特定于线程的位置)吗?然后,软件可以处理线程上的异常并处理它,而不会溢出我的小堆栈帧。

我不认为这是可能的,但我想我会问更多的观众。是否有可能导致这种情况发生的操作系统标准调用/接口?

如果我可以让 MS 让我的进程有选择地定义一个上下文存储位置“contextp”,那么在操作系统中做这件事将是微不足道的,默认情况下,该位置已初始化为启用当前的遗留行为。然后替换中断/陷阱向量代码:

... 和 ...

具有保存 somereg 等所需的明显更改。

[我现在要做的是:检查每个函数的生成代码。如果它有机会生成陷阱(例如,除以零),或者我们正在调试(可能是错误的指针 deref 等),请为 FP 上下文的堆栈帧添加足够的空间。堆栈帧现在最终大小为 ~~ 500-1000 字节,程序不能递归到那么远,这对于我们正在编写的应用程序来说有时是一个真正的问题。所以我们有一个可行的解决方案,但它使调试变得复杂]

编辑 8 月 25 日:我设法将这个故事传达给了一位微软内部工程师,他显然有权找出 MS 中谁可能真正关心。解决的希望渺茫。

编辑 9 月 14 日:MS Kernal Group Architect 听说了这个故事并且很同情。他说 MS 将考虑一种解决方案(如提议的解决方案),但不太可能包含在服务包中。可能需要等待下一个版本的 Windows。(叹息……我可能会变老……)

编辑:2010 年 9 月 13 日(1 年后)。微软没有采取任何行动。我最近的噩梦:在 Windows X64 上运行 32 位进程的陷阱是否会在中断处理程序假装推送 32 位上下文之前将整个 X64 上下文推送到堆栈上?那会更大(整数寄存器的两倍宽,SSE 寄存器的两倍(?))?

编辑:2012 年 2 月 25 日:(1.5 年过去了……)微软方面没有任何反应。我想他们只是不关心我的并行性。我认为这是对社区的伤害;MS 在正常情况下使用的“大堆栈模型”限制了通过吃大量 VM 可以在任何时刻活着的并行计算量。PARLANSE 模型将让一个应用程序拥有一百万个处于运行/等待状态的实时“颗粒”;这确实发生在我们的一些应用程序中,其中“并行”处理了 1 亿个节点图。PARLANSE 方案可以使用大约 1Gb 的 RAM 来做到这一点,这非常易于管理。如果您尝试使用 MS 1Mb“大堆栈”,您将需要 10^12 字节的 VM 仅用于堆栈空间,而我

编辑:2014 年 4 月 29 日:(4 年过去了)。 我猜MS只是不读SO。 我在 PARLANSE 上做了足够多的工程,所以我们只在调试期间或进行 FP 操作时支付大堆栈帧的代价,所以我们设法找到了非常实用的方法来解决这个问题。MS继续令人失望;不同版本的 Windows 推送到堆栈上的东西的数量似乎有很大差异,而且超出了对硬件上下文的需求。有一些迹象表明,这种可变性的某些原因是由于非 MS 产品(例如防病毒)在异常处理链中卡住了它们的鼻子。为什么他们不能从我的地址空间之外做到这一点?无论如何,我们通过简单地为 FP/调试陷阱添加一个大的溢出因子来处理所有这些,并等待现场中不可避免的 MS 系统超过该数量。

0 投票
1 回答
2544 浏览

encryption - 用于 AutoLISP 代码保护的 Protect.exe

我正在为 IntelliCAD 联盟的成员开发一个基于 LISP 的架构包。根据我在网站上找到的建议,我使用 Kelvinator 对一些代码进行了变形和伪装。现在我正在尝试使用 Protect.exe 来加密代码。在我尝试在输出文件名中使用文件夹名称之前,该 exe 似乎可以正常工作:

首先,我可以这样做吗?Protect.exe 会像这样工作,还是输入和输出文件必须在同一个文件夹中?

另外,有一次我试过这个,我得到一个“堆栈溢出”错误。因此,我在这里。

0 投票
3 回答
1223 浏览

string - 在 VB 6.0 中用 '' 替换时的堆栈溢出

我正在研究一些遗留的 VB 6.0 代码(Access XP 应用程序)来解决 Access 应用程序的 SQL 语句问题。对于客户名称中包含撇号的情况(例如“医生手术”),我需要使用 2 个单引号替换单引号:

这将转义单引号,所以我得到了有效的 SQL:

不幸的是,替换函数会导致无限循环和堆栈溢出,大概是因为它替换函数递归地将每个添加的引号转换为另外 2 个引号。例如,一个引号被替换为两个,然后第二个引号也被替换为两个,依此类推......

- - - - - - - - 编辑 - - - - - - - -

我注意到(感谢海报)这个项目中使用的替换功能是自定义编写的:

显然,VB 并不总是有它自己的替换功能。这个实现一定是有缺陷的。将遵循人们的建议并将其删除以支持 VB 6 的实现 - 如果这不起作用,我将编写我自己的方法。谢谢各位的意见!

0 投票
5 回答
5965 浏览

actionscript-3 - Flex 弹出窗口:堆栈溢出?

我以某种方式在 Flex 3 中创建了堆栈溢出...我试图从模态对话窗口中获取数据,如下所示:

主要应用:

我的弹出窗口:

如果这是不正确的,那么以允许我使用和检索对象数据的方式处理弹出窗口的正确方法是什么?

0 投票
4 回答
1124 浏览

fortran - 重温:Fortran 程序中的堆栈溢出

在 Compac Fortran 中执行以下代码时出现堆栈溢出。专线:

我正在做的是从参数文件中读取 NX、NY、DX、DY。

有什么建议么?

注意:从 更改(NGMAX=30000)(NGMAX=30)没有帮助。

是的,我已将 NGMAX 的所有实例更改为 30。

下面列出了新版本。


我很抱歉:我整天都在编写代码,最后它工作了。但是,我们不需要声明 NX 和 NY。我想从参数文件中读取这些参数。代码如下:



0 投票
4 回答
1310 浏览

c# - 查询对象时 linq to sql + stackoverflow 异常

好的,当我尝试查询主键时,如果实体中的主键设置为“自动生成值”,我已经确认我只有这个问题——但是没有这个,我该如何插入?对不起,如果这是一个菜鸟 linq2sql,但我刚刚开始使用它。

如何在关闭此选项的情况下使用 Linq to Sql,同时让 db 处理 pk?我不想每次都必须qry来获得我应该分配的pk...

我希望有人可以帮助我,我完全无法在我的一个项目中使用 linq to sql,不太确定该怎么做......这是一个例子,这一行引发了 StackOverflow 异常。

-- 第二行抛出 StackOverflow 异常。

这是另一个使用相同数据上下文的示例

有什么想法我可以尝试吗?在同一解决方案中的另一个项目中使用 linq to sql 似乎很好。

- 更新 - 我忘了提到这个特定的实体“MyDataTable”的 pk 设置为“自动生成的值”——我将它设置为这个,因为我有 sql 执行自动增量,这是标识列。