- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个 NDK 应用程序上市,并获得了关于 SIGILL
信号的 native 崩溃报告。 (我使用 google breakpad 生成 native 崩溃报告。)以下是详细信息:
armeabi-v7a
编译的, 支持 NEON。0x399cc
,信号是 SIGILL
,它在我的代码中。寄存器和反汇编:
r4 = 0x001d50f0 r5 = 0x001d50f0 r6 = 0x598e2a3c r7 = 0x00000000
r8 = 0x00000001 r9 = 0x001c22b0 r10 = 0x00000000 fp = 0x81216264
sp = 0x598e2a18 lr = 0x816399cb pc = 0x816399cc
0x000399c6 <_ZN8Analyzer15setExpAvgFactorEi+22>: blx 0x30508
0x000399ca <_ZN8Analyzer15setExpAvgFactorEi+26>: fconstd d16, #7
0x000399ce <_ZN8Analyzer15setExpAvgFactorEi+30>: vldr d17, [pc, #32] ; 0x399f2 <_ZN8Analyzer15setExpAvgFactorEi+66>
提供完整的源代码和汇编程序 here (很短,基本上是 2 行 C++。)
可以看到0x399cc
在fconstd
指令的中间。根据arm.com此指令已添加到 VFP-v3
中,(我认为)它应该适用于任何现代处理器。
可能发生了什么?地址位于指令的中间这一事实是否指向某处损坏的指针? (请注意,回溯非常有意义,所以这个函数并不是偶然被调用的。)还是其他原因?
最佳答案
好的,我明白了:NVIDIA Tegra 2 只有 16 个 64 位 GPU 寄存器,因此要定位它,您必须使用 -mfpu=vfpv3-d16
进行编译。有问题的指令使用寄存器 d16
,这“太多了”。 :(
这是对 NVIDIA 论坛的引用,其中一名员工提到了此限制:http://developer.nvidia.com/tegra/forum/optimal-performance-guidelines
关于android - Android NDK 代码中的 SIGILL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7102606/
当玩家四处走动时,我的服务器有时会崩溃。我尝试使用调试器运行它,服务器收到错误:程序收到信号 SIGILL,非法指令。 它显示 LogicHandler 中的第 59 行。这是函数运行。这是该函数:
我想使用 Sigil 将字体系列更改为嵌入式字体。我相信我已经在 CSS 中做好了一切。我在 Sigil 中导入了“1984”字体。 我已阅读本教程:http://www.pigsgourdsandw
我正在为我的安全类开发我的缓冲区溢出项目,我认为我已经正确设置了所有内容,但是当我运行它时我得到: Program received signal SIGILL, Illegal Instructio
我正在使用 NDK 和 GCC 将一些 C++ 代码移植到 Android。代码基本上运行。有一次,在 Eclipse 中调试时,调用 Dabbler::Android::Factory* pFact
在我学习 Elixir 的过程中,我正在尝试制作一个简单的符号来解析 csv。 我已经设法制作了一个印记来做到这一点,但是我找不到一种方法让它与特殊字符一起工作,例如 ; . defmodule Co
我的问题总结在标题中。当我调用方法 setHtml在 QtWebPageRenderer 的实例上,发出 SIGILL 信号,我的应用程序出现故障。 我知道这个问题是由糟糕的 Qt5 动态库引起的,但
这些都是有效的指令,直到 0x7fffffffdbe4 ,此时程序已经调用了退出系统调用。 gdb) x/20i $rip => 0x7fffffffdbb0: movabs rax,0x2
我有一个问题,我必须在两个战士之间的战斗中返回获胜者的名字。fighter类如下: class Fighter { private: std::string name; int health; int
我已经得到了答案,所以我只是发布这个,以防其他像我一样糟糕的编码员遇到这个问题。 (虽然有些黑魔法可能有人可以解释)。 我正在 Android 设备(Samsung Galaxy S7,尽管该问题很可
错误信号 4 SIGILL 对我来说是新的。当我查看墓碑文件并输入 int 他的地址时,我得到了 ??即 这是一些墓碑: *** *** *** *** *** *** *** *** *** ***
是否可以将枚举作为参数传递给可变参数函数?我正在尝试执行以下操作: GLenum ShaderManager::initialize() { GLuint program = loadShad
我正在尝试在 BeagleBone Black 上调试程序。在调试器之外,它会产生不正确的结果,但不会产生 SIGILL。它在调试器下也运行正常,没有断点。但是,它会在单步执行时生成带有断点设置的 S
我试图用动态生成的代码做一些讨厌的骇人听闻的事情,我希望操作系统在遇到未知操作码时向我发送一个 SIGILL。这会让我添加一层关于我的程序的元信息等等。 但是,对于我的小测试程序,操作系统似乎没有发送
我正在使用 Linux x86_64 机器来构建我的程序。我已将共享库链接到可执行文件。在我的项目中,我正在调用一个声明 vector 的函数函数内部。当该函数被调用时,我的程序被杀死。下面是通过GD
我正在尝试添加«€»作为«$»标量的别名,我认为使用俚语是这样做的。但是 perl6.doc 根本没有提到俚语。 我已阅读以下内容: https://perlgeek.de/en/article/mu
昨天,我发布了我的应用程序的新版本,今天我发现,很多从旧版本升级的用户都遇到了崩溃。 检查崩溃日志后,我仍然找不到问题所在,所以我来这里寻求帮助。 崩溃日志显示,未知线程崩溃,看起来应用程序尚未完成启
我收到以下代码的奇怪错误: #include #include #include inline static double myfma(double x,double y, double z)
我有一个 NDK 应用程序上市,并获得了关于 SIGILL 信号的 native 崩溃报告。 (我使用 google breakpad 生成 native 崩溃报告。)以下是详细信息: 我的应用是为
在我的应用程序中,我希望能够播放流式视频(通过 RTSP 协议(protocol))。我找到了开放的 RTSP 流:rtsp://red7blue.de/Primetime 并尝试播放它。但是我的应用
我编写了一个在 MIPS 32 位路由器上运行的小型 go 程序。我能够使用 go build 工具链在路由器上运行一个基本的 hello world 程序。 env GOOS=linux GOARC
我是一名优秀的程序员,十分优秀!