问题标签 [segmentation-fault]

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 投票
3 回答
1501 浏览

c++ - 找不到我的段错误的来源

编辑:问题解决了。这是(另一种)情况,问题并不真正出现在它看起来的地方。线索是使用@0xfeeefefe 作为指向对象的指针。这是释放内存时由 Windows API 函数返回的地址……表明正在操作的对象已被删除。

我在尝试从 std::map 中删除值时收到分段错误,但我终其一生都无法弄清楚原因。从调试器(gdb)我看到:

但奇怪的部分是对这两个输入值的以下检查:

一些背景知识:映射是指针到指针的映射。具体来说,key 是一个指向 gui 系统中的窗口的指针,而 value 是一个指向可以发送要打印到该窗口的信息的对象的指针。还有一个从可调试对象到窗口的逆映射。原因是如果窗口关闭,可调试对象需要得到通知,这样它就不会浪费时间尝试向它发送数据。逆映射是,当管理器(这段代码所在的类)从可调试对象接收到数据包时,它知道在哪个窗口中打印信息。

所以问题是为什么两个指针值的比较return( 0x025e1ef8 < 0x025e1ef8 )会导致错误?

我只尝试在我的代码中的某个时间点擦除内容,并且它不在循环中,因此没有任何迭代器可以破坏。我也只在另一个地方将东西插入到该地图中,并且当插入和擦除东西时,我有打印出来的痕迹,我看不出有什么问题。

我知道这些信息不足以提供真正的帮助,但代码真的很大,我不确定我能做些什么来找出问题所在。如果有建议,我很乐意提供更多信息。我将粘贴代码的一些部分,以便快速了解发生了什么。希望这里有一些东西可以表明我的问题是什么。

这是有问题的部分

这是将元素添加到地图的部分

正如您所看到的,我正在打印正在进入的地址以及试图从地图中删除的地址,并且它们与我期望的一致,因此我不会尝试删除失效的值或任何东西。

哦,还有最后一点。这是一个奇怪的怪癖。如果我只打开一个窗口(即只向地图添加一个元素),我可以很好地删除它。只有在将两个或更多元素添加到地图后,尝试删除其中一个元素才会导致分段错误。

0 投票
1 回答
1465 浏览

ruby - 是否有可能以某种方式“拯救”Ruby 上的分段错误

我有一个 Ruby 脚本,它使用一个外部库。有时脚本会因分段错误而退出,当使用此库时,我必须重新运行它。是否有可能通过提取具有危险代码来分离进程或类似的东西的片段来以某种方式挽救这个错误?

谢谢

0 投票
7 回答
1267 浏览

c++ - C++ 中的随机段错误

我是 C++ 新手,不知道从哪里开始,所以我将代码上传到了一个pastebin,因为它有很多。

这段代码编译得很好,并且不会发出警告,即使使用 gcc 的 -Wall 选项也是如此。

它应该生成所有素数,直到作为命令行参数给出的数字。

对于较小的数字(例如 4,000 或 5,000),它可以正常工作。在更大的数字上,例如 4,000,000,它几乎总是因段错误而崩溃。在介于两者之间的数字上,它是否运行会受到影响。

0 投票
5 回答
22771 浏览

c - 尝试在 C 中使用 execvp() 和 unix 中的用户输入

我正在尝试制作一个提示用户输入命令的程序,然后使用 exec 执行该命令。

例如,如果他们给了我“ls -la”,我将不得不执行该命令。我试过以下代码:

但是,当我尝试以下运行时,它给了我一个“分段错误”

有任何想法吗?

0 投票
1 回答
394 浏览

c++ - TokyoCabinet:hdb->close() 处的分段错误

在 TC 哈希数据库中插入大约 800 万条记录后,我遇到了分段错误。插入所有内容后,我关闭了数据库,但在这部分代码(tchdb.c)中发现了分段错误:

更具体地说,在注释行。

数据库是这样打开的:

数据库调整为:

.tch 文件大约 2GB(2147483647 字节)。有趣的是,只有当我插入大约 800 万条记录时才会发生这种情况。有 2 或 3 百万的数据库可以正常关闭。插入 800 万条记录大约需要 3 个小时,因为我从文本文件中读取数据。

有任何想法吗?

谢谢

0 投票
5 回答
562 浏览

c++ - C++ 分段错误问题

我的程序崩溃了,这对我来说似乎很好,当然我的程序另有说明,这让我感到困惑。

我目前正在处理的这个函数片段:

可能是问题所在。当我调试问题时,调试器会转到代码段的第一行:

然后当我尝试进入下一个时崩溃。在调试器中,此窗口在我的代码块中打开:

我点击是,这对我来说似乎是任意的。

有谁知道我做错了什么?

如果需要回溯(窗口显示调用堆栈),如果需要,我稍后会对其进行编辑

编辑:这是整个功能,我认为没有必要

字典和片段在类“语言”中声明,它们都是向量。

0 投票
2 回答
4782 浏览

c++ - SetJmp/LongJmp:为什么这会引发段错误?

以下代码总结了我目前遇到的问题。我当前的执行流程如下,我在 GCC 4.3 中运行。

上面的执行流程在 b_helper 中返回后立即创建了一个段错误。就好像只有 b_helper 堆栈帧是有效的,它下面的堆栈被擦除了。

谁能解释为什么会这样?我猜这是删除未使用的堆栈帧或其他东西的 GCC 优化。

谢谢。

0 投票
3 回答
4124 浏览

c - 帮助解释 gdb: segfault in function

我正在尝试调试段错误,并且我从 gdb 得到以下输出:

在我看来,memcpy() 中的某些东西正在失控。但我无法弄清楚究竟是什么问题,因为该行引用了这么多变量。

有人能帮我弄清楚这0x8048af9 in parse_option_list...条线告诉我什么吗?

我的函数签名是:

这可能很有用:

此外,变量valuename没有段错误(但如果你认为它们是,我可以发布设置这些值的代码。)但是现在,如果我能理解这个 gdb 输出,我会很高兴作为一个蛤!谢谢!

0 投票
5 回答
1099 浏览

c - 写入 c 字符串

我的代码段错误,我不知道为什么。

gdb 调试器告诉我,问题出在第 6 行,我想将一个字符存储到 c 字符串中(如果我使用左值指针解引用,这是同样的问题。)这就是他所说的:

我正在从 K&R-C 书中学习,这是第 2.8 章中的简化示例(删除功能)。我不知道问题出在哪里。

0 投票
3 回答
70567 浏览

c - 将用户输入放入 char 数组(C 编程)

我需要从控制台读取输入并将其放入一个字符数组中。我编写了以下代码,但出现以下错误:“分段错误”