问题标签 [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.
c - C - K&R 练习 2.4 - 为什么会出现总线错误?
为什么我会收到总线错误?有问题的行在代码中被标记。
练习 2-4。编写一个替代版本的squeeze(s1,s2),删除s1 中与字符串s2 中的任何字符匹配的每个字符。
c - 反向访问时,排序的双向链表会出现总线错误
我有一个通用的双向链表实现,并且正在插入。插入后,我尝试从脚开始向后迭代列表,但出现总线错误。为了测试代码并尝试隔离我在其中添加了打印语句的错误(这不是最好的调试过程,但有助于一目了然地告诉我我的代码在做什么)。为了尝试查看问题出在哪里,每次插入后,我都会询问列表中倒数第二个元素的值。我总是按 5、2、10、80、4、1、7、8 的顺序插入元素,并且在将 4 插入列表后,它总是会阻塞。程序的完整代码如下。
列表定义非常基本,只是
您可以根据需要更改函数定义,而 safe_malloc 只是 malloc 的一种快捷方法,如果您自己测试代码,您可以替换它。cmp_fptr 是一个函数指针,指向一个简单的“大于 b”方法。
编辑:更新行
是导致程序停止的原因,我使用了调试器。将项目插入列表时,它会在多次插入后停在该行。以下是我现在正在使用的测试工具代码。
还有更多内容,但这就是我现在正在测试的全部内容。
感谢列表-> 大小提示,我不太确定我最初在想什么。
edit2:感谢 safe_malloc 错误发现,我认为这是问题的原因,但我仍然得到同样的错误。调试器在插入 4 后给了我一个 sigsegv(分段错误),它到达了我要求 list->foot->prev->data 的那一行(见上文)。
最终编辑:通过为节点数据正确分配足够的空间来解决问题。感谢那些帮助过的人。我的代码中还有其他问题,但这最适合另一个问题,以及不同的代码片段。
iphone - 编译时 Xcode 总线错误
我的 iPhone 应用程序编译得很好,然后突然之间,它开始无法编译,并出现以下错误:
LLVM GCC 4.2 错误内部编译错误:总线错误 10
它为模拟器编译得很好,但它不会构建到设备上。我已经尝试了看似一切的东西,但没有任何效果。没有我可以发布的堆栈跟踪。此外,代码太长,无法在此处粘贴所有代码,因为我无法确定问题出在哪里(同样,没有堆栈跟踪)。
我怎样才能缩小这个范围?
编辑:我知道我之前尝试过这个,但是将编译器设置为 GCC 而不是 LLVM GCC 成功编译了应用程序。我希望我知道 Xcode 会出现这种行为的原因,但现在我只能将其归结为幽灵。
c++ - 在 C++ 和 Linux 中跟踪总线错误/段故障时遇到问题
我有一个程序可以处理在本地网络上以 UDP 数据包广播的神经尖峰数据。
我当前的程序有两个线程,一个 UI 线程和一个工作线程。工作线程只是侦听数据包,解析它们并使它们可用于 UI 线程以进行显示和处理。我目前的实现工作得很好。但是由于多种原因,我试图使用面向对象的方法在 C++ 中重新编写程序。
当前工作程序使用以下命令初始化第二个线程:
这是getNetSpike
新线程调用的函数:
现在,在我新的 OO 版本的程序中,我以几乎相同的方式设置了第二个线程:
但是,因为pthead_create
需要一个指向 void 函数的指针而不是指向对象成员方法的指针,所以我需要创建这个简单的函数来包装该SpikePlot.getNetworSpikePacket()
方法
然后调用该getNetworkSpikePacket()
方法:
两个实现的代码几乎相同,但第二个实现(OO 版本)在读取第一个数据包后因 SegFault 或 BusError 而崩溃。使用printf
我已经缩小了导致错误的行:
对于我的一生,我无法弄清楚为什么它会导致我的程序崩溃。
我在这里做错了什么?
更新:我定义spikeBuff
为类的私有成员:
然后在 SpikePlot 构造函数中我调用:
并设置:
更新 2:好的,我的索引变量发生了一些非常奇怪的事情。为了测试他们的理智,我改为getNetworkSpikePacket
:
我得到以下输出到控制台:
此方法是我更新它们的值的唯一方法(除了我将它们设置为 0 的构造函数)。这些变量的所有其他用途都是只读的。
c++ - MPI_Finalize 中的总线错误
我正在为并行计算类编写 MPI 程序。我已经让代码工作了,它输出了正确的结果,但是当我尝试使用多个进程调用 MPI_Finalize 时,我得到了一个总线错误。我通过 Eclipse 中的 PTP 环境在 OS X 上运行它。错误如下:
这是我的代码的主要功能。我确信这里有一些不好的 C++ 实践(我已经多年没有使用它并且它是自学的),但它确实输出了正确的值。如果我需要发布文件的其余部分,我可以这样做。如果有明显的错误,我只是不想让这个问题成为一个大问题。
编辑:我已经将问题缩小到我的 doIteration 函数中的某个地方。我只有在调用该函数时才会收到错误消息,并且只有在我运行多个进程时才会出现错误。这是我的 doIteration 函数。它应该用自身及其四个邻居的最大值替换不在矩阵边缘的矩阵的每个值。一旦整个更新完成(因此使用数组 temp),应该更新这些值。
python - web.twisted 的神秘“总线错误”(代码在一台服务器上运行,而在另一台服务器上运行)
我只是想一一展示一些数据库的元素:
在一个系统上(Linux hh 3.0.0-16-generic-pae #28-Ubuntu SMP Fri Jan 27 19:24:01 UTC 2012 i686 i686 i386 GNU/Linux)一切正常。在另一个系统上(Linux localhost 2.6.38-8-server #42-Ubuntu SMP Mon Apr 11 03:49:04 UTC 2011 x86_64 x86_64 x86_64 GNU/Linux)
我得到以下信息:
我认为两台服务器之间的唯一区别是(除了 x32 / x64 形式)是第二台服务器上有类似的扭曲过程。这个过程做一些重要的事情并且真的不想终止或以任何其他方式干扰它只是为了检查我的测试代码是否有效。
c - Linux 中的 TCP 总线错误
我有一个客户端-服务器应用程序,并且正在使用 tcp 套接字。根据来自客户端的 send() 请求,我总是收到总线错误并且程序终止。现在我做了一点维基百科搜索,文章将总线错误归因于(不存在的物理地址、未对齐的内存访问以及访问已被截断的 mmapped 文件)。我发送的结构只有三个整数和一个枚举实例,所以我认为对齐不是问题。以下是相关的代码片段:
在主要:
在服务器端:
提前致谢。
c - 仅在 Solarix Unix Box 上运行时出现总线错误
它在我的 Linux 机器(Ubuntu)以及 x86 和 x64 的其他 linux 机器上编译并运行,但在 SunOS Generic_142900-02 sun4u sparc unix 机器上,它在线崩溃
出现总线错误,另外,当我用 GCC -G 编译它时,GDB 找不到任何调试符号
这是代码:
c++ - 总线错误:10 需要更多索引
我正在使用 6 个整数数组,每个数组包含 256 个元素。很标准,我想。
我面临的问题是,当我将所有这些数组初始化为全 0 时,我得到一个总线错误:10。每次在我的循环的第 240 次迭代中。
这是我的头文件...
这是发生问题的功能......
所以每次我到达这部分代码时,程序都会在 i=240 处崩溃。抱歉,为了更好地指定,它发生dashB[i] = 0;
在行中
这让我无休止地烦恼,我看不到我在哪里超出了我的数组范围,而且我并没有在动态内存方面使用远远超出我理解的能力。
任何帮助,都会有所帮助。
c - 如何将 malloc 用于二维结构数组?(总线错误:10)
我正在尝试实现数独求解器。为此,我使用如下所示的结构来表示数独板上的单元格。然后我声明这些结构的 9x9 数组来表示板。
细胞结构:
然后,我将一个结构数组声明为:
我的问题是,当我尝试在数组中输入一个值时(即 board[2][2].value = getchar();),有时它会起作用,而其他时候我会收到此错误:
我不太确定这意味着什么...... “总线错误:10”与分段错误有何不同?
我正在使用 gcc,只是在 vim 中编辑。我的感觉是,我需要为这个数组动态分配内存。现在,我了解了如何使用 malloc 为二维数组分配内存,如下所示:
但是我在为二维结构数组实现内存分配部分时遇到了麻烦。
会是这样吗?
我担心这个“ sizeof(struct cell) ”没有正确分配它应该的内存量。
任何帮助将不胜感激!我对 C 相当陌生(C++ 是我的母语),我已经大量使用嵌入式 C,但我正在努力更好地掌握整个语言。
详细\深入解释的奖励积分!
谢谢!
编辑 好的,所以感谢大家的好建议,我还没有实现任何动态内存分配,但是,根据要求,这里是产生总线错误的代码:
如您所见,我已将 value 的数据类型更改为 int 以匹配 getchar() 返回类型。但是我的代码仍然会产生奇怪的运行时错误/结果。例如,在 setup_board 的 while 循环的第一次迭代中,我可以输入 say Row:1, Col:1, Value:5,然后当我输入 'n' 退出时,board 应该在上面打印 5左角,但事实并非如此。调用 initialize_board() 后,打印的矩阵仍处于其状态。
输出:
另外,如果我输入其他矩阵坐标,那就是当我得到总线错误:输出:
任何关于如何清理丑陋的双重 getchar() 业务的建议也将不胜感激。
谢谢大家!
编辑二号 问题出在那些 getchar() 的.... 我没有意识到他们返回一个整数 ASCII 码来表示数字而不是实际数字本身。这是我为修复它所做的工作:
感谢大家的帮助和投入,我将实施你们提出的许多建议,并从这个问题中学到了很多东西!
编辑三号
最后一个问题!
虽然我最初的问题已经解决,但是否有人对通过动态分配内存来实现矩阵是否更好有强烈的意见或推理?
我想,我会保持原样,因为它可以工作,但由于矩阵相当大,动态分配会更好的编程实践吗?