SensorService发生NE分析
2016-10-31 17:02
399 查看
转载自:http://m.blog.csdn.net/article/details?id=52593684
DESCRIPTION]
在分析NE时,可能会遇到SensorService部分的NE,NE log如下:
Abort message: 'VALUE& android::KeyedVector<KEY, VALUE>::editValueFor(const KEY&) [with KEY = int; VALUE = android::SensorDevice::Info]: key not found'
backtrace:
#00 pc 0003d480 /system/lib/libc.so (tgkill+12)
#01 pc 00016959 /system/lib/libc.so (pthread_kill+52)
#02 pc 0001756f /system/lib/libc.so (raise+10)
#03 pc 00013ea5 /system/lib/libc.so (__libc_android_abort+36)
#04 pc 00012524 /system/lib/libc.so (abort+4)
#05 pc 000083e9 /system/lib/libcutils.so (__android_log_assert+88)
#06 pc 00007a3b /system/lib/libsensorservice.so
#07 pc 00008087 /system/lib/libsensorservice.so
[ANALYSIS]
Google默认设计的sensorService中,判定当从hal层获取到的sensorlist中有gyrosensor时,就会注册虚拟的sensor type, (这里以RotationVectorSenso为例)
虚拟的sensor type去使能的时候就会去使能acc sensor,mag sensor,gyro sensor 3个实体sensor。此时若acc sensor 或者mag sensor不在HAL的sensor list中,则就会出现NE (这里以RotationVectorSenso为例)
[ROOT CAUSE]
▪Case1:客户实际上没有gyro sensor,但却在ProjectConfig.mk文件中配置了gyro sensor
▪Case2:客户实际上有gyro sensor,没有mag sensor。配置也正确。
[SOLUTION]
对于case1:
正确配置ProjectConfig.mk文件中的gyro sensor即可。
对于case2:
请按照下面的方法修改:
修改alps\frameworks\native\services\sensorservice\SensorService.cpp的OnFisrtRef()方法
备注:
这里的修改只是针对project中没有mag sensor的情况。
DESCRIPTION]
在分析NE时,可能会遇到SensorService部分的NE,NE log如下:
Abort message: 'VALUE& android::KeyedVector<KEY, VALUE>::editValueFor(const KEY&) [with KEY = int; VALUE = android::SensorDevice::Info]: key not found'
backtrace:
#00 pc 0003d480 /system/lib/libc.so (tgkill+12)
#01 pc 00016959 /system/lib/libc.so (pthread_kill+52)
#02 pc 0001756f /system/lib/libc.so (raise+10)
#03 pc 00013ea5 /system/lib/libc.so (__libc_android_abort+36)
#04 pc 00012524 /system/lib/libc.so (abort+4)
#05 pc 000083e9 /system/lib/libcutils.so (__android_log_assert+88)
#06 pc 00007a3b /system/lib/libsensorservice.so
#07 pc 00008087 /system/lib/libsensorservice.so
[ANALYSIS]
Google默认设计的sensorService中,判定当从hal层获取到的sensorlist中有gyrosensor时,就会注册虚拟的sensor type, (这里以RotationVectorSenso为例)
虚拟的sensor type去使能的时候就会去使能acc sensor,mag sensor,gyro sensor 3个实体sensor。此时若acc sensor 或者mag sensor不在HAL的sensor list中,则就会出现NE (这里以RotationVectorSenso为例)
[ROOT CAUSE]
▪Case1:客户实际上没有gyro sensor,但却在ProjectConfig.mk文件中配置了gyro sensor
▪Case2:客户实际上有gyro sensor,没有mag sensor。配置也正确。
[SOLUTION]
对于case1:
正确配置ProjectConfig.mk文件中的gyro sensor即可。
对于case2:
请按照下面的方法修改:
修改alps\frameworks\native\services\sensorservice\SensorService.cpp的OnFisrtRef()方法
备注:
这里的修改只是针对project中没有mag sensor的情况。
相关文章推荐
- [FAQ14188]SensorService发生NE分析
- VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
- VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
- $(".class")后到底发生了什么 -- jquery选择器分析
- VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
- SQL Server索引进阶第十一篇:索引碎片分析与解决(中)-碎片发生原理深度剖析
- VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
- VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
- 转:VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
- VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
- C# 外部组件发生异常原因分析 [分析]
- 转载:VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
- 在ne中分析贱谈.net中简体转繁体
- 页面及控件的事件的发生先后循序分析
- 中星6B卫星发生故障, 共150套电视节目全部中断, 专家分析中星6B卫星故障原因 可能为境外干扰
- C# 外部组件发生异常原因分析 [分析]
- VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
- VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
- VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结
- VC运行库版本不同导致链接.LIB静态库时发生重复定义问题的一个案例分析和总结