我在i.MX51主板上运行自定义android,并发现应用程序存在一个奇怪的问题。
我在应用程序(本机,使用NDK编写)的分段错误的logcat中记录了日志:
03-19 15:26:46.763 I/DEBUG ( 2234): pid: 2257, tid: 2257 >>> /usr/bin/powerMgr <<<
03-19 15:26:46.763 I/DEBUG ( 2234): signal 8 (SIGFPE), code 0 (?), fault addr 000008d1
即使在此之后,应用程序继续运行相同的PID(2257),我从logcat和ps命令确认。这可能吗 ?如果是,怎么??
答案 0 :(得分:1)
这不是分段错误(SIGSEGV
,信号11)。你有SIGFPE
信号8,可能是整数除零的结果。信号处理没有杀死进程,所以它只是继续执行。
许多ARM CPU缺少硬件除法指令,因此SIGFPE
显式地从软件除法功能中抛出。因此,您在“fault addr”中没有获得有意义的值。
对此的处理随着时间的推移而发生变化;更新版本的Android会更好一些。