Android5.0L下因sensorservice crash导致systemserver重新启动的第二种场景分析
2015-12-27 12:27
846 查看
一、出问题的场景
1、Sensorservice线程正在处理compass sensor事件的过程中。检查了一次buffer的指针的有效性,并在稍后会传递到AKM获取数据的函数接口中使用
2、Sensorservice线程所在进程的负责跨进程通信的Binder线程在sensorservice线程检查buffer指针之后没有真正使用之前,
收到了disable compass sensor的请求,从log中能够看到compass sensor先是被disable。disable的同一时候会free上面sensorservice检查过并正在使用的buffer指针。同一时候置空buffer指针
3、紧接着sensorservice线程继续运行AKM获取数据的函数接口,并使用到了已经被disable置空的buffer指针,然后产生异常
二、详细log和代码
Disable compass sensor并free buffer的代码:
Free buffer 3ms之后sensorservice立即由于訪问空指针异常的log:
传递buffer指针并使用的代码:
使用buffer指针产生异常的地方log:
1、Sensorservice线程正在处理compass sensor事件的过程中。检查了一次buffer的指针的有效性,并在稍后会传递到AKM获取数据的函数接口中使用
2、Sensorservice线程所在进程的负责跨进程通信的Binder线程在sensorservice线程检查buffer指针之后没有真正使用之前,
收到了disable compass sensor的请求,从log中能够看到compass sensor先是被disable。disable的同一时候会free上面sensorservice检查过并正在使用的buffer指针。同一时候置空buffer指针
3、紧接着sensorservice线程继续运行AKM获取数据的函数接口,并使用到了已经被disable置空的buffer指针,然后产生异常
二、详细log和代码
Disable compass sensor并free buffer的代码:
Free buffer 3ms之后sensorservice立即由于訪问空指针异常的log:
传递buffer指针并使用的代码:
使用buffer指针产生异常的地方log:
相关文章推荐
- IOS 与ANDROID框架及应用开发模式对照一
- Android实现短信验证功能(功能的使用)
- Android学习06Android应用程序的基本组件
- Android Material Design 5.0 PickerDialog
- 15款android设备上的代码编辑器
- Android应用程序组件之间的通信Intent和IntentFilter
- Android应用开发之PNG、IconFont、SVG图标资源优化详解
- Android IntentFilter 匹配原则浅析
- Android实现短信验证功能(使用前的准备)
- android 学习之触摸事件 -- 事件派发
- android file.createnewfile ioexception
- Android 自定义View 刮刮乐—呱奖
- Android 图形 II-OpenGL ES
- android之Fragment使用
- Android 获取手机联系人实例代码详解
- Android内存优化之——static使用篇
- 图片加载框架Fresco使用总结
- android解析xml一直报错org.xmlpull.v1.XmlPullParserException
- 一起来开发Android的天气软件(四)——使用Gson解析数据
- ubuntu中在Launcher上添加Android Studio的运行图标