2016-04-19 50 views
1

添加以下代碼後,我一直在經歷着崩潰:Android原生的libc信號11(SIGSEGV),碼2(SEGV_ACCERR),故障地址

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˚FDEBUG:修訂: '0'

02-03 22:21:17.971 367 367˚FDEBUG:ABI: 'ARM'

02-03 22:21: 17.971 367 3 67女性DEBUG:PID:981,TID:981,名稱: 的MediaServer >>> /系統/ bin中/媒體服務器< < <

02-03 22:21:17.972 367 367˚FDEBUG:信號11(SIGSEGV) ,代碼2 (SEGV_ACCERR),故障地址0xb6e594d8

02-03 22:21:17.976 367 367˚FDEBUG:R0 b6e594d8 R1 becfa970 R2 R3 00000000 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˚FDEBUG:R8 becfa968 R9 b6ad8e2d SL 00000000 FP becfabbc

02-03 22:21:17.976 367 367˚FDEBUG:IP b6b0ec24 SP becfa958 LR b6b03849 PC b6b03604 CPSR 80010030

02-03 22:21:17.980 367 367˚FDEBUG:

02-03 22:21:17.980 367 367˚FDEBUG:回溯:

02-03 22:21:17.980 367 367 F DEBUG:#00 pc 0000e604 /system/lib/libutils.so(android :: RefBase :: w eakref_type :: incWeak(無效 常量*)+ 11)

02-03 22:21:17.980 367 367˚FDEBUG:#01 PC 0000e845 /system/lib/libutils.so(機器人:: RefBase :: createWeak(無效常量*) 常量+ 6)

02-03 22:21:17.980 367 367˚FDEBUG:#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˚FDEBUG:#04件0000232d /系統/斌/媒體服務器

02-03 22:21:17.980 367 367˚FDEBUG:#05件00001b8f /系統/斌/媒體服務器

02-03 22:21:17.981 367 367˚FDEBUG:#06 PC 00017359 /system/lib/libc.so(__libc_init + 44)

02-03 22:21:17.981 367 367 F DEBUG:#07 pc 00001e0c /system/bin/mediaserver

02-03 22:21:18。088 367 367˚FDEBUG:

02-03 22:21:18.088 367 367˚FDEBUG:墓碑寫入: /數據/墓碑/ tombstone_01

映射地址到行之後,它指向的排除我的變化。 SEGV_ACCERR表示映射對象的權限無效。我想知道它是否是由android mprotect引起的?因爲它看起來不像一個正常的崩潰。 有沒有人遇到同樣的故障?非常感謝!

更新: 好的,看起來崩潰不會發生,如果我做一個整體構建和閃光系統&啓動圖像。 因此,爲了使Android本地服務發生變化,我們將始終需要完整的構建?

天龍

回答

0

結果: 看來,如果我做一個整體構建和刷新系統&引導映像的碰撞沒有發生。 但是,我仍然想知道是否有某種保護機制在運行時記錄和驗證班級人數。看起來二進制地址映射仍然沒有更新,即使我們替換.so lib。

感謝您的任何進一步的信息!

相關問題