“由信号(11)终止的过程”是否始终与NDK相关?

时间:2013-02-02 18:43:52

标签: android android-ndk sigsegv

我正在跟踪项目中的错误。有时,我的应用程序被杀死,在logcat中总是有以下行:

D/Zygote ( xx): Process xxxx terminated by signal (11)

我一直在搜索此错误,我总是找到NDK的提及。

我正在开发一个使用第三方C库的项目。我不太了解库,但我可以告诉你它与服务器进行一些网络通信。在我的项目中有几个Services,其中一些使用这个库。

所以我的问题是,这个错误总是意味着问题来自C库吗?

如果没有,你能否给我一些Android中的Java代码示例,这也可能导致此错误?

感谢。

编辑:顺便说一下,在logcat输出中,前一行之前没有堆栈跟踪。

1 个答案:

答案 0 :(得分:1)

最有可能的是,SIGSEGV之前已在您的日志中报告过。它可能比最终消息早一段时间。这是我日志中此类崩溃之一的实际快照:

01-29 16:00:39.124 F/libc    ( 3033): Fatal signal 11 (SIGSEGV) at 0x0000002c (code=1)
... many more ...
01-29 16:00:48.367 D/Zygote  (  116): Process 3033 terminated by signal (11)

你可以看到Zygote花了将近10秒的时间来报告收到致命信号后的过程终止。你的milage可能会有所不同。

SIGSEGV的实际原因可能在第三方C库中,或在Java中,或者您调用C库的方式。例如,请注意,在引发Java异常时禁止进行大多数JNI调用。