打印

求一种抓取系统重启之前log的方法

[复制链接]
789|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
SPR——|  楼主 | 2020-1-15 09:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
问题描述:因为有客户反映系统在休眠之后,点击触摸屏唤醒的时候有几率发生重启,然后就一直在复现。复现之后,查看系统 /sys/fs/pstore/ 里面的log信息,可确定是内核底层出现了段错误,也有相关的函数调用。但无法得知上层在触摸了之后,到底是谁,哪一块除了错误,为此需要logcat信息。但用 logcat -f /sdcard/log.txt 复现之后,发现里面只有系统重启之后的log。我想要上次出现异常的时候,也就是关机的log,不要这启动的log,这没法找到导致系统重启的原因啊。

所以,在这里求一种能保留上一次关机之前log的方法,简单的说就是这次开机之后能看上次到底怎么回事导致关机。或者对于这种情况有经验和方法的大佬,不吝赐教

使用特权

评论回复
评论
SPR—— 2020-1-15 12:54 回复TA
我后来又用 logcat -f /sdcard/log.txt & 后台抓log,发现重启的时候也没什么异常,进入休眠状态,然后就一下子重启了,有个 shutdown VM 的东西,是不是和这个有关? 

相关帖子

沙发
SPR——|  楼主 | 2020-1-15 17:54 | 只看该作者
我又抓到了log
08-24 19:12:26.420  1882  1891 I VysorMain: Websocket closed...
08-24 19:12:26.437   206   422 E OMXNodeInstance: !!! Observer died. Quickly, do something, ... anything...
--------- beginning of crash
08-24 19:12:26.437   206  1899 F libc    : Fatal signal 11 (SIGSEGV), code 1, fault addr 0x8 in tid 1899 (Binder_1)
08-24 19:12:26.440  1456  1910 I VysorIME: disabling self due to socket disconnect
08-24 19:12:26.539   204   204 F DEBUG   : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
08-24 19:12:26.539   204   204 F DEBUG   : Build fingerprint: 'Freescale/sabresd_6dq/sabresd_6dq:6.0.1/2.1.0-ga-rc2/20160715:user/release-keys'
08-24 19:12:26.539   204   204 F DEBUG   : Revision: '0'
这是什么原因

使用特权

评论回复
板凳
SPR——|  楼主 | 2020-1-16 11:42 | 只看该作者
08-24 19:12:26.539   204   204 F DEBUG   : ABI: 'arm'
08-24 19:12:26.540   204   204 F DEBUG   : pid: 206, tid: 1899, name: Binder_1  >>> /system/bin/mediaserver <<<
08-24 19:12:26.540   204   204 F DEBUG   : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x8
08-24 19:12:26.542   563   722 W NativeCrashListener: Couldn't find ProcessRecord for pid 206
08-24 19:12:26.562   204   204 F DEBUG   :     r0 00000008  r1 b357f830  r2 00000001  r3 00000000
08-24 19:12:26.562   204   204 E DEBUG   : AM write failed: Broken pipe
08-24 19:12:26.562   204   204 F DEBUG   :     r4 b5e973e8  r5 00000000  r6 ffffffff  r7 b357f830
08-24 19:12:26.562   204   204 F DEBUG   :     r8 00000001  r9 00000008  sl b39f62c1  fp b357f830
08-24 19:12:26.562   204   204 F DEBUG   :     ip b63f2800  sp b357f7f8  lr b63d7685  pc b69ec2be  cpsr 000f0030
08-24 19:12:26.587   204   204 F DEBUG   :
08-24 19:12:26.587   204   204 F DEBUG   : backtrace:
08-24 19:12:26.588   204   204 F DEBUG   :     #00 pc 000402be  /system/lib/libc.so (pthread_mutex_lock+3)
08-24 19:12:26.588   204   204 F DEBUG   :     #01 pc 00016681  /system/lib/libstagefright_omx.so (android::OMX::CallbackDispatcher::post(android::omx_message const&, bool)+16)
08-24 19:12:26.588   204   204 F DEBUG   :     #02 pc 0001797d  /system/lib/libstagefright_omx.so (android::OMX::OnEmptyBufferDone(unsigned int, unsigned int, OMX_BUFFERHEADERTYPE*, int)+40)
08-24 19:12:26.588   204   204 F DEBUG   :     #03 pc 00018c75  /system/lib/libstagefright_omx.so (android::OMXNodeInstance::OnEmptyBufferDone(void*, void*, OMX_BUFFERHEADERTYPE*)+60)
08-24 19:12:26.588   204   204 F DEBUG   :     #04 pc 0000fa5d  /system/lib/lib_omx_common_v2_arm11_elinux.so (ComponentBase::EmptyDone(OMX_BUFFERHEADERTYPE*)+20)
08-24 19:12:26.588   204   204 F DEBUG   :     #05 pc 00011c2d  /system/lib/lib_omx_common_v2_arm11_elinux.so (Port::SendBuffer(OMX_BUFFERHEADERTYPE*)+328)
08-24 19:12:26.588   204   204 F DEBUG   :     #06 pc 0001c6b7  /system/lib/lib_omx_common_v2_arm11_elinux.so (VideoFilter::ProcessDataBuffer()+250)
08-24 19:12:26.588   204   204 F DEBUG   :     #07 pc 000104f1  /system/lib/lib_omx_common_v2_arm11_elinux.so (DoThread(void*)+92)
08-24 19:12:26.588   204   204 F DEBUG   :     #08 pc 0003f8c3  /system/lib/libc.so (__pthread_start(void*)+30)
08-24 19:12:26.588   204   204 F DEBUG   :     #09 pc 00019e55  /system/lib/libc.so (__start_thread+6)
08-24 19:12:27.077   204   204 F DEBUG   :
08-24 19:12:27.077   204   204 F DEBUG   : Tombstone written to: /data/tombstones/tombstone_00

使用特权

评论回复
地板
SPR——|  楼主 | 2020-1-16 17:03 | 只看该作者
根据pc的值,找到函数调用流程,应该是内存的问题,导致了指针异常,出现野指针,最后崩溃了。关键是怎么出现了野指针?要是内存溢出还有机会,关键是在OnEmptyBufferDone 函数里面,难道空的内存也能导致野指针的出现?

使用特权

评论回复
5
SPR——|  楼主 | 2020-1-17 08:43 | 只看该作者
最后定位到这一句,uint16_t old_state = atomic_load_explicit(&mutex->state, memory_order_relaxed);
应该是自旋锁的状态指针有问题没跑了

使用特权

评论回复
6
SPR——|  楼主 | 2020-1-17 16:31 | 只看该作者
追了出错的pc,定位了代码流程,发现这个流程和android videoview的框架是一样的,应该是在videoview的数据处理过程中出错了,在继续找问题。。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

27

主题

480

帖子

0

粉丝