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

.net - 如何更改托管可执行文件.net 的默认堆栈大小

我们发现我们的一个自动生成的程序集在 new() 上抛出了 StackOverflowException。此类具有(请耐心等待)400 多个在构造函数中初始化的简单属性(大多数默认情况下(字符串)等)。

我们注意到它在 64 位上很好,但在 32 位上它会爆炸!

我们需要测试我们的用例是否可以合理地创建一个更大的默认堆栈,以便在我们重新设计代码生成器时给我们喘息的空间。

我们会特别是。如果可能的话,对涉及 app.config 的解决方案感兴趣。但我是一个现实主义者,所以一切都会好的。

重新堆栈溢出的原因。我们已将错误范围缩小到有问题的构造函数中。我的第一印象也是无限递归的类型。但是,我们使用 3 行控制台应用程序重现了该错误:

  • 创建一个空的类实例。
  • 调用类的非静态方法(克隆),第一个工作是创建和空实例准备将属性传递到。

当它碰到第二个构造函数时它会爆炸。

现在使用 .net 源代码进行调试,我们看到堆栈溢出在 Guid.NewGuid() 中,它作为第二个参数传递给构造函数。实际的代码行是对本机 CoCreateGuid() 调用的调用。

因此,虽然它可能是 CoCreateGuid() 中的错误,但我们希望从问题中消除我们的代码。我的第一个想法是大量增加堆栈的大小,看看这个错误是否再次发生。然后,因为我认为我们可以控制所有用例,所以将构造函数替换为对象初始化 - 认为这可以减轻堆栈的压力。

NB。我们可以通过从类中删除 int 属性来阻止错误的发生。

0 投票
8 回答
491 浏览

java - StackOverFlow 错误 - 来自实例化我的对象类

我正在尝试在 Java 中创建一个类,该类构建一个类型的对象,该对象Action包含三个整数并将其返回给我在数组中的另一个类history,其中history是类型数组Action。当它被调用时,我立即得到一个无限循环;因此堆栈溢出。

错误 - 我打印了 1 行,它继续...

班级:

0 投票
1 回答
783 浏览

dependency-injection - 使用 StructureMap 时有没有办法检测和调试循环引用?

最近我一直在使用大量的小对象,因为它们更简单,更容易重用。大多数情况下,使用 StructureMap(很棒的工具,顺便说一句)将这些对象相互注入没有任何问题。但偶尔,我搞砸了,我以堆栈溢出异常(tm)为幌子得到了一个很好的循环引用。

因此,除了查看自上次测试运行以来我最近所做的所有更改之外,StructureMap 是否提供任何用于调试循环引用的机制,或者是否有一个简单的工具可以在这种情况下有用?

感谢大家!

0 投票
2 回答
834 浏览

c# - 在 C# 中使用 ApplicationCommands 打开菜单时堆栈溢出

当我将 ApplicationCommands 命令添加到文件菜单中的 MenuItem 时,无论是通过 XAML 还是通过代码,当我打开菜单时,应用程序在堆栈溢出中崩溃,完全没有关于问题的详细信息。当我删除命令时,问题也消失了。我使用哪个 ApplicationCommand 并不重要。

调用堆栈的一部分:

  • WindowsBase.dll!MS.Utility.ArrayItemList.ArrayItemList(int size) + 0x20 bytes
  • WindowsBase.dll!MS.Utility.FrugalStructList.Capacity.set(int value) + 0x6a bytes
  • WindowsBase.dll!MS.Utility.FrugalStructList.FrugalStructList(int size) + 0x9 bytes
  • PresentationCore.dll!System.Windows.EventRoute.EventRoute(System.Windows.RoutedEvent routedEvent) + 0x35 字节
  • PresentationCore.dll!System.Windows.EventRouteFactory.FetchObject(System.Windows.RoutedEvent routedEvent) + 0x31 字节
  • PresentationCore.dll!System.Windows.UIElement.RaiseEventImpl(System.Windows.DependencyObject sender = {System.Windows.Controls.RichTextBox},System.Windows.RoutedEventArgs args = {System.Windows.Input.CanExecuteRoutedEventArgs})+ 0x3f 字节
  • PresentationCore.dll!System.Windows.UIElement.RaiseEvent(System.Windows.RoutedEventArgs args = {System.Windows.Input.CanExecuteRoutedEventArgs}, bool trust) + 0x35 字节
  • PresentationCore.dll!System.Windows.Input.RoutedCommand.CriticalCanExecuteWrapper(对象参数,System.Windows.IInputElement 目标,bool 可信,System.Windows.Input.CanExecuteRoutedEventArgs 参数)+ 0x80 字节
    PresentationCore.dll!System.Windows.Input.RoutedCommand .CanExecuteImpl(object parameter = null, System.Windows.IInputElement target = {System.Windows.Controls.RichTextBox}, bool trust = false, out bool continueRouting = false) + 0x70 bytes
  • PresentationCore.dll!System.Windows.Input.RoutedCommand.CriticalCanExecute(object parameter, System.Windows.IInputElement target, bool trust, out bool continueRouting) + 0x3a bytes
  • PresentationCore.dll!System.Windows.Input.CommandManager.TransferEvent(System.Windows.IInputElement newSource, System.Windows.Input.CanExecuteRoutedEventArgs e = {System.Windows.Input.CanExecuteRoutedEventArgs}) + 0x52 字节
  • PresentationCore.dll!System.Windows.Input.CommandManager.OnCanExecute(object sender, System.Windows.Input.CanExecuteRoutedEventArgs e) + 0x8c bytes
    PresentationCore.dll!System.Windows.UIElement.OnCanExecuteThunk(object sender, System.Windows.Input. CanExecuteRoutedEventArgs e) + 0x44 字节
  • PresentationCore.dll!System.Windows.Input.CanExecuteRoutedEventArgs.InvokeEventHandler(System.Delegate genericHandler, object target) + 0x41 bytes
    PresentationCore.dll!System.Windows.RoutedEventArgs.InvokeHandler(System.Delegate handler, object target) + 0x27 bytes PresentationCore。 dll!System.Windows.RoutedEventHandlerInfo.InvokeHandler(object target, System.Windows.RoutedEventArgs routedEventArgs) + 0x3e 字节
    PresentationCore.dll!System.Windows.EventRoute.InvokeHandlersImpl(object source = {System.Windows.Controls.RichTextBox}, System. Windows.RoutedEventArgs args = {System.Windows.Input.CanExecuteRoutedEventArgs},bool reRaised = false) + 0x1bf 字节
  • PresentationCore.dll!System.Windows.UIElement.RaiseEventImpl(System.Windows.DependencyObject 发件人 = {System.Windows.Controls.RichTextBox},System.Windows.RoutedEventArgs args = + 0x79 字节
  • PresentationCore.dll!System.Windows.UIElement.RaiseEvent(System.Windows.RoutedEventArgs args = {System.Windows.Input.CanExecuteRoutedEventArgs}, bool trust) + 0x35 字节
  • PresentationCore.dll!System.Windows.Input.RoutedCommand.CriticalCanExecuteWrapper(对象参数,System.Windows.IInputElement 目标,bool 可信,System.Windows.Input.CanExecuteRoutedEventArgs 参数)+ 0x80 字节

看起来应用程序陷入了无限循环。这是我的错(我做错了什么)还是 .NET 3.5 中的错误?

我使用这段代码:

无论我是通过代码还是在 XAML 中创建 menuItem 都没有关系,就像我说的那样,在哪里设置命令也无关紧要。使用 MediaCommands 时也会出现这个问题,所以我猜一般是所有命令。

富文本框代码:

RichTextBox 被添加到从 TabItem 派生的控件的构造函数中。

0 投票
1 回答
125 浏览

stack-overflow - 尝试使用 Spirit 解析内容时,我不断收到堆栈溢出

我想当我开始出现堆栈溢出时,是时候来这里询问了;)

我现在正在尝试学习如何使用 Boost Spirit。我已经弄清楚了基本的东西。由于我手头有 K&R(其中包含 C 的语法),我决定看看我是否可以为该语言创建一个接受器。无论如何,这或多或少是我最初的目标,因为我最终想用它作为预处理器从数据结构和东西中收集一些信息。

我能够解析常量和字符串,但是当我尝试解析这个时,我开始遇到问题。

当我传递类似i++它失败的东西时。我认为这是因为i它是有效的primary_expression,所以它不会继续检查++or --。我试着把它放在底部,然后我得到堆栈溢出。我在这里得到了一些无限的左递归,但我不知道如何解决它。

0 投票
7 回答
4578 浏览

language-agnostic - 什么是堆栈溢出?

什么是堆栈溢出错误?它可能出现在哪种类型的程序/编程语言中?它不太可能出现在 Web 应用程序代码中吗?

0 投票
3 回答
3026 浏览

c# - 为什么这个 Linq 代码总是抛出 System.StackOverflowException?

唯一解决问题的是一个显式循环:

0 投票
10 回答
45882 浏览

operating-system - 堆栈溢出和缓冲区溢出有什么区别?

编程中的堆栈溢出和缓冲区溢出有什么区别?

0 投票
1 回答
897 浏览

apache-flex - flex组合框自定义问题

我是 flex 新手,我需要在组合框中创建项目和子项目,其中只有子项目是可点击的。类似于给定链接中显示的内容,如下所示:http: //blog.flexexamples.com/2007/09/25/creating-a-custom-combobox-item-renderer-in-flex/ 但这里有标题和选项同时点击,而我需要唯一的选项应该是可点击的有没有办法做同样的事情。请帮忙。提前谢谢。

0 投票
4 回答
1840 浏览

javascript - Javascript 投票服务器。这会导致堆栈溢出吗?

我不太熟悉每个浏览器上每个 javascript 实现的细节。但是我知道使用 setTimeout,传入的方法会在单独的线程上调用。那么在方法内部递归使用 setTimeout 会导致其堆栈无限增长,直到导致堆栈溢出?或者它会创建一个单独的调用堆栈并在失去焦点后销毁当前帧?这是我想知道的代码。

我想每隔一秒左右轮询一次服务器,但不想通过“阻塞循环”浪费 CPU 周期——我也不想设置用户在浏览器死机之前可以访问页面的时间限制。

编辑

使用萤火虫,我设置了几个断点,通过查看“脚本 - >堆栈”面板看到调用堆栈实际上只是“pollServer”,它不会在每次调用时增长。这很好 - 但是,JS 的任何其他实现是否有不同的行为?