mars Android xlog native crash

ddhy6vgd  于 4个月前  发布在  Android
关注(0)|答案(1)|浏览(63)

最近在看crash,发现xlog有不少crash。用的xlog应该是17年的版本,比较老。现在发现一些crash 主要集中在LogBuffer的Flush和Write方法

  1. memset crash
    这个crash 有好几种

第一种: 这个和你们 #576 问题应该是一样的。 准备按你们的修改方法改为Length,但是不明白为什么会有问题?按说MaxLength就是mmap的大小啊?

signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr e63f0000
    #00 pc 0x178f0 libc.so (memset+48)
    #01 pc 0x97f3 libmarsxlog.so (_ZN9LogBuffer7__ClearEv+22)
    #02 pc 0x97cb libmarsxlog.so (_ZN9LogBuffer5FlushER10AutoBuffer+94)

第二种: 堆栈基本一样,虽然也是memset出错,但是报的是signal7。我有看你们signal7的bug,说是把mmap放在内部存储,我们确实是放在内部存储的。 这个崩溃次数占比非常高,设备台数到不是特别高,所以应该是一些机型上有这个问题。

signal 7 (SIGBUS), code 2 (BUS_ADRERR), fault addr 00000070ee7c8000
    #00 pc 0x1b1e8 libc.so (memset+360)
    #01 pc 0xeac8 libmarsxlog.so (_ZN9LogBuffer5FlushER10AutoBuffer+180)
    #02 pc 0x9944 libmarsxlog.so (_Z13appender_open13TAppenderModePKcS1_S1_S1_+712)
    #03 pc 0xab24 libmarsxlog.so (_Z24appender_open_with_cache13TAppenderModeRKNSt6__ndk112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEES8_PKcSA_SA_+932)

第三种: 这个应该是在程序退出时, 这个好像在64位上比较多。也是在memset,看了下代码是在
memset(sg_mmmap_file.data(), 0, kBufferBlockLength);
这个是不是和第一种类似问题? kBufferBlockLength就是MaxLength。

signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 006573677362696c
 #00 pc 0x1b0ec libc.so (memset+236)
    #01 pc 0xa68c libmarsxlog.so (_Z14appender_closev+312)
    #02 pc 0x76e28 libc.so (__cxa_finalize+192)
    #03 pc 0x19dd8 libc.so (exit+24)
    #04 pc 0xcd670 libandroid_runtime.so
    #05 pc 0xce630 libandroid_runtime.so
  1. 写log时 deflate 报错
signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr 00000076efae8ffa
    #00 pc 0xfe34 libz.so
    #01 pc 0xeeb8 libz.so (_tr_flush_block+264)
    #02 pc 0x72bc libz.so
    #03 pc 0x55f4 libz.so (deflate+4704)
    #04 pc 0xebf8 libmarsxlog.so (_ZN9LogBuffer5WriteEPKvm+188)
    #05 pc 0x8ce4 libmarsxlog.so
  1. 空指针
    LogBuffer. Fix方法空指针
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0000000000000000
    #00 pc 0x1d4fc libmarsxlog.so
    #01 pc 0x1cacc libmarsxlog.so
    #02 pc 0x1f0f8 libmarsxlog.so
    #03 pc 0x1c398 libmarsxlog.so
    #04 pc 0x16a34 libmarsxlog.so
    #05 pc 0x1a554 libmarsxlog.so
    #06 pc 0xe9a0 libmarsxlog.so (_ZN9LogBuffer5__FixEv+132)
    #07 pc 0xe8e4 libmarsxlog.so (_ZN9LogBufferC1EPvmbPKc+68)
    #08 pc 0x98d8 libmarsxlog.so (_Z13appender_open13TAppenderModePKcS1_S1_S1_+604)
    #09 pc 0xab24 libmarsxlog.so (_Z24appender_open_with_cache13TAppenderModeRKNSt6__ndk112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEES8_PKcSA_SA_+932)
lztngnrs

lztngnrs1#

你可以去扒微信的xlog来用, 那个版本比较稳

相关问题