bus-error相关内容

总线错误与分段错误

总线错误和分段错误之间的区别?是否会发生程序第一次出现段错误并停止,第二次出现总线错误并退出的情况? 解决方案 在我使用过的大多数架构上,区别在于: 当您访问不该访问的内存(例如,在您的地址空间之外)时,会导致 SEGV. 由于 CPU 的对齐问题(例如,尝试从不是 4 的倍数的地址读取长整数)导致 SIGBUS. ..
发布时间:2022-01-12 15:52:18 其他开发

在 x86 Linux 上调试 SIGBUS

什么会在 Linux 中的通用 x86 用户级应用程序上导致 SIGBUS(总线错误)?我在网上能找到的所有讨论都是关于内存对齐错误的,据我所知,这并不真正适用于 x86. (我的代码在 Geode 上运行,以防万一相关的特定于处理器的怪癖.) 解决方案 如果打开未对齐访问陷阱,您可以从未对齐访问获取 SIGBUS,但通常在 x86 上关闭.如果出现某种错误,您也可以通过访问内存映射 ..
发布时间:2021-12-14 08:46:10 服务器开发

在 armv8 架构中将半字值存储到堆栈内存中时出现总线错误?

我有两个寄存器 w1 和 w2,我想将它们存储在堆栈中.我想将完整的单词 w1 和 w2 的一半存储到堆栈中.这是我的实现: STR w1, [sp, #-8]!STRH w2,[sp,#-8]! 在编译时,第一条指令运行良好,但第二条指令引发总线错误.我知道这是一些对齐问题,但我无法正确理解为什么会发生这种情况? 我正在为 ARMv8(64 位)架构编译. 解决方案 根据 AR ..
发布时间:2021-11-17 22:44:12 其他开发

什么是总线错误?它与分段错误不同吗?

“总线错误"是什么意思?消息的意思,它与分段错误有何不同? 解决方案 现在 x86 上的总线错误很少见,并且在您的处理器甚至无法尝试访问请求的内存时发生,通常: 使用地址不满足对齐要求的处理器指令. 访问不属于您的进程的内存时会发生分段错误.它们非常常见,通常是以下原因造成的: 使用指向已解除分配的内容的指针. 使用未初始化的假指针. 使用空指针. 溢出缓冲区. ..
发布时间:2021-09-14 19:40:47 服务器开发

为什么下面的 C 程序会给出总线错误?

我认为这是第一个失败的 strtok 调用.自从我写 C 以来已经有一段时间了,我不知所措.非常感谢. #include #include int main(int argc, char **argv) {char *str = "一|二|三";char *tok = strtok(str, "|");而(tok != NULL){printf("%s\n", tok);tok = strtok ..
发布时间:2021-08-31 19:02:50 其他开发

使用非规范地址检索内存数据会导致 SIGSEGV 而不是 SIGBUS

我无法产生“总线错误";使用以下汇编代码.这里我使用的内存地址不是合法的“规范地址".那么,我该如何触发该错误? 我在 Ubuntu 20.04 LTS 和 NASM 2.14.02 下运行这段代码,但它导致负载上出现 SIGSEGV 分段错误,而不是 SIGBUS. 全局 _start节.text_开始:mov rax, [qword 0x11223344557788]mov rax, ..
发布时间:2021-06-07 18:43:36 服务器开发

堆上已分配内存的总线错误

我的代码中有公交错误: char * mem_original;int int_var = 987411;mem_original =新字符[250];memcpy(& mem_original [250-sizeof(int)],& int_var,sizeof(int));...const unsigned char * mem_u_const =(unsigned char *)mem_ ..
发布时间:2021-04-19 20:31:52 C/C++开发

在x86 Linux上调试SIGBUS

在Linux中的通用x86用户空间应用程序中,什么可能导致SIGBUS(总线错误)?所有在网上找到的讨论都是关于内存对齐错误的,这是我理解的并不适用于x86的。 (我的代码是运行在 Geode ,以防有任何相关的特定于处理器的怪癖。 ) 解决方案 如果您打开未对齐的访问陷阱,您可以从未对齐的访问获取SIGBUS,但通常情况下x86。如果有某种错误,您也可以从访问内存映射设备获取它。 ..
发布时间:2017-04-17 23:15:23 服务器开发

编译时Xcode总线错误

我的iPhone应用程序编译很好,然后突然,它开始无法编译,出现错误: GCC 4.2错误内部编译错误:总线错误10 它对模拟器编译正常,但不会构建到设备。我试过似乎一切,没有什么工作。没有我可以发布的堆栈跟踪。此外,代码太长,无法粘贴所有这里,因为我不能确定问题是什么(再次,没有堆栈跟踪)。 如何 编辑:我知道我之前尝试过,但将编译器设置为GCC而不是LLVM GCC成功 ..

如何获得“总线错误”?

我很努力地得到一个总线错误。 一种方式是错位访问,我已经尝试了 此处 和 这里 ,但没有错误 - 程序执行得很好。 产生总线错误? 解决方案 总线错误只能在硬件平台上调用: 需要对齐访问, 不要通过执行两个对齐的访问并合并结果来补偿未对齐的访问。 您可能无法访问此类系统。 ..
发布时间:2016-10-23 22:17:43 C/C++开发

如何获得“总线错误”?

我很努力地得到一个总线错误。 一种方式是错位访问,我已经尝试了 此处 和 这里 ,但没有错误 - 程序执行得很好。 产生总线错误? 解决方案 总线错误只能在硬件平台上调用: 需要对齐访问, 不要通过执行两个对齐的访问并合并结果来补偿未对齐的访问。 您可能无法访问此类系统。 ..
发布时间:2016-10-23 22:11:17 C/C++开发

C ++ SPARC总线错误

我想了解为什么我使用此代码遇到总线错误。 int main() { int p = 34; int * pp =(int *)((char *)& p + 1) cout ..
发布时间:2016-10-23 21:35:54 C/C++开发

我觉得串约总线错误的困惑(C)

我觉得混淆互换两个人物在一个字符串C. 它工作得很好,当我把它设置为一个数组: 字符strBase [8] =“acbdefg”; 在这种情况下,我可以换任何字符。 但它触发总线错误,当我将它设置为一个字符串: 的char * strBase =“acbdefg”; 非常感谢任何人都可以解释它,或者给我一些暗示! 解决方案 这里的不同之处在于 的char * strBase =“ ..
发布时间:2016-08-18 13:33:59 C/C++

什么是总线错误?

什么是“总线错误”消息的意思,它是如何从一个段错误有什么区别? 解决方案 总线错误是在x86时下罕见的,当你的处理器,甚至不能尝试的内存访问请求发生,通常是: 使用与不符合其对齐要求地址的处理器指令。 访问不属于你的进程的内存时会出现分段错误,他们是非常常见的,通常的结果: 使用指针的东西,被释放。 使用未初始化的,因此假的指针。 用一个空指针。 溢出的缓冲区。 ..
发布时间:2016-08-17 20:38:47 服务器开发