问题标签 [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 投票
1 回答
123 浏览

c - OS X 上合并排序实现中的总线错误 10

我正在尝试在 C 中实现合并排序。我编写的代码适用于 100,000 个数字的列表,但是当我在 1,000,000 的列表上运行它时,我得到一个“总线错误:10”。

错误发生在我评论“这里的总线错误”的地方。发生错误时,tmp_list_i == 65920 和 pws->merge_cursor == 32776。该函数merge合并任意数量的子数组,因为我也用它来合并不同线程排序的子数组。但是,即使我只使用一个线程(即一次只需要合并两个子数组时),总线错误也会发生。

有任何想法吗?

编辑:在堆而不是堆栈上分配所有内容时,我遇到了不同的问题。分配int this_part_num = list[this_part->merge_cursor];似乎没有正确评估,最终我得到一个信号错误:

0 投票
0 回答
728 浏览

r - R ffdfappend SIGBUS 错误

我有一个使用ffbaseandff包的 R 脚本。在 Windows 中,脚本运行良好。在 Linux 中(不同的机器,虽然 RAM 更高)它会因总线 (SIGBUS) 错误而崩溃。

Windows(版本 6.1.7601)会话信息:

  1. R 版本 3.1.0 (2014-04-10)
  2. 平台:x86_64-w64-mingw32/x64(64位)
  3. 附包:ffbase_0.11.3 ff_2.2-13 bit_1.1-12

Linux(Linux xenja 3.5.0-54-generic #81~precise1-Ubuntu SMP Tue Jul 15 04:02:22 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux)会话信息:

  1. R 版本 3.1.1 (2014-07-10)
  2. 平台:x86_64-pc-linux-gnu(64位)
  3. 附包:ffbase_0.11.3 ff_2.2-13 bit_1.1-12

R 脚本崩溃的点位于循环中,循环重复读取不同的文件内容并通过函数将它们连接到ff数据帧中。ffdfappend循环如下:

当我在 Linux 中运行 R 脚本时,在标准错误中写入以下内容(我故意用@@@截断了很长的行)

当我将 R 脚本附加到 时gdb,我在崩溃时收到以下相关消息:

gdb 回溯:

当我运行 R 脚本时,strace我在崩溃点得到以下相关信息:

任何有关如何进行的建议表示赞赏。

非常感谢您的宝贵时间。

-乔治。

0 投票
0 回答
272 浏览

c - Can't figure out Bus Error:10 when reading file

I am making a program that reads a text file and puts it into a linked list before carrying on with the other functions. The program also involves a thread function that operates every 5 seconds but the crash is happening at startup. Here is my code for the functions causing problems:

0 投票
1 回答
3505 浏览

c++ - C++“总线错误:10”和使用指针

我正在做一个数据结构练习,从昨天开始我就因为总线错误而被阻塞了,我认为这是因为我对内存做了坏事。但我无法弄清楚到底是什么。

这些是我为实践建立的要求:

  • 能够将产品(任何方式都可以)添加到列表中
  • 能够在当前位置检索列表中的产品(next、prev、moveToStart、moveToEnd……有光标指针,这里称为“实际”)
  • 我对检索到的产品所做的任何更改都应在数据结构中更新(即 list::retrieve(*product)、product->visits++)

这是我拥有的代码。关于 var 名称的道歉,我必须用西班牙语做,因此名称是西班牙语。

我已经删除了不必要的代码。这就是我使用它的方式(并且失败得很惨):

执行后,第一次执行 imprimir(“打印”)时,我得到的唯一结果是“总线错误:10”。插入工作没有错误(但那里也可能有问题)。

我的想法是将产品保存在节点内,并在返回时引用其位置,以便任何更改也反映在那里(例如,增加检索元素的查看或购买计数器,在阅读时反映更改稍后列出)。

如果有人能指出我在这里做的错误,我将非常感激。

谢谢!!

更新 这是一个可编译的示例

0 投票
1 回答
1057 浏览

c++ - 链接列表的总线错误(核心转储)?

我正在编写一个程序,允许用户输入要读取的人员数据库的文件名;然后,程序会在每个状态链接中创建状态对象的链接列表和人员对象的链接列表,以组织文件中的信息。

我知道链表部分有效,因为我能够直接在文件名中编码并打印出州列表和每个州的人员列表;但是,当我尝试允许用户输入文件名作为命令时,我收到了总线错误。当我在 gdb 中运行代码时,它告诉我的只是:

我什至没有一个行号可以离开!任何帮助将不胜感激。这是我的代码的命令和读取部分:

0 投票
0 回答
347 浏览

c - 总线错误:10 函数调用

我有 Bus error: 10 当我调用同一个函数两次或更多次时。例如,我有一个将单词更改为小写的函数,如果我多次调用它,就会出现总线错误。

如果我在评论中有函数调用,我没有错误。但:

如果我取消注释函数调用,这会给我总线错误。

你能帮我理解为什么吗?

strtolower 函数是:

0 投票
2 回答
3411 浏览

c - 使用 mmap 将整个文件复制到内存中

我想在 Ci 中使用 mmap 将整个文件复制到内存中,编写以下代码:

当我执行代码时,我得到了Bus error消息。接下来,我想迭代这个复制的文件并对其做一些事情。我怎样才能正确复制文件?

0 投票
1 回答
253 浏览

c - 将未对齐的数据复制到新位置后未发生 Solaris 总线错误

所以,长话短说:我的程序接收到一个代表网络数据包的原始字节(u_char)缓冲区。我正在尝试解析该数据包中的信息,并且正在使用系统定义的标头结构(ether_header、ip、ip6、tcphdr、udphdr)来解析。我已经在 Linux 和 AIX 上实现了它并且它工作,但由于某种原因,当我在 Solaris 上执行此操作时,我不断收到总线错误。

我获取数据的方式基本上只是将缓冲区的每个部分转换为结构之一并读取数据。例如,如果我有

然后我可以获得我需要的信息,例如:

通常,在 Linux 和 AIX 上这可以正常工作(某些结构在系统中具有不同的名称,但这不是重点),但是在尝试在 Solaris 上运行它时,当它到达iphdr->ip_v;after时,我不断收到总线错误struct ip *iphdr = (struct ip *) (buffer + sizeof(struct ether_header));。经过一番调查,我发现这是由于试图访问未对齐的内存造成的。这是有道理的,因为以太网报头的大小只有 14 个字节,因此 IP 报头在数组中不是字节对齐的。

我尝试解决此问题的方法是在尝试阅读之前将相关部分复制到单独的缓冲区中

这有效,但我不明白为什么。为什么 memcpy 在尝试访问相同的内存位置时不抛出总线错误?我不太喜欢我想出的解决方案,我正在努力更好地了解情况,这样我就可以想出别的办法。我可能错过了一块拼图吗?

0 投票
1 回答
1833 浏览

c - 在 C 中使用 memset() 时出现总线错误?

我正在制作一个使用共享内存和 mmap 在不同进程/线程之间进行通信的程序,但我在运行时不断收到总线错误。我已经隔离了错误,它似乎发生在 memset() 执行后。我是否错误地设置了内存映射?unsigned char *create_bitmap(unsigned long max)

命令行输出:

0 投票
1 回答
2698 浏览

linux - 写入共享内存时出现总线错误

我正在尝试在 Linux 系统上使用 POSIX 共享内存。但是当我尝试将数据复制到它时,我得到一个总线错误。这是代码:

是什么导致它崩溃?