问题标签 [stack-smash]
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++ - G++ Linux Stack Smash 检测
在 Packet() 类中,我有这个方法可以自行封装数据包iteslf(即在它前面添加 6 字节的标头,但当然首先分配必要的内存)但是,它给了我一个* 堆栈粉碎检测到 *:
int TmcPckt::EncapsulateCCSDS(void) {
而且我想找出它在哪里(代码行)给出问题......:/我可以使用标志重新编译以避免检测但不能让我的程序出现段错误......所以我猜猜我不能在这里使用 gdb。(加上这在 g_timeout_add() 这样的线程中调用)
Valgrind 有什么用吗?我是否通过做一个永远不会被释放的 new() 来做一些丑陋/错误的事情
我可以这样做吗?
gcc - 分段错误 - 查找缓冲区大小
我正在尝试粉碎堆栈并使用以下 C 代码:
仅当我输入至少 16 个字符作为输入时,才会出现分段错误。在 IA-32 架构上运行它。由于 EBP 在分配缓冲区后占用 4 个字节,因此我在输入 12 个字符后不应该出现 seg 错误。希望对此有所澄清。
c++ - 堆栈粉碎中止(核心转储)错误
我一直在为学校做一个项目,我们被分配了使用 2 个客户端和一个服务器 (TCP) 制作轮盘游戏的任务。所以我想我会为服务器和客户端做一个void函数来实现通信,但是我遇到了这个错误,找不到我搞砸的地方,如果有人知道,请告诉我!:)
客户:
服务器 :
在双方中,“消息”变量如下所示:
size 是一个 const int,值为 256;PS:我标记 C 和 C++ 的原因是因为它是使用 C 函数的要求(包含在 sys/socket.h,sys/types.h,netinet/in.h 中)但我主要研究 C++ ,所以我正在尝试偷工减料。
c - gcc 的 -fstack-protector 选项如何防止堆栈粉碎?
我遇到了一个堆栈粉碎问题,我很难找到原因。堆栈粉碎错误只是偶尔发生,并且仅在程序执行结束时发生。当我使用带有 gcc 的 'fstack-protector' 选项编译它时,它也完全停止发生。我想知道使用“fstack-protector”选项是否是一个实际的解决方案,或者我只是在隐藏问题?我会发布代码,但它有 3000 行长,我不确定代码的哪一部分负责。
c++ - 堆栈粉碎终止程序
我正在学习 C++,并被赋予创建一个程序的任务,该程序允许用户修改一个包含 10 个整数的数组。如果用户给出的索引超出范围程序将退出。程序适用于负数和范围内的所有数字。当我输入一个高于我得到的范围的数字 10 时:
*检测到堆栈粉碎*:终止
我是新手,任何帮助将不胜感激。
当我运行程序时,我得到了这个:
c - C 中管道、greps、wc 的堆栈粉碎问题
编辑:** 已回答问题:请参阅 PaulMckenzie 和 Rishikesh Raje 的评论
此函数的目的是使用管道在参数上调用 grep file
,pattern
但我在程序中遇到了堆栈粉碎的问题。它运行并直接运行到函数的末尾,但随后抱怨堆栈粉碎。这是我的代码:
使用参数 file="somefile" pattern="somepattern" 在 main 中运行它会在最后输出正确的数量somepatterns
以及somefile
典型的迁移错误检查打印语句,之后它会因堆栈粉碎而终止。
在阅读了堆栈粉碎后,似乎管道的某个末端过度扩展了对非法空间的读取或写入。但是,我不确定在哪里或为什么会发生这种情况,因为在函数结束之前一切似乎都运行良好。此处有关堆栈粉碎的其他帖子暗示,当堆栈粉碎可能发生时,是编译器将金丝雀扔到代码中表示失败。问题不在于main
两者。任何人都可以说明情况吗?
参考: http ://crasseux.com/books/ctutorial/Programming-with-pipes.html
是此代码主要基于的地方。
c++ - 检测到堆栈粉碎,中止,OpenGL freeglut
所以我有以下图形透视投影代码:
我能够编译这段代码,但是每当我运行它时,我都会收到错误“检测到堆栈粉碎”。我不知道为什么会这样。其他人也得到了同样的代码来工作,但它对我不起作用。我正在为此使用ubuntu。任何有关此错误的帮助将不胜感激。
c - gcc -fstack-protector 不抛出错误
有人知道为什么以下代码行会抛出 *** stack smashing detected *** 错误
但是下面的代码不会抛出吗?
谢谢!!
linux - X86_64 汇编代码段错误并给出堆栈粉碎错误
所以,对于这个任务,我必须编写一个汇编“函数”,由 C 代码调用。该函数的目的是,给定一个整数和一个内存地址(char 数组的地址,用作字符串),将整数转换为字符串,其起始地址是给定的内存地址。顺便说一句,我在 Ubuntu Linux 上。
这是汇编代码(我尝试使用 Linux x86_64 ABI 调用约定)(它是 AT&T 语法):
这是我的 C 代码:
它编译没有任何问题,但是当我尝试运行时,它会出现段错误。我试过用gdb调试它,显然当我尝试运行指令时出现问题
因此,我对 C 代码进行了一些更改:
现在,当我尝试运行它时,我收到以下消息:
有人可以帮助我了解这里发生了什么以及如何修复我的代码吗?提前致谢。
c++ - 在动态库中使用 Poco::JSON::Object 时堆栈粉碎
我正在尝试构建一个动态库,其中我使用了 Poco::JSON 库。
然后,使用命令构建动态库“libmymath.so”:
// 测试文件
编译命令:
当我运行 main.test 时,出现错误:
为什么会发生?如果我移动了声明“Poco::JSON::Object obj;” 在构造函数“math::math”中的函数“math::sum”中,它不会发生。