问题标签 [sigbus]
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.
ios - 如何理解这次崩溃?: SIGBUS BUS_ADRALN
那在堆栈跟踪中,我不明白这个错误:
崩溃有时会发生,我不知道它会发生什么样的动作。
我怎样才能理解这个问题并能解决我的问题?
c++ - NPAPI:需要两次 RetainObject() 处理程序,否则 SIGBUS
在我的 NPAPI 插件中,一些对象具有可读可写的“onEvent”属性,并在某些事件上调用。
我的 Javascript 代码中的内容如下所示:
在插件的 C++ 端,我有这样的代码:
奇怪的是,我一直在为一个 SIGBUS 问题苦苦挣扎,一旦我NPN_RetainObject()
在 getter 中添加了,正如你在上面看到的,一切都很好。
我没有在Mozilla 文档中找到需要它的声明,在 Taxilian关于 NPAPI的很棒的文档中也没有发现。
我不明白:当浏览器请求我保留的属性时,为什么我必须第二次保留它?
我应该在调用InvokeDefault()
它时保留该功能吗?但是,为什么?我已经说过我想保留它。
是在不告诉我的情况下做getProperty()
或InvokeDefault()
实际上做的吗?NPN_ReleaseObject()
ios - NSKeyedUnarchiver SIGBUS BUS_ADRALN 崩溃
我使用以下通常效果很好的方法在 NSFileWrapper 中解压缩数据:
但是,我偶尔会遇到线路 SIGBUS 崩溃unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
。我猜这种类型的异常没有被我的异常处理程序捕获?我该如何处理此类异常以及导致它们的原因?
这是 Crashlytics 崩溃报告:
c++ - 在 C 和 C++ 中捕获 SIGBUS
我想赶上 SIGBUS,我的代码如下所示:
当我使用 printf 时,它可以通过调用 catch_sigbus 来捕获,但是当我使用 cout 时,它不能。所以有人可以帮助我吗?我在 Ubuntu 12.04 上运行。
我有另一个问题。当我赶上 SIGBUS 时,我怎样才能得到 si_code?BUS_ADRALN/BUS_ADRERR/BUS_OBJERR
c++ - 在什么情况下,将基类转换为派生类的 c 风格转换可能会导致崩溃
我正在调查随机崩溃(SIGBUS),并试图找出可能破坏调用崩溃方法的指针的原因。我发现这个指针是使用 C++ 代码中的 C 风格转换从它的基类转换而来的。所以,我想知道在什么情况下这样的强制转换可能会导致崩溃,并尝试了解它是否是我的问题的根本原因。
c - Linux 中的结构分配在 ARM 中失败,但在 x86 中成功
我注意到了一些非常奇怪的事情。说我定义了以下结构
这个结构包含在我从网络收到的一个大缓冲区中。
以下代码适用于 x86,但我SIGBUS
在 ARM 上收到。
用 memcpy 替换指针取消引用解决了这个问题。
在 ARM 中搜索 SIGBUS 让我发现这与内存对齐方式有关。
有人可以解释发生了什么吗?
linux - SIGBUS 在从 mincore 识别的 RAM 中的 mmap ed缓冲区执行 memcpy 时
我将一个块映射为:
mapAddr = mmap((void*) 0, curMapSize, PROT_NONE, MAP_LOCKED|MAP_SHARED, fd, curMapOffset);
如果这没有失败(mapAddr != MAP_FAILED)
,我将 mincore 查询为:
err = mincore((char*) mapAddr, pageSize, &mincoreRet);
找出它是否在 RAM 中。如果它在 RAM 中(err == 0 && mincoreRet & 0x01),我再次映射它以读取:
copyAddr = mmap((void*) 0, curMapSize, PROT_READ, MAP_LOCKED|MAP_SHARED, fd, curMapOffset);
然后我尝试将其复制到我的缓冲区中:
memcpy(data, copyAddr, pageSize);
一切正常,除了在最后一个 memcpy 中偶尔我得到 SIGBUS。当我在失败时检查/proc/ /smaps时,我注意到它的 Rss 以及 Locked 字段为 0,如下所示:
有什么想法吗?这发生在内核版本为 3.5.0-36 的 ubuntu 12.0.4 上。
c - mmap 总线错误写入超过 2Gb 的 MAP_SHARED 文件
我正在尝试使用 MAP_SHARED 创建内存映射文件。当文件大小达到 2gb 时,我遇到了问题。下面粘贴的代码是我正在使用的(作为测试)。
在上面的代码中,当文件中的偏移量达到 2gb 时出现总线错误。这些是我尝试过的事情:
- 如果我将 NUM_FILES 更改为 16 并将 len 更改为 1GB,我没有任何问题。
- 如果我删除写入内存的 for 循环(仅 mmap),程序不会崩溃(即使 len 远大于 2gb)b/c linux 内核实际上不会将页面映射到文件,直到你读/写到映射的区域。
- 如果我将 mmap 调用从 MAP_SHARED 更改为 MAP_ANON(取消注释第一个 mmap 调用并注释掉第二个)并且未链接到文件,则没有问题(即使写入成功)。
- /dev/shm (30gb) 上有足够的空间,我这里只用了 16gb。
- 我不必写入每个分配的字节。我只需要写入最后一个 mmap'ed 区域(将内部 for 循环移到外面),如果偏移量 + BLOCK_SIZE >= 2gb 则出现总线错误。
- 我已经在 Ubuntu 13.10 和 CentOS 6.4 上尝试过,两者都有同样的问题。
我想知道这是否是linux内核中的问题?有没有人尝试过使用大于 2gb 的 MAP_SHARED 映射单个文件并成功使用(读/写)它?
java - Android Fatal Signal 7 (SIGBUS)
I'm getting a few SIGBUS (7) and SIGSEGV (11) crashes that I am having difficult tracking down.
The thread that appears to be causing the crash is primarily used for loading images to be displayed which makes sense since the logs indicate something failing with the SkJPEGImageDecoder.
I re-use memory for Bitmaps
in accordance with this guide
Could it have something to do with that?
LogCat output:
As per this document, it appears that SIGBUS 7 is a data misalignment issue, and SIGSEGV 11 is a write to inaccessible memory.
android - 在服务中第二次运行 startActivity 后,我的应用程序开始崩溃并出现异常、Sigbus 或 Sigsegv 错误
我正在开发一个应用程序并且在理解或找到我遇到的错误的原因时遇到了很大的问题。完整代码可在 Github 上找到:https ://github.com/lordgreg/Sfen 。有问题的行是 ALWAYS startActivity(intent) 围绕第 608 行(https://github.com/lordgreg/Sfen/blob/master/app/src/main/java/gpapez/sfen/BackgroundService.java)
这是我重现错误的方法:
- 创建新的配置文件,它可以有一个“动作”来创建新的快捷方式(小部件) - 它实际上将 Intent 保存为 Gson 字符串(由于 Uri,我不得不使用(反)序列化)。
- 我可以根据需要多次运行此配置文件(单击它只会运行所有操作),并且意图将毫无问题地运行。
- 现在,有一些“事件”在特殊条件下触发,除了运行特定的配置文件(与再次单击配置文件相同)之外不做任何其他事情。这行得通。事件的条件得到满足,我发送广播 EVENT_ENABLED,接收者得到它,它启动我们的函数,触发配置文件,运行动作和 sendActivity 以它从 Gson 获得的意图工作。这是完美的。
- 问题来了,当我关闭应用程序并重新打开它时。
- 然后,接收器向我发送一个信号以重新运行事件(当我单击它时它起作用并且如果我手动单击配置文件则起作用)。
这是错误的一个示例:
或其他:
发生这种情况时,我的应用程序变得无法使用,我必须进入系统设置并清除应用程序本身的数据。之后,我可以重新运行,再次创建配置文件,创建显示配置文件的事件,我可以触发我的快捷操作,它只运行此代码:
显示错误的行
正是:
如果我然后尝试重新打开应用程序,我总是会得到上面的异常。现在是转折点......崩溃后等待一段时间(+ 1分钟)重新打开应用程序没有问题,我可以继续打开所有内容,直到下一次崩溃。
请帮助我了解为什么会发生这种情况......我什至愿意付钱给发现并解决这个谜团的人(非法参数异常和错误接收广播意图都导致行 startActivity(intent))!这是我唯一可以表达我对帮助我的感激之情!
谢谢!