【问题】
折腾:
【未解决】Android中的TabHost中的TAB中的FrameLayout中的View显示位置异常出现重叠且覆盖了TAB标签
期间,在通过USB调试Android的PAD时,在logcat中打印出一堆的错误信息:
03-07 13:49:48.483: E/IMGSRV(9899): :0: gralloc_module_unmap: find buffer in dequeued status ID=3454 |
如图:
搞得都无法及时看清楚其他的有效的调试信息了。
所以想要找到错误原因,并消除此错误的log信息。
【解决过程】
1.网上搜了下:
gralloc_module_unmap
find buffer in dequeued status ID
都没找到有效的参考资料。
2.感觉好像是自己的项目中的内容。
所以去搜搜:
IMGSRV
结果也搜不到。
3.去网上搜:
E/IMGSRV
结果搜到:
其提示去“/dev/pvrsrvkm看看是不是这个设备没有权限,导致不能打开。”
所以去看看,结果在未调试期间,DDMS中,/dev下找不到pvrsrvkm:
再去启动调试,看看调试期间是否能找到那个设备文件。
结果也找不到:
4.对于E/IMGSRV,猜测是:
Error,ImageServer?
但是这里好像没什么图像处理器方面的处理啊。
5.参考其他的:
RenderScript学习之仿三星水蒲公英-Android开发源码下载-eoe Android开发者社区_Android开发论坛 – Powered by Discuz!
775548 – IMGSRV HW operation timeouts with WebGL
求教opengl es2.0 中framebufferobject的一些生成机制 – 开源中国社区
都没参考价值。
6.虽然:
KitKat Hardware acceleration issues (particularly in browser) – Google Groups
也没参考价值,但是其中遇到那个:
gralloc_module_map
倒是和我此处的:
gralloc_module_unmap
是一对的。
7.而关于:
gralloc_module_unmap
之前就搜过了,除了一个:
gfx_rel_es4.x_android : rename gralloc library – Gitorious
其他都找不到。
该贴中,看起来是和:
有关系。
8.然后搜:
android gralloc
而找到很多内容:
Android帧缓冲区(Frame Buffer)硬件抽象层(HAL)模块Gralloc的实现原理分析 – 老罗的Android之旅 – 博客频道 – CSDN.NET
GUI显示系统之SurfaceFlinger— Gralloc与Framebuffer – 林学森的Android专栏 – 博客频道 – CSDN.NET
很明显,都是和显示相关的。
原来是类似于framebuffer的一个东西。
其中也有类似的一些核心函数:
gralloc_device_open gralloc_register_buffer gralloc_unregister_buffer gralloc_lock gralloc_unlock |
但是还就是没有:
gralloc_module_unmap
gralloc_module_map
至此,总体上大概明白了相关的意思了:
之前的错误的log:
03-07 14:07:13.703: D/libEGL(11394): loaded /vendor/lib/egl/libEGL_POWERVR_SGX544_115.so |
中,很明显是,先去加载了libEGL,涉及到了很多图形相关的库,然后内部调用到了Image Server(IMGSRV)中的
gralloc_module_unmap
然后发现出错,才打印出Error信息的。
而且后面的log:
OpenGLRenderer
也是和此处的GL等相关的,反正都是图形方面的库。
至于为何出现这个:
gralloc_module_unmap: find buffer in dequeued status ID=3482
错误,由于没有源代码,找不到对应的函数,目前无法去判断错误根源,无法解决,无法规避。。
8.另外也找到android官网中一些相关的知识:
Android Hardware Abstraction Layer: hardware/libhardware/include/hardware/gralloc.h Source File
9.后来搜:
android gralloc_module
找到cpp源码:
android-arm-gralloc/gralloc_module.cpp at master · FXITech/android-arm-gralloc · GitHub
但是很明显,也还是没有上面的map或unmap函数。
至此,感觉像是整个系统自己生成对应的某个模块的映射的函数,
所以根据gralloc_module自动生成gralloc_module_map和gralloc_module_unmap等函数的。
【总结】
大概了解是图形方面的库函数,内部出现小问题,然后打印出此错误信息的。
但是具体此错误的含义,以及错误根源,由于没有真正的源码,不了解此部分细节,所以无从得知。
【后记】
1.由于此错误的log信息在调试期间极其频繁地打印出来,导致极大地影响了此处的调试效果,无法看清其他有效的打印信息。
所以,此处还是要努力去想办法,希望即使不能解决问题,也要规避问题。
所以去试试看:
【已解决】Android的logcat中如何根据标签去过滤掉不显示某些log信息
转载请注明:在路上 » 【未解决】Android调试设备时logcat中出错:03-07 13:49:48.483: E/IMGSRV(9899): :0: gralloc_module_unmap: find buffer in dequeued status ID=3454