OPPO R9-android5.x老爺機(jī)-應(yīng)用啟動閃退問題

一模一樣的代碼, 某幾次編譯的apk在'OPPO R9-android5.x老爺機(jī)' 上 啟動就發(fā)生nativeCrash(后簡稱NE).

NE形式1:

========================================
2020-05-20 11:45:16 data_app_native_crash (text, 1519 bytes)
Process: com.duoxx.xx
Flags: 0xf83e44
Package: com.duoxx.xx v33283 (7.13.2-SNAPSHOT)
Build: OPPO/R9m/R9:5.1/LMY47I/1515760704:user/release-keys

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'OPPO/R9m/R9:5.1/LMY47I/1515760704:user/release-keys'
Revision: '0'
ABI: 'arm'
pid: 27544, tid: 27848, name: Thread-6488  >>> com.duoxx.xx <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x88
Abort message: 'art/runtime/gc/collector/mark_sweep.cc:387] Can't mark invalid object'
    r0 00000000  r1 6fff6268  r2 0000001c  r3 00000148
    r4 75d79d60  r5 00000147  r6 c98f3a48  r7 f47feff4
    r8 e0b72400  r9 ed30889a  sl 00000007  fp f4889300
    ip 00003072  sp c98f3890  lr f4584c77  pc f478c7f6  cpsr a00b0030

backtrace:
    #00 pc 002967f6  /system/lib/libart.so (_ZN3art11interpreterL8DoInvokeILNS_10InvokeTypeE4ELb0ELb0EEEbPNS_6ThreadERNS_11ShadowFrameEPKNS_11InstructionEtPNS_6JValueE+233)
    #01 pc 0008ec73  /system/lib/libart.so (_ZN3art11interpreter15ExecuteGotoImplILb0ELb0EEENS_6JValueEPNS_6ThreadERNS_12MethodHelperEPKNS_7DexFile8CodeItemERNS_11ShadowFrameES2_+22762)
    #02 pc 0016a173  /system/lib/libart.so (_ZN3art11interpreter24EnterInterpreterFromStubEPNS_6ThreadERNS_12MethodHelperEPKNS_7DexFile8CodeItemERNS_11ShadowFrameE+126)
    #03 pc 00291a05  /system/lib/libart.so (artQuickToInterpreterBridge+468)
    #04 pc 000a4aeb  /system/lib/libart.so (art_quick_to_interpreter_bridge+10)
    #05 pc 0099333c  /dev/ashmem/dalvik-main space (deleted)

NE形式2:

========================================
2020-05-20 11:50:22 data_app_native_crash (text, 3195 bytes)
Process: com.duoxx.xx
Flags: 0xd83e44
Package: com.duoxx.xx v33283 (7.13.2-SNAPSHOT)
Build: OPPO/R9m/R9:5.1/LMY47I/1515760704:user/release-keys

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'OPPO/R9m/R9:5.1/LMY47I/1515760704:user/release-keys'
Revision: '0'
ABI: 'arm'
pid: 28717, tid: 28735, name: GCDaemon  >>> com.duoxx.xx <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x14
Abort message: 'art/runtime/gc/collector/mark_sweep.cc:387] Can't mark invalid object'
    r0 fffffa90  r1 f47feff4  r2 f459b9d0  r3 00000000
    r4 00000000  r5 f382f0d0  r6 f47fca38  r7 f4889300
    r8 d23848a0  r9 f47fca38  sl fffffa94  fp f4889300
    ip f763c7c8  sp f382efa8  lr f4723f91  pc f459ba04  cpsr a0070010

backtrace:
    #00 pc 000a5a04  /system/lib/libart.so (_ZN3art3arm10ArmContext15FillCalleeSavesERKNS_12StackVisitorE+52)
    #01 pc 0022df8f  /system/lib/libart.so (_ZN3art12StackVisitor9WalkStackEb+282)
    #02 pc 00233dff  /system/lib/libart.so (_ZNK3art6Thread13DumpJavaStackERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE+166)
    #03 pc 002354eb  /system/lib/libart.so (_ZNK3art6Thread4DumpERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE+182)
    #04 pc 0023eabf  /system/lib/libart.so (_ZN3art10ThreadList10DumpLockedERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE+106)
    #05 pc 00223cfb  /system/lib/libart.so (_ZN3art10AbortState4DumpERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE+242)
    #06 pc 00223f4d  /system/lib/libart.so (_ZN3art7Runtime5AbortEv+72)
    #07 pc 000a8b71  /system/lib/libart.so (_ZN3art10LogMessageD1Ev+1296)
    #08 pc 0012ebcb  /system/lib/libart.so (_ZN3art2gc10accounting10HeapBitmap3SetINS0_9collector27MarkSweepMarkObjectSlowPathEEEbPKNS_6mirror6ObjectERKT_+294)
    #09 pc 0006cb45  /system/lib/libart.so (_ZN3art2gc9collector9MarkSweep17MarkObjectNonNullEPNS_6mirror6ObjectE.part.155+20)
    #10 pc 00130313  /system/lib/libart.so (_ZN3art6mirror6Object21VisitFieldsReferencesILb0ELb0ENS_2gc9collector17MarkObjectVisitorEEEvjRKT1_+118)
    #11 pc 001303eb  /system/lib/libart.so (_ZN3art6mirror6Object15VisitReferencesILb0ELNS_17VerifyObjectFlagsE0ENS_2gc9collector17MarkObjectVisitorENS5_29DelayReferenceReferentVisitorEEEvRKT1_RKT2_+146)
    #12 pc 00130b37  /system/lib/libart.so (_ZNK3art2gc10accounting11SpaceBitmapILj8EE16VisitMarkedRangeINS0_9collector17ScanObjectVisitorEEEvjjRKT_+430)
    #13 pc 0013111d  /system/lib/libart.so (_ZN3art2gc9collector9MarkSweep15ScanGrayObjectsEbh+984)
    #14 pc 0013119f  /system/lib/libart.so (_ZN3art2gc9collector9MarkSweep25RecursiveMarkDirtyObjectsEbh+6)
    #15 pc 00131519  /system/lib/libart.so (_ZN3art2gc9collector9MarkSweep12MarkingPhaseEv+112)
    #16 pc 0013167f  /system/lib/libart.so (_ZN3art2gc9collector9MarkSweep9RunPhasesEv+310)
    #17 pc 00128ba5  /system/lib/libart.so (_ZN3art2gc9collector16GarbageCollector3RunENS0_7GcCauseEb+220)
    #18 pc 00146e7f  /system/lib/libart.so (_ZN3art2gc4Heap22CollectGarbageInternalENS0_9collector6GcTypeENS0_7GcCauseEb+1330)
    #19 pc 00148303  /system/lib/libart.so (_ZN3art2gc4Heap12ConcurrentGCEPNS_6ThreadE+110)
    #20 pc 000003df  /data/dalvik-cache/arm/system@framework@boot.oat

詭異的, 重新打包 有概率性正常.


測試人員首先報來的問題是"啟動ANR, 然后閃退"
看了現(xiàn)場 缺實有ANR, 但是ANR的trace文件為空

$ adb shell " ls -al /data/anr/"
...trace文件 0kb / trace文件為空 

這種抓trace失敗的ANR, 一般不是大家一般關(guān)注的java層的某些代碼導(dǎo)致的ANR.

所以不要浪費精力 按照一般ANR的套路去分析.

這里基于我司的長期經(jīng)驗, 是我們使用google-breakpad庫收集nativeCrash失敗, 導(dǎo)致進(jìn)程僵死, 進(jìn)而發(fā)生ANR.
即問題的rootCase 是nativeCrash, 以及nativeCrash抓取失敗.

因為是必現(xiàn)的, 所以關(guān)閉了google-breakpad, 讓系統(tǒng)抓到到如上貼的 crash棧信息.
問題的表現(xiàn)也回歸單純的啟動閃退, 而不是ANR.

ps: 還有一些小細(xì)節(jié) 順道說下:
1> andorid 5.x以及以前的日志打印格式 沒有打印tid和時間, 不友好, logcat的時候加上 -v threadtime, 讓打印格式更友好.

2> andorid 5.x以及以前的 沒有"logcat -b crash", 不方便快速查看 crash日志.
ps: 高版本上adb logcat -b all 在<=5.x也沒有剩檀, 應(yīng)該用"adb logcat -b main -b system -b events -v threadtime" 頂一頂.

3> 上述的 "F DEBUG"的日志打印悠反,在這臺OPPO手機(jī)上居然并不會在logcat里打尤移铡.logcat只打印了'F libc ..." 的NE日志.
上述NE棧是通過 dropbox 即" adb shell dumpsys dropbox --print " 的方式獲取的.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末唠椭,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子溜族,更是在濱河造成了極大的恐慌潦闲,老刑警劉巖牵啦,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異摊腋,居然都是意外死亡沸版,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進(jìn)店門兴蒸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來视粮,“玉大人,你說我怎么就攤上這事橙凳±倥梗” “怎么了?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵岛啸,是天一觀的道長钓觉。 經(jīng)常有香客問我,道長坚踩,這世上最難降的妖魔是什么荡灾? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上批幌,老公的妹妹穿的比我還像新娘础锐。我一直安慰自己,他們只是感情好逼裆,可當(dāng)我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布郁稍。 她就那樣靜靜地躺著,像睡著了一般胜宇。 火紅的嫁衣襯著肌膚如雪耀怜。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天桐愉,我揣著相機(jī)與錄音财破,去河邊找鬼。 笑死从诲,一個胖子當(dāng)著我的面吹牛左痢,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播系洛,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼俊性,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了描扯?” 一聲冷哼從身側(cè)響起定页,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎绽诚,沒想到半個月后典徊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡恩够,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年卒落,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蜂桶。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡儡毕,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出扑媚,到底是詐尸還是另有隱情妥曲,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布钦购,位于F島的核電站檐盟,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏押桃。R本人自食惡果不足惜葵萎,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧羡忘,春花似錦谎痢、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至漫雕,卻和暖如春滨嘱,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背浸间。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工太雨, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人魁蒜。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓囊扳,卻偏偏與公主長得像,于是被迫代替她去往敵國和親兜看。 傳聞我的和親對象是個殘疾皇子锥咸,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,543評論 2 349