【发布时间】:2014-10-13 17:21:53
【问题描述】:
我有一个 Android 本机服务器应用程序编译为分叉自身的平台特权模块。该模块还使用 Android 服务,例如 SurfaceFlinger。我需要为每个客户端创建一个沙盒进程。
Fork() 工作正常,父进程完全没有问题。但是在子进程中,当我尝试访问任何 Android 服务/资源时,我得到:
信号 11 (SIGSEGV),代码 2 (SEGV_ACCERR),故障地址 xxxxxxxx ... ...
/system/lib/libbinder.so (android::Parcel::ipcSetDataReference
...
/system/lib/libbinder.so (android::BpBinder::transact
NativeCrashListener(1203): 找不到 pid XXXX 的 ProcessRecord
- 即使在我尝试创建新客户端时也会发生这种情况,因此,没有使用任何以前创建的引用。
- NativeCrashListener 不知道我的子进程,因此,也许 ActivityManager 也不知道。
我查看了 Zygote 代码,但没有发现任何有用的东西。我可能错过了一些步骤或在子进程上调用了一些函数。有任何想法吗 ??? =)
【问题讨论】:
标签: android android-ndk