问题标签 [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 回答
6608 浏览

fortran - 程序收到信号 SIGBUS:访问内存对象的未定义部分

我有这个简单的 Fortran 代码和一个函数,我在主程序中明确提供了一个参数。代码如下:

它可以编译,但是在运行时会产生以下错误:

任何想法可能导致错误?我使用 gfortran 编译我的代码。

0 投票
1 回答
720 浏览

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

我有两个要存储在堆栈上的寄存器 w1 和 w2。我想将完整的单词 w1 和 w2 的一半存储到堆栈中。这是我的实现:

在编译时,第一条指令运行良好,但第二条指令引发总线错误。我知道这是一些对齐问题,但我无法正确理解为什么会这样?

我正在为 ARMv8(64 位)架构进行编译。

0 投票
2 回答
2303 浏览

c - 写入映射数据时出现总线错误

上学期我第一次做这个项目时,代码运行良好。现在,当正在写入要在进程之间共享的 mmapped 内存时出现总线错误,我不确定它为什么不再工作。

0 投票
0 回答
287 浏览

c++ - OS X:g ++编译的程序得到总线错误,而clang编译没有

我正在研究Kevin Beason 的 smallpt

该程序运行良好clang-omp++ smallpt.cpp

但它在以下情况下并不顺利g++ -fopenmp smallpt.cpp

  1. 重复警告(编译成功):

/var/folders/j_/5w2s7bwx4zl9r_m976qpmpcc0000gn/T//ccEDNQ2r.s:612:11:注意:将部分名称更改为“__text”.section __TEXT,__textcoal_nt,coalesced,pure_instructions ^ ~~~~~~~~~~~~~~ ~~

/var/folders/j_/5w2s7bwx4zl9r_m976qpmpcc0000gn/T//ccEDNQ2r.s:1571:11:警告:“__textcoal_nt”部分已弃用

  1. bus error每次我启动时都会关闭程序:

渲染(4 个超级样本) 0.39%[1] 21811 总线错误 ./smallpt

当我评论核心线(线279)时:

SingleRay = SingleRay + radiance(SRay(Camera.m_Origin+RandDir * Scale, RandDir.normalize()), 0) * (1.0/SampleNum);

程序在没有bus error(并产生暗图像)的情况下完成。

我没有看到任何非法内存访问,它有什么问题,我该如何修复它(在 中g++)?


我替换erand48()为自定义一个。(可能无关紧要)

0 投票
1 回答
580 浏览

machine-learning - 是什么导致 Caffe 抛出总线错误

对于我一直在运行的实验,Caffe 一直在崩溃。我的实验涉及使用 AlexNet 模型在相同数据的不同子集上训练网络。对于每个试验,我为该特定数据子集生成一个 LMDB,然后修改我的网络 .prototxt 以匹配参数。对于 40 多次试验,我没有任何问题。然而,一项特定的试验在 227 次训练迭代后始终崩溃。给出的错误只是“总线错误(核心转储)”。无论我是在 GPU 还是 CPU 上进行训练,都会发生这种情况。搜索没有产生任何其他有此错误的人的结果。显然这是某种内存寻址错误。我正在使用具有 64GB RAM 和 12GB VRAM 的 Nvidia DIGITS 盒子。系统监视器显示我正在使用系统的全部内存。如果可能有帮助,我可以提供我的 prototxt。但是,数据集太大,无法上传(>20GB)。

I1128 12:50:01.558748 20000 solver.cpp:228] 迭代 227,损失 = 5.8273
I1128 12:50:01.558786 20000 solver.cpp:244] 训练净输出 #0:损失 = 5.8273(* 1 = 5.8273 损失)
I1128 12 :50:01.558796 20000 sgd_solver.cpp:106] 迭代 227,lr = 0.001 总线错误(核心转储)

根据这个问题,我正在使用的现代英特尔机器上不存在总线错误。什么可能导致这个问题?

0 投票
1 回答
481 浏览

c++ - OpenGL getShaderInfoLog 总线错误 10

当我运行以下代码(或我尝试过的任何变体)时,我得到一个总线错误。它编译得很好。

我在 Mac OSX 上运行它。如果 glGetShaderInfoLog 被注释掉,它工作正常(虽然 glGetProgramInfoLog 会导致相同的错误)。这是崩溃报告中的一些重要信息。

异常类型:EXC_BAD_ACCESS (SIGBUS)

异常代码:0x000000010cd5c0f0 处的 KERN_PROTECTION_FAILURE

异常说明:EXC_CORPSE_NOTIFY

终止信号:总线错误:10

终止原因:命名空间 SIGNAL,代码 0xa

终止进程:exc 处理程序 [0]

0x10cd5c0f0 附近的 VM 区域:

--> __TEXT 000000010ccc4000-000000010cd5f000 [ 620K] rx/rwx SM=COW /Users/USER/*

__DATA 000000010cd5f000-000000010cd64000 [ 20K] rw-/rwx SM=COW /Users/USER/*

0 libsystem_platform.dylib 0x00007fffcc50fefc _platform_memmove$VARIANT$Haswell + 92

1 GLEngine 0x00007fffbbeda274 gleGetString + 52

2 GLEngine 0x00007fffbbe22d20 glGetShaderInfoLog_Exec + 141

3 程序 0x000000010cd357af 着色器::validate() + 127

4 程序 0x000000010cd35575 着色器::compile() + 1621

5 程序 0x000000010cd349ed 程序::link() + 45

6 程序 0x000000010cd3235e 对象::对象(char*, char*, char*, char*) + 222

7 程序 0x000000010cd32c65 对象::对象(char*, char*, char*, char*) + 53

8 程序 0x000000010cd2e7c0 主要 + 4576

9 libdyld.dylib 0x00007fffcc2ff255 开始 + 1

0 投票
1 回答
290 浏览

bus-error - 大量的大页面导致总线错误

我试图dpdk timer通过设置 512 个 2MB 大页面来运行应用程序,但应用程序因以下错误而崩溃

EAL:检测到 4 个 lcore

EAL:探测 VFIO 支持...

总线错误(核心转储)

如果我将数量减少hugepages到 256,它可以正常工作。我想知道这里可能是什么问题。这是我的cpu信息

处理器:0
vendor_id:GenuineIntel
cpu 系列:6
型号:26
型号名称:Intel(R) Core(TM) i7 CPU 950 @ 3.07GHz
步进:5
微码:0x11
cpu MHz:2794.000
缓存大小:8192 KB
物理 ID:0
兄弟:4
核心 id:0
cpu 核心:4
apicid:0
初始 apicid:0
fpu:是
fpu_exception:是
cpuid 级别:11
wp:是
标志: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc monitor ds_perf pni dtest4 tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt lahf_lm ida dtherm tpr_shadow vnm i flexpriority ept vpid 错误:
bogomips:5600.00
clflush 大小:64
cache_alignment:64
地址大小:36 位物理,48 位虚拟
电源管理:

处理器:1
vendor_id:GenuineIntel
cpu 系列:6
型号:26 型号名称:Intel(R) Core(TM) i7 CPU 950 @ 3.07GHz
步进:5
微码:0x11
cpu MHz:2794.000
缓存大小:8192 KB
物理 ID:0
兄弟: 4
核心 id : 1
cpu 核心 : 4
apicid : 2
初始 apicid : 2
fpu : 是
fpu_exception : 是
cpuid 级别 : 11
wp : 是
标志: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc monitor ds_perf pni dtest4 tm2 ssse3 cx16 xtpr pdcm sse4_1 sse4_2 popcnt lahf_lm ida dtherm tpr_shadow vnm i flexpriority ept vpid 错误:
bogomips:5600.00
clflush 大小:64
cache_alignment:64
地址大小:36 位物理,48 位虚拟
电源管理:

这是我的 meminfo

MemTotal:24679608 kB
MemFree:24014156 kB
MemAvailable:23950600 kB
缓冲区:3540 kB
缓存:31436 kB
SwapCached:0 kB
Active:21980 kB
Inactive:22256 kB
Active(anon):10760 kB Inactive
(anon):2940 kB
: 11220 kB
非活动(文件): 19316 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 32 kB
回写: 0 kB
AnonPages: 9252 kB
Mapped: 11912 kB
Shmem: 4448 kB
Slab: 27712 kB
SReclaimable: 11276 kB
SUnreclaim: 16436 kB
KernelStack: 2672 kB
PageTables: 1000 kB
NFS_Unstable: 0 kB
Bounce: 0 kB WritebackTmp
: 0 kB
CommitLimit: 12077660 kB
Committed_AS: 137792 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 0 kB
VmallocChunk: 0 kB
HardwareCorrupted: 0 kB
AnonHugePages: 2048 kB
CmaTotal: 0 kB
CmaFree: 0 kB
HugePages_Total: 256
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
大页面大小:2048 kB
DirectMap4k:22000 kB
DirectMap2M:25133056 kB

0 投票
3 回答
1054 浏览

c++ - 在堆上分配内存的总线错误

我在这样的代码中有总线错误:

几次效果很好,打印出来:

然后它失败了:

它是在 Solaris OS (C++ 5.12) 上构建和运行的,Linux (gcc 4.12) 和 Windows (msvc-9.0) 上的相同代码运行良好。

我们可以看到:

  1. 内存是由 new[] 在堆上分配的。
  2. 内存是可访问的(我们可以逐字节读取)
  3. 内存完全包含应有的内容,而不是损坏的内容。

那么总线错误的原因可能是什么?我应该去哪里看?

UPD: 如果我最后 memcpy(...) locationoriginal_var它可以工作。但是问题出在*((const int*)location)哪里?

0 投票
1 回答
791 浏览

c - 为什么此代码会产生总线错误?(C 语言)

我正在编写一个给我以下错误的函数:

我必须查找总线错误是什么,显然是当一个函数试图访问一个不存在的地址时?我一直在查看这个相对较短的函数,但看不到发生了什么。

这是调用它的函数。

以下是一些已被调用的其他函数。我不认为它们那么重要,因为代码似乎在到达它们之前就崩溃了,但我可能是错的。

因为我似乎正在编写一个用于通过测试的函数,所以您可能正确地猜到这是一个家庭作业。

编辑:所以,一个问题是我正在使用*data[i]我应该使用的地方(*data)[i]。但是,我现在收到此错误:

0 投票
2 回答
2993 浏览

c - 总线错误:C 程序中的 10,无法找出原因

我是 C 的新手,并且在一个小时的大部分时间里一直试图弄清楚如何修复这个错误。它编译但在运行时我得到

总线错误:10。

如果有人能引导我了解为什么会发生这种情况以及我做错了什么,我将不胜感激。