问题标签 [overrun]
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.
c# - C# 应用程序在已部署 (.exe) 版本中因缓冲区溢出而崩溃,但在 Visual Studio 中则不然
我有 ac# Windows Forms 应用程序,它可以在 Visual Studio 中完美运行,但在部署并从 .exe 运行时崩溃。它因缓冲区溢出错误而崩溃......而且很明显,这个错误不是从我的代码中抛出的。相反,windows 必须检测到某种缓冲区溢出并从外部关闭应用程序。我不认为有一个特定的代码行导致它......它只是间歇性地发生。
是否有人对缓冲区溢出错误的可能原因有任何想法,以及为什么它只会发生在已部署的应用程序中而不是从 Visual Studio 运行时发生?
在此先感谢,本
windows - 堆栈缓冲区溢出(Windows,C++):如何检测罪魁祸首?
Windows 上是否有任何工具/库可以帮助我找出罪魁祸首?这是一个相当大的代码库,有多个线程。
我主要为 Linux 编写代码;Windows 是一个陌生的领域。感谢您的输入。
c - C 微小的、预分配的数组不会溢出
我期待这段代码出现段错误:
因为 bar 在堆栈中保留了一个 2 字符数组,而 foo() 尝试写入 10 个字符。但是, printf() 写入标准输出 10 个字符并且不会发生错误。为什么会这样?
此外,如果我以这种方式修改 foo() 函数:
行为完全相同:将 10 个字符复制到 my_ascii。有什么解释吗?
非常感谢您提前。
java - 在 Java 中将 long 转换为字节
我无法理解以下内容:
在java中,
如果我打印 b 的值,为什么会得到 -126?long l 的位表示是什么?
.net - .NET SerialPort.Read 跳过字节
解决方案
通过“port.ReadByte”逐字节读取数据太慢,问题出在 SerialPort 类中。我将其更改为通过“port.Read”读取更大的块,现在没有缓冲区溢出。
虽然我自己找到了解决方案,但写下来对我有帮助,也许其他人也有同样的问题,并通过谷歌找到了这个......
(如何将其标记为已回答?)
编辑 2
通过设置
我可以将问题延迟约 30 秒。所以看起来,.Net 真的太慢了......因为我的应用程序不是那么重要,我只是将缓冲区设置为 20MB,但我仍然对原因感兴趣。
编辑
我刚刚测试了一些我以前没有想到的东西(我感到羞耻):
看来我已经超支了。.Net 实现对于 500k 来说太慢还是我这边有错误?
原始问题
我构建了一个非常原始的示波器(avr,它通过 uart 将 adc 数据发送到 ftdi 芯片)。在 pc 端我有一个 WPF 程序来显示这些数据。
协议是:
两个同步字节 (0xaffe) - 14 个数据字节 - 两个同步字节 - 14 个数据字节 - ...
我使用 16 位值,因此 14 个数据字节内有 7 个通道(首先是 lsb)。
我用 hTerm 验证了 uC 固件,它确实发送和接收一切正确。但是,如果我尝试用 C# 读取数据,有时会丢失一些字节。oszilloscop 程序一团糟,但我创建了一个小型示例应用程序,它具有相同的症状。
我添加了两种扩展方法 a) 从 COM 端口读取一个字节并忽略 -1 (EOF) 和 b) 等待同步模式。
示例程序首先通过等待 (0xaffe) 同步到数据流,然后将接收到的字节与预期值进行比较。循环运行几次,直到弹出断言失败消息。我无法通过谷歌找到任何有关丢失字节的信息,我们将不胜感激。
代码
c++ - 缓冲区溢出、格式化字符串错误和整数溢出的 C++ 安全框架
请问有谁知道任何可以防止缓冲区溢出、格式字符串错误和整数溢出的 C++ 安全框架?
windows - 堆块的元数据已损坏,用户可访问的部分没有。是不是超车?
在 64 位 Windows 2008 服务器上运行我的 32 位应用程序时,堆内存损坏,当我检查已损坏的堆块时,我发现堆块的元数据没有损坏,但用户可访问部分已损坏(根据我的分析,至少前 4 个字节已损坏)。
你知道,有很多可能导致堆损坏、内存溢出/不足、使用野指针、不匹配的堆处理程序、使用未初始化的内存等。
但由于元数据和用户可访问部分的前 4 个字节是相邻部分。我认为内存溢出/欠载的可能性非常低。因为如果是内存溢出或欠载,那么元数据很可能也会被破坏。
我不确定我的理解是否正确?任何人都可以在这里给我一个提示吗?
c++ - Visual C++ 2008 变量在内存中重叠
我有一个奇怪的问题。我有一个程序,我在其中使用了一些静态变量(其中一些是包括其他变量的对象),其中一些似乎在_DEBUG_ mode
. 该程序相当复杂,我还没有时间在较小的用例中重现它。所以它看起来像这样:
然后我设置了一个断点,_tmainCRTStartup
以查看我_BEFORE_
的任何代码运行时会发生什么。一旦断点被击中,我将在 Watch 窗口中查看变量及其地址,并看到下图:
但(0x00fa68e0 - 0x00fa68cc) = 20
因此,这些变量在内存中重叠(如果我更改“i”,另一个对象将受到影响)。我开始查看地图文件,其中 B::a 定义在0x00fa6340
.
那么这是链接器还是编译器错误?尚未运行任何代码,但这里已经存在内存重叠。
您在 VS 2008 中遇到过这种情况吗?
这是一些已知的错误,是否有解决方法或者我的代码中缺少某些内容?
regex - 在 perl 中编译正则表达式时出现“reg_node overrun”
我正在尝试运行一个定义一些(复杂)正则表达式的脚本:https ://github.com/wo/opp-tools/blob/master/rules/Keywords.pm 。每当我包含此模块时,Perl 都会崩溃并显示消息“恐慌:reg_node overrun 试图在 rules/Keywords.pm 第 60 行发出 51”。这是 Ubuntu 12.04 上的 Perl v5.14.2。任何可能导致此问题的想法将不胜感激。
更新:这是导致问题的片段。
c++ - 使用 scanf_s 时出现缓冲区溢出问题
我正在编写一个使用异步类型套接字的简单客户端-服务器应用程序。但是,当我从客户端发送消息时,我收到缓冲区溢出异常。客户端代码:
我想这与以非法方式访问 send_buf\recv_buf 有关,但我不知道是什么。有小费吗?