我在添加以下代码后遇到了崩溃:
class AudioPolicyService :
public BinderService<AudioPolicyService>,
public BnAudioPolicyService,
public IBinder::DeathRecipient
{
friend class BinderService<AudioPolicyService>;
//[....]
class TestingClz : public virtual RefBase {
public:
TestingClz (String8 name, const wp<AudioPolicyService>& service){}
virtual TestingClz() {}
};
sp<TestingClz> mTestingClz;
} // End of class AudioPolicyService
//[....]
void AudioPolicyService::onFirstRef()
{
...
TestingClz = new TestingClz(String8("test"), this);
}
我遇到了崩溃:
02-03 22:21:17.971 367 367 F DEBUG:修订:&#39; 0&#39;
02-03 22:21:17.971 367 367 F DEBUG:ABI:&#39; arm&#39;
02-03 22:21:17.971 367 367 F DEBUG:pid:981,tid:981,姓名: mediaserver&gt;&gt;&gt; / system / bin / mediaserver&lt;&lt;&lt;
02-03 22:21:17.972 367 367 F DEBUG:信号11(SIGSEGV),代码2 (SEGV_ACCERR),故障地址0xb6e594d8
02-03 22:21:17.976 367 367 F DEBUG:r0 b6e594d8 r1 becfa970 r2 00000000 r3 b6e4d812
02-03 22:21:17.976 367 367 F DEBUG:r4 b5fd6a1c r5 becfa970 r6 becfa96c r7 b5fd69d4
02-03 22:21:17.976 367 367 F DEBUG:r8 becfa968 r9 b6ad8e2d sl 00000000 fp becfabbc
02-03 22:21:17.976 367 367 F DEBUG:ip b6b0ec24 sp becfa958 lr b6b03849 pc b6b03604 cpsr 80010030
02-03 22:21:17.980 367 367 F DEBUG:
02-03 22:21:17.980 367 367 F DEBUG:backtrace:
02-03 22:21:17.980 367 367 F DEBUG:#00 pc 0000e604 /system/lib/libutils.so(android :: RefBase :: weakref_type :: incWeak(void) 常量*)+ 11)
02-03 22:21:17.980 367 367 F DEBUG:#01 pc 0000e845 /system/lib/libutils.so(android :: RefBase :: createWeak(void const *) 常量+ 6)
02-03 22:21:17.980 367 367 F DEBUG:#02 pc 000060ad /system/lib/libaudiopolicyservice.so
02-03 22:21:17.980 367 367 F DEBUG:#03 pc 0000620b /system/lib/libaudiopolicyservice.so
02-03 22:21:17.980 367 367 F DEBUG:#04 pc 0000232d /系统/ bin中/媒体服务器
02-03 22:21:17.980 367 367 F DEBUG:#05 pc 00001b8f /系统/ bin中/媒体服务器
02-03 22:21:17.981 367 367 F DEBUG:#06 pc 00017359 /system/lib/libc.so(__libc_init + 44)
02-03 22:21:17.981 367 367 F DEBUG:#07 pc 00001e0c /系统/ bin中/媒体服务器
02-03 22:21:18.088 367 367 F DEBUG:
02-03 22:21:18.088 367 367 F DEBUG:Tombstone写给: /数据/墓碑/ tombstone_01
将地址映射到行后,它指向我的更改行。
SEGV_ACCERR
表示映射对象的无效权限。我想知道它是否是由android mprotect引起的?因为它看起来不像是正常的崩溃。
有没有人经历过同样的失败?非常感谢!
更新: 好吧,如果我进行整个构建并刷新系统和启动图像,似乎不会发生崩溃。 那么,为了改变Android原生服务,我们总是需要一个完整的构建?
天龙
答案 0 :(得分:0)
结果: 如果我进行整个构建并闪存系统和启动映像,似乎崩溃不会发生。 但是,我仍然想知道是否有一些保护机制来记录和验证运行时的类大小。即使我们替换.so lib。似乎二进制地址映射仍未更新。
感谢您提供更多信息!