Activity销毁,关联线程回收引起crash

异常log:

09-16 14:07:11.613   395   395 W ActivityThread: performDestroyActivity
09-16 14:07:11.613   395   395 D SinkActivity: SinkActivity::onDestroy
09-16 14:07:11.613   395   395 V SinkActivity: miracast thread quit
09-16 14:07:11.617   395   430 W libEGL  : EGLNativeWindowType 0x9e4e9008 disconnect failed
09-16 14:07:11.618   395   895 F libc    : Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x8bf51684 in tid 895 (SinkActivity-Mi), pid 395 (om.tcl.miracast)

错误堆栈信息:看不出啥问题

09-16 14:07:11.836  1005  1005 F DEBUG   : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
09-16 14:07:11.836  1005  1005 F DEBUG   : Build fingerprint: 'TCL/BeyondTV6/BeyondTV4:9/PPR1.180610.011/AP04:userdebug/release-keys'
09-16 14:07:11.836  1005  1005 F DEBUG   : Revision: '0'
09-16 14:07:11.836  1005  1005 F DEBUG   : ABI: 'arm'
09-16 14:07:11.836  1005  1005 F DEBUG   : pid: 395, tid: 895, name: SinkActivity-Mi  >>> com.tcl.miracast <<<
09-16 14:07:11.836  1005  1005 F DEBUG   : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x8bf51684
09-16 14:07:11.836  1005  1005 F DEBUG   :     r0  a5c66c40  r1  8c28f9d0  r2  8bf51684  r3  00000001
09-16 14:07:11.836  1005  1005 F DEBUG   :     r4  00000003  r5  8c28f970  r6  0000000c  r7  a5eb202c
09-16 14:07:11.837  1005  1005 F DEBUG   :     r8  00000000  r9  a5eb202c  r10 a5eb202c  r11 00000004
09-16 14:07:11.837  1005  1005 F DEBUG   :     ip  a5eaa638  sp  8c28f910  lr  a5e6de67  pc  8bf51684
09-16 14:07:11.844  1005  1005 F DEBUG   : 
09-16 14:07:11.844  1005  1005 F DEBUG   : backtrace:
09-16 14:07:11.844  1005  1005 F DEBUG   :     #00 pc 8bf51684  <unknown>
09-16 14:07:11.844  1005  1005 F DEBUG   :     #01 pc 00063e65  /system/lib/libc.so (pthread_key_clean_all()+68)
09-16 14:07:11.844  1005  1005 F DEBUG   :     #02 pc 00063aab  /system/lib/libc.so (pthread_exit+44)
09-16 14:07:11.844  1005  1005 F DEBUG   :     #03 pc 000639e7  /system/lib/libc.so (__pthread_start(void*)+24)
09-16 14:07:11.845  1005  1005 F DEBUG   :     #04 pc 0001df75  /system/lib/libc.so (__start_thread+22)

分析:

895线程是在SinkActivity主线程中开启的jni线程,此线程使用了dlopen、dlsym、dlclose等函数加载so库以及函数调用等。

在SinkActivity销毁时报上述crash,有在SinkActivity生命周期中添加log,发现从onPause到onDestroy都是正常打印的。

排查修改发现是在jni线程销毁,某类析构函数中调用了dlclose释放so库,导致此问题,去掉dlclose就ok。

具体原理未知,迷惑中。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值