2016-04-19 7 views
1

ich Absturz erlebt habe nach folgendem Code hinzufügen:Android nativen libc-Signal 11 (SIGSEGV), Code 2 (SEGV_ACCERR), Fehler Adr

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); 
} 

Ich habe folgenden Absturz:

02 -03 22: 21: 17,971 367 367 F DEBUG: Revision: '0'

02-03 22: 21: 17,971 367 367 F DEBUG: ABI: 'bewaffnet'

02-03 22.21: 17.971 367 3 67 F DEBUG: pid: 981, TID 981, Name: Mediaserver >>>/System/bin/Mediaserver < < <

02-03 22: 21: 17,972 367 367 F DEBUG: Signal 11 (SIGSEGV) , Code 2 (SEGV_ACCERR), Fehler addr 0xb6e594d8

02-03 22: 21: 17,976 367 367 F DEBUG: 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 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 :: w eakref_type :: incWeak (void const *) + 11)

02-03 22: 21: 17,980 367 367 F DEBUG: # 01 pc 0000e845 /system/lib/libutils.so (android :: RefBase :: createWeak (void * const) 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 /System/bin/Mediaserver

02-03 22: 21: 17,980 367 367 F DEBUG: # 05 pc 00001b8f /System/bin/Mediaserver

02-03 22: 21: 17,981 367 367 F DEBUG: # 06 pc 00.017.359 /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 F DEBUG:

02-03 22: 21: 18,088 367 367 F DEBUG: Grabstein geschrieben: /data/tombstones/tombstone_01

Nach Abbildungsadresse zu Zeile, verweist er auf die Linien aus meiner Veränderung. SEGV_ACCERR bedeutet ungültige Berechtigungen für zugeordnetes Objekt. Ich habe mich gefragt, ob es von Android mprotect verursacht wird? Es scheint kein normaler Crash zu sein. Hat jemand den gleichen Fehler erlebt? Danke vielmals!

Update: OK, es scheint, der Absturz ist nicht passiert, wenn ich eine ganze Build und Flash-System & Boot-Images. Also, um einen androiden nativen Service zu ändern, brauchen wir immer einen vollständigen Build?

Denon

Antwort

0

Ergebnis: es scheint der Absturz ist nicht passiert, wenn ich eine ganze Build machen und das System & Startabbildern blinken. Allerdings habe ich mich immer noch gefragt, ob es einen bestimmten Schutzmechanismus gibt, um die Klassengröße zur Laufzeit aufzuzeichnen und zu verifizieren. Es scheint, dass die binäre Adresszuordnung immer noch nicht aktualisiert wird, selbst wenn wir die .so lib ersetzen.

Vielen Dank für weitere Informationen!

Verwandte Themen