我有一个Winform应用程序.每隔几秒钟,我就会检查一些日志文件,在任何新数据中读取并将任何新数据插入DB. 当我运行大约一个小时1/2的应用程序时,我会得到StackOverflowException.在整个期间的日志文件中没有新数据,因此未添加新的数据. 这里的代码在此处错误... if (pictureBox == null) { continue; } if (pictureBox.InvokeRequired) { var toolTip = new ToolTip(); GameServer tempGameFile = gameServer; pictureBox.Invoke(new MethodInvoker( () => toolTip.SetToolTip(pictureBox, string.Format( "{0} : Last Chec
以下是关于 stack-overflow 的编程技术问答
我运行以下代码时会得到StackOverflowException: private void MyButton_Click(object sender, EventArgs e) { MyButton_Click_Aux(); } private static volatile int reportCount; private static void MyButton_Click_Aux() { try { /*remove because stack overflows without*/ } finally { var myLogData = new ArrayList(); myLogData.Add(reportCount); myLogData.Add("method MyButtonClickAux"); Log(myLogData); } } private static void Log(object logD
我对其中一个Windows服务进行了小调整,并进行了 描述:由于堆栈溢出而终止该过程. 所以我回到了一个旧版本并运行它,但我仍会遇到stackoverflow错误. 最糟糕的部分是我两者都进行了调试,而且我不会再出现此错误.如何找到找到Windows服务溢出的最佳方法? 解决方案 您可以订阅 appdomain.unhandledledexception 例外.另一个选项是查看服务崩溃时是否生成崩溃转储并使用 windbg 跟踪问题.您还可以配置Windows 生成这些转储. windbg附带可以附加到该过程的脚本,生成转储此过程崩溃时. 来自此文章:: ...找到stackoverflowException并不难.如果您运行 !clrstack并找到200多个行的呼叫站,您可能或多或少 确定这是您的问题. 更新: 如果使用.NET 4.0,则需要添加 legacyCorreptedStateExceptionspolicypolicyp
我有一个Windows服务,每分钟每分钟进行一些密集的工作(实际上,它每次都会启动一个新线程,以通过HTTP同步到不同的系统).问题是,几天后,它突然停止而没有任何错误消息. 我有NLOG,我已经注册了AppDomain.CurrentDomain.UnhandledException. TextFile-Log中的最后一个条目只是正常的条目,没有任何问题.在EventLog中查看,我在应用程序日志中也找不到任何消息,但是,系统日志中有两个条目. 一个人基本上说该服务已意外终止.而已.第二个事件(与第一个事件同时)说:" ...无法创建堆栈的新护罩页面..." 根据我阅读的内容,这可能是一个堆栈溢出异常.我没有解析任何XML,也没有递归工作.我使用Gate,Nancy和SignalR托管一个Web服务器,并在嵌入式模式下运行RavendB.每一分钟,都会使用.NET 4.0的TaskFactory开始一个新任务,并且我也有一个继续,我可以在一分钟内重新启动a Syste
我认为我在Windows 7下的Apache Server上运行CakePHP应用程序的堆栈溢出. 解决方案 由于Apache的默认堆栈大小,此问题在Windows平台上更常见. Windows上有1 MB默认的堆栈大小,与UNIX/Linux平台上的8 MB不同.这可能是一个原因,为什么有些PHP脚本在Linux上正常工作,但导致Windows上的Apache崩溃. 此外,崩溃是无声的(分割故障),没有错误消息,Apache只是停止响应,并且重新启动子过程.浏览器没有获取数据并呈现一个空白页,因此很难确定出了什么问题. 使用 php 中的长正则表达式时,这是一个常见的问题. 仅在Apache的错误日志中有一个通知,该通知告诉,该子过程崩溃了: Parent: child process exited with status ... -- Restarting 更改Apache堆栈大小的最佳方法是使用Apache配置文件中的 threadstacksi
我刚刚发现有一个status_stack_buffer_overrun和status_stack_overflow.这两个区别有什么区别?我刚刚找到堆栈溢出(堆栈耗尽)与堆栈缓冲区溢出不相同,但它不能解释它,或者我不理解.你能帮我吗? 问候 tobias 解决方案 考虑以下在内存中向下生长的堆栈: +----------------+ | some data | | +----------------+ | growth of stack | 20-byte string | V +----------------+ limit of stack 当您为20字节字符串编写30个字节时,就会发生缓冲区超支.这会损坏进一步的条目("一些数据"). 堆栈溢出是当您尝试将其他内容推到上的其他内容时,当它已经满满时(在其中说"堆栈的限制").堆栈通常在其最大尺寸中受到限制. 其他解决方案 Stackoverflow在内存中没有更多空间来
并提前感谢任何帮助! 我已经编译了一个程序(我没有编写),并且在Mac的程序上正常工作,但是当我尝试在Windows上执行程序时,我在执行程序后不久会收到以下错误消息: forrt1:严重(170):程序异常 - 堆栈溢出 我不是Ifort或Fortran用户,而是试图编译工作的程序. 我做了一个" ifort - version",我使用的是Intel Visual Fortran编译器XE,带有Verion 12.0.0.104.我已经解决了这个问题已经有几天了,我尝试弄乱了Makefile中的旗帜,但没有运气. 如果我能提供任何进一步的信息,我会尽力而为.再次感谢! 解决方案 尝试在编译过程中添加以下标志以获取更多信息: /traceback /check:all check将进行运行时错误检查,traceback将告诉编译器在运行时发生严重错误时生成额外的信息. 其他解决方案 编译程序时,请尝试将选项/堆阵阵列放在堆上的编
我首次使用Visual Studio 13来编译C代码.这些代码运行完美有2D ARAYS的尺寸为64*64(我的程序中有一些数组),但是如果我将阵列大小提高到128*128,则无法运行(但正确编译).相反,它发出了一条消息" .exe已停止工作".我的机器有4GB RAM,如果我从Linux运行代码,则使用128*128数组运行. 让我提供更多详细信息:我在同一台计算机中使用英特尔C编译器(非商业版)从Linux运行了相同的代码.但是由于某些问题,我现在被限制在Windows环境中工作.我搜索并安装了两个C-编译器(1)Visual Studio 13和(2)BorlandC.都可以很好地与一个小阵列一起使用.但是,我增加数组尺寸的视觉工作室的那一刻就会发出消息" .exe停止工作".我使用"开发人员命令提示vs 13"中的" CL"编译程序. 我觉得问题是堆栈尺寸. 在链接中我已经看到了Linux环境中使用的命令" Ulimit",以增加堆栈尺寸.我记得几年前使用了
伙计, 使用WINDBG调试.NET 4.0应用程序(我是WindBG的初学者).当我碰到堆栈溢出时,我正在尝试打破: (NTSTATUS)0xc00000fd - 无法创建堆栈的新护罩页面 不幸的是,这种溢出发生在一个长期运行的过程中大约2小时,并且日志告诉我,它并不总是在同一时间/地点发生.如果我在调试器中附加到该过程,则该程序的运行速度非常慢……可能需要几天的时间才能击中该错误!有没有办法通过告诉windbg仅因此特定错误而打破应用程序/windbg加快应用程序/windbg? 解决方案 您可以指示ADPLU在发生异常时创建过程的转储.约翰·罗宾斯(John Robbins)拥有一篇关于该主题的好文章.然后,您可以使用windbg调试转储文件. 请注意,原始的adplus.vbs已被adplus.exe替换,该exe应该提供相同的功能.根据我的经验,新实现存在一些问题,因此您可能需要使用旧脚本,该脚本仍然可以作为adplus_old.vbs提供. 其
我有一个托管的代码Windows服务应用程序,该应用程序由于托管stackoverflowException而偶尔会在生产中崩溃.我之所以知道这一点,是因为我在崩溃模式下运行ADPLU,并使用SOS分析了崩溃转储邮政验尸.我什至附上了windbg调试器,并将其设置为"无人驾驶异常". 我的问题是,我看不到任何托管堆栈或切换到任何线程.在调试器中断时,他们都被拆除了. 我不是WINDBG专家,并且没有在实时系统上安装Visual Studio或使用该工具使用远程调试和调试,任何人是否对如何从犯罪中获得堆栈跟踪有任何建议线程? 这是我在做的. !线程 ... XXXX 11 27C 0000001B2175F0 B220禁用00000000072C9058:00000000072CAD80 000000000019BDD3F0 0 UKN System.StackOverFlowException(000000000000C010D0) ... ,
简短版本 我想要一个ADPLUS脚本,在清理所有内容之前,将在第一次舞会stackoverflowException上进行完整的内存转储,而忽略所有其他异常类型. log版本 发布新的ASP.NET代码后,我们开始获得间歇性的StackoverFlowExceptions.自从上次已知的良好安装以来,我们已经寻找了无限递归和所有通常的嫌疑犯,但找不到任何东西.该网站将运行长达一个小时,然后崩溃. 我们使用了windbg和sos,并尝试使用Adplus获取崩溃日志,使用此命令: adplus -crash -o D:\Crash -NoDumpOnFirst -iis -nodumponFirst的原因是,我们只能在繁忙的服务器上重现生产错误.为了对每个第一阶段异常进行小型设备(嘿,发生),调试器必须暂停IIS工作过程的时间足够长的时间以写出16 meg文件,因此请求排队排队并且应用程序变得不稳定.因为错误最多可能需要一个小时才能抬起头部,所以这是有问题的
我正在尝试使用EF从数据库中获取数据.我有一个与此相关联的客户端的桌子干预措施: public partial class Client { public Client() { this.Interventions = new List(); } public int client_id { get; set; } public string full_name { get; set; } public string cgroup { get; set; } public string nation { get; set; } public virtual ICollection Interventions { get; set; } } public partial class Intervention { public int in
几年前在VS2010中编写了一个Web服务项目,问题的代码都完全相同(使用VS2010和2015年测试的同一PC具有相同的代码),但在VS2015中,它在调试模式下会出现错误.选项>"项目和解决方案"设置都是相同的.我采取了此错误和定义; 在system.runtime.serialization.dll 中出现了" system.stackoverflowException"类型的未经处理的例外. system.stackoverflowException是未经指导的消息:Mscorlib.dll 中出现了" system.stackoverflowexception"类型的例外. 任何人都对此有所了解,我真的很高兴关注.我无法共享代码,因为它接近30.000行. 解决方案 已解决 将其添加到您的web.config中的appsettings: 在VS
我遵循此处找到的非常基本的教程Error 500--Internal Server Error java.lang.StackOverflowError at weblogic.servlet.internal.ServletResponseImpl.addHeader(ServletResponseImpl.java:567) at javax.servlet.http.HttpServletResponseWrapper.addHeader(HttpServletResponseWrapper.java:200) at javax.servlet.http.HttpServletResponseWrapper.addHeader(HttpServletResponseWrapper.java:200) at javax.servlet.http.HttpServletResponseWrapper.addHeader(HttpServletResponseWrapper.java:2
我在Chrome上遇到了"未接听的连击:超过呼叫堆栈大小".这是我的jQuery函数 $('td').click(function () { if ($(this).context.id != null && $(this).context.id != '') { foo($('#docId').val(), $(this).attr('id')); } return false; }); 请注意,页面中有数万个单元格.但是,我通常将堆栈的溢出与递归相关联,在这种情况下,据我所知,没有. 创建像这样的lambda会自动在堆栈上产生大量东西吗?有什么办法吗? 目前,我唯一的解决方法是在渲染HTML时明确在每个单元格上生成OnClick事件,这使HTML更大. 解决方案 作为"页面中有成千上万个单元格"将点击事件与每个单元绑定到每个单元格会导致可怕的性能问题.有一种更好的方法可以将单
我们都知道堆栈正在向下增长,因此,这确实是一个简单的假设,如果我们找到 last 声明的变量的地址,我们将在堆栈中获得最小的地址,因此我们可以只需假设此地址将是我们的剩余可用堆栈. 我做到了,我得到了巨大的地址{0x000000dc9354f540} = {947364623680}我们知道堆栈向下增长,我们知道我们不能低于0. 所以一点数学: 947364623680 / (1024*1024*1024) = 882.302060425 - >他们是否暗示我的机器上有882GB的堆栈? 我对其进行了测试,显然在堆栈中分配了其他2MB后获得堆栈溢出例外: uint8 array[1024*1024*2] = {}; ,我的问题来了,这是我的实际堆栈大小? 解决方案 由于您的问题具有标签" Visual-Studio-Debugging",因此我假设您使用Windows. 首先,您应该获得当前的堆栈指针.要么获取本地虚拟变量的地址(就像您现在一
我正在使用Visual Studio2013.昨天,我安装了VS2015(Enterprise Update 3).我的解决方案的构建过程崩溃了其中一个项目的VS2015. VS2017 RC发生同样的例外. 该解决方案是在VS2013中成功构建的. 解决方案是靶向.NET4.5.当我迁移到.net4.6.2时,它无法解决此问题. 我相信这个问题是在VS2015+ 中包含的编译器带来的. 输出: 由于stackoverflowException终止过程. c:\ program文件(x86)\ msbuild \ 14.0 \ bin \ microsoft.csharp.core.targets(67,5):错误msb6006:" csc.exe",带有代码-1073741571. msbuild命令: C:\Program Files (x86)\MSBuild\14.0\bin\csc.exe \ /noconfig \ /nowar
我想在抛弃堆栈流异常时查看呼叫堆栈. (即,我想指出什么递归调用导致堆栈溢出). 呼叫堆栈已清除,我可以看到的只是"外部代码". 编辑我遵循克里斯·施密希(Chris Schmich : edit2:我遵循了克里斯·施密希(Chris Schmich 解决方案 您看到的[External Code]框架是因为调试器的代码功能.调试器正在隐藏您的堆栈框架,因为它们不在您的代码中.有关JMC的一些详细信息可以在此博客文章 您可以通过执行以下操作仅禁用我的代码: debug»选项和设置...»取消选中"仅启用我的代码(仅管理)"»单击OK 您现在应该能够看到所有堆栈帧. 对于JMC的示例,当我使用启用JMC的简单C#控制台应用程序时,我在解决方案中仅看到代码... ...并且在禁用JMC的情况下,我也看到了框架代码... 其他解决方案 检查此,加载符号段落 加载符号 它们是 *.pdb文件,您需要从Microsoft下载它们,因此您可以看到