问题标签 [bus-error]

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 投票
0 回答
379 浏览

c++ - 编译 C++ 程序时出现总线错误 10

我正在用 C++ 编写一个从在线数据库下载文件的简单程序。但是每当我尝试编译它时,我都会得到:

我已经看到它可能是由被滥用的 char* 变量引起的,但我已经将我的 C 字符串转换为 C++ 字符串。这是代码:

我觉得这可能是由函数引起的(*itr)getPkgList()但我在 Stack Overflow 上看到了其他人的答案,他们让它工作。有人知道是什么原因造成的吗?

PS我正在构建没有库和所有库,但没有区别。

0 投票
1 回答
209 浏览

c++ - 类中指针访问的私有数组的声明和内存分配

我需要一些关于指针的类内声明的帮助。尽管我使用 c++,但我正在寻找一种使用 c 样式数组的方法(所以不幸的是没有向量)。我无法在执行过程中没有错误,例如“分段错误:11”或“总线错误:10”。目的是有一种方法可以在一个类中包含 10 个对人员的引用。

这些指针在 .h 文件中以这种方式声明:

在 .cc 文件的 ctor 中,我使用了不同的方式来分配内存,例如:

但是我遇到了运行时错误,可能是因为它实际上没有访问私有变量或者它超出了内存(“分段错误”)。如果我不写上面的行,执行时输出是“总线错误”。我在编译中没有错误,只有在执行期间。我无法更改 .h 文件中的私有变量类型,并且它不允许我在类中使用 new,因为它将是 C++11 的扩展。

任何帮助将不胜感激

0 投票
2 回答
735 浏览

c++ - 在 C++ 中的 iov 中存储更多数据

我正在编写一个 C++ 程序(见下文)。我的目标是将数据存储在 iov 结构中。我在构造函数中分配了固定长度的缓冲区。每次缓冲区被填满时,我都想在 iov 中传输数据并分配固定长度的新缓冲区。最后,当完成数据处理后,我想返回 iov 结构。我的意图是将所有这些数据存储到 iov 中,以便将来如果需要,我可以轻松发送数据。我已经编写了示例代码。但它似乎不起作用。我收到“总线错误:10”。有人能帮我吗?

示例代码:

0 投票
1 回答
971 浏览

c - 无法访问 .bss 部分中的内存,但 gdb 'info files' 显示地址在范围内

我有一个生成Bus error (core dumped)消息的二进制文件。当我在调试器 ( gdb) 下运行它时,它无法访问该.bss部分中的内存位置。

这个位置的代码是:

所以它试图访问0x63d7cc明显在该.bss部分内的位置的内存:0x63c4e0 - 0x63d7e0.

gdb(与 /proc/$pid/maps 一起)将此内存显示为已映射:

ELF部分的两个检查:

和 Segments 将此内存显示为已映射:

gdb无法访问它(以及应用程序失败的原因)。有趣gdb的是能够访问.bss内存直到0x63d000

问题是:
什么会阻止这种访问?
还有哪些其他方法可以检查运行时内存访问权限?
还有什么可以修改正在运行的进程的访问权限?

0 投票
2 回答
287 浏览

c++ - 在执行此代码时,我不断收到“总线错误”?

这段代码的目的是取一个已经传入程序的文件,生成文件中每个字母的字母频率。在上面的代码中,我删除了标点符号并转换为小写字母。

当我运行这段代码时,我得到了一些准确的频率,以及一些非常不正确的频率(似乎所有其他结果都是错误的,但在几个字母之后它会变成天文数字)。有什么办法可以更好地做到这一点?这段代码有什么问题?根据要求,我添加了更多代码(包括一个带有随机 100 的字符串),因为它显然不够清楚)

有关更多上下文,该程序适用于我正在研究的 Ceasar 移位解码器。我使用基本的 C++,非常感谢您更有经验的开发人员的任何建议。谢谢你!

0 投票
2 回答
243 浏览

c - 为什么这个 C 结构初始化代码会产生总线错误?

在用 C 语言设计游戏实体系统时,我尝试了一种“equals-free”初始化方法。我很惊讶地看到一个 linter 告诉我在我的 init 函数结束时存在内存泄漏,并且我的变量ent从未在以下代码中初始化。事实证明是正确的,因为我遇到了“总线错误”:

认为上面的代码会做的是将我提供的空ent指针作为参数,告诉它指向一些新分配的内存,然后填充该内存,一切都会好起来的。我不知道导致“总线错误”的真正原因是什么,我是否遗漏了一些关于指针和 malloc 的关键信息?

隐约记得之前在一些 C 代码中看到过与此非常相似的东西(equals-free struct 初始化),如果在 C 中可能发生这样的事情,我强烈希望使用类似于此(损坏的)代码的 equals-free 初始化样式.

0 投票
0 回答
74 浏览

c - C代码中的总线错误不清楚

我目前正在尝试学习 C,为了做到这一点,我尝试创建非常简单的代码来请求一个人的名字并将其放入一个结构中。然后它应该继续使用“print_contact”功能打印信息。

出于某种原因,我不断收到总线错误 10,但我不明白为什么会发生这种情况。

0 投票
2 回答
260 浏览

c - 为什么在 macOS 上使用 clang -O2 编译 C 程序时“空”循环会导致总线错误?

我在 macOS High Sierra 上。

我有以下综合程序。

编辑 2:我现在在下面的示例中使用 clang 显式编译。

当我编译并运行以下 C 程序时,调用,clang -O2时出现总线错误,但对于.main()nop1()nop2()nop3()nop4()

在没有所有版本的情况下进行编译时不会-O2出现总线错误。我猜优化器转换nop3()nop2(). 我想了解在每种情况下导致总线错误的原因以及为什么使用静态变量nop4() 不会导致总线错误。

这是我的铿锵版本:

我还在 Linux 上使用 gcc 进行了测试:

,并且程序对于所有功能都运行良好nop,无论有没有-O2.

这是我在 Linux 上的 gcc 版本。

编辑 4

也许 otool 的输出更容易分析。首先与-O2.

并且没有-O2.

编辑 3

根据@Olaf 的要求,我添加了由 clang -S 生成的程序集。

0 投票
1 回答
311 浏览

swift - -[NSConcreteTask waitUntilExit] 导致 KERN_PROTECTION_FAILURE

我收到如下错误(经过审查和修剪以保护专有信息):

有问题的代码尝试使用( Objective-C 中的ProcessAKA ;由 实现)来运行终端命令。它是这样准备的:NSTaskNSConcreteTask

它运行良好,直到调用waitUntilExit. 当它运行时,应用程序会立即崩溃,并输出与上述类似的输出。

由于各种原因,我无法运行调试器来测试它,但我可以将日志行打印到控制台。为什么会崩溃得这么厉害?我什至看到那里有一个公共汽车错误,因为大声哭泣......

0 投票
0 回答
197 浏览

macos - 在 macOS 上访问受保护内存时出现异常总线错误?

语境

我编写了一个小程序,目的是使用它来生成一个SIGSEGV信号,我将用一个处理程序捕获它然后打印出来。

问题

我编写的程序在 Linux 上运行良好(或者看起来如此)。但是,在 macOS 10.11.6 上编译和执行时,它无法生成. SIGSEGV,而是生成Bus error: 10.

尝试的解决方案

在研究其他人是否遇到此错误时,我遇到了以下 SO Post:

https://stackoverflow.com/a/18829327/1883304

可悲的是,虽然我确实从 using 切换posix_memalignmmap,但我仍然遇到总线错误。除了这个问题之外,我找不到可以提供帮助的相关问题。

程序


所以总而言之,有人可以告诉我保留内存的最新正确方法,以便我可以SIGSEGV在 macOS 上提出 a 吗?