【未解决】Android调试设备时logcat中出错:03-07 13:49:48.483: E/IMGSRV(9899): :0: gralloc_module_unmap: find buffer in dequeued status ID=3454

【问题】

折腾:

【未解决】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
03-07 13:49:48.483: E/IMGSRV(9899): :0: gralloc_module_unmap: find buffer in dequeued status ID=3454
03-07 13:49:48.483: E/IMGSRV(9899): :0: gralloc_module_unmap: find buffer in dequeued status ID=3454
03-07 13:49:48.483: E/IMGSRV(9899): :0: gralloc_module_unmap: find buffer in dequeued status ID=3454

如图:

gralloc_module_unmap find buffer in dequeued status ID

搞得都无法及时看清楚其他的有效的调试信息了。

所以想要找到错误原因,并消除此错误的log信息。

【解决过程】

1.网上搜了下:

gralloc_module_unmap

find buffer in dequeued status ID

都没找到有效的参考资料。

2.感觉好像是自己的项目中的内容。

所以去搜搜:

IMGSRV

结果也搜不到。

3.去网上搜:

E/IMGSRV

结果搜到:

android 启动时循环打印以下信息,什么原因呢?

其提示去“/dev/pvrsrvkm看看是不是这个设备没有权限,导致不能打开。”

所以去看看,结果在未调试期间,DDMS中,/dev下找不到pvrsrvkm:

ddms dev not found pvrsrvkm

再去启动调试,看看调试期间是否能找到那个设备文件。

结果也找不到:

during debug still not found 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

其他都找不到。

该贴中,看起来是和:

  • gfx_rel_es4.x_android/gralloc.omap3.so (0)
  • gfx_rel_es4.x_android/gralloc.sitara.so (0)
  • 有关系。

    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
    03-07 14:07:13.743: D/libEGL(11394): loaded /vendor/lib/egl/libGLESv1_CM_POWERVR_SGX544_115.so
    03-07 14:07:13.753: D/libEGL(11394): loaded /vendor/lib/egl/libGLESv2_POWERVR_SGX544_115.so
    03-07 14:07:13.793: E/IMGSRV(11394): :0: gralloc_module_unmap: find buffer in dequeued status ID=3482
    03-07 14:07:13.793: E/IMGSRV(11394): :0: gralloc_module_unmap: find buffer in dequeued status ID=3482
    03-07 14:07:13.793: E/IMGSRV(11394): :0: gralloc_module_unmap: find buffer in dequeued status ID=3482
    03-07 14:07:13.793: D/OpenGLRenderer(11394): Enabling debug mode 0
    03-07 14:07:13.823: W/ResourceType(11394): Failure getting entry for 0x01080a03 (t=7 e=2563) in package 0 (error -75)
    03-07 14:07:13.853: W/ResourceType(11394): Failure getting entry for 0x01080a03 (t=7 e=2563) in package 0 (error -75)
    03-07 14:07:13.853: E/IMGSRV(11394): :0: gralloc_module_unmap: find buffer in dequeued status ID=3482
    03-07 14:07:13.853: E/IMGSRV(11394): :0: gralloc_module_unmap: find buffer in dequeued status ID=3482

    中,很明显是,先去加载了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

    Graphics | Android Developers

    9.后来搜:

    android gralloc_module

    找到cpp源码:

    android-arm-gralloc/gralloc_module.cpp at master · FXITech/android-arm-gralloc · GitHub

    gralloc_module.cpp – floid – Android for STMicroelectronics SPEAr eMPUs (SPEAr1340) – Google Project Hosting

    android_device_allwinner_common/gralloc/gralloc_module.cpp at master · allwinner-dev-team/android_device_allwinner_common · GitHub

    但是很明显,也还是没有上面的map或unmap函数。

    至此,感觉像是整个系统自己生成对应的某个模块的映射的函数,

    所以根据gralloc_module自动生成gralloc_module_map和gralloc_module_unmap等函数的。

     

    【总结】

    大概了解是图形方面的库函数,内部出现小问题,然后打印出此错误信息的。

    但是具体此错误的含义,以及错误根源,由于没有真正的源码,不了解此部分细节,所以无从得知。


    【后记】

    1.由于此错误的log信息在调试期间极其频繁地打印出来,导致极大地影响了此处的调试效果,无法看清其他有效的打印信息。

    所以,此处还是要努力去想办法,希望即使不能解决问题,也要规避问题。

    所以去试试看:

    【已解决】Android的logcat中如何根据标签去过滤掉不显示某些log信息



    发表评论

    电子邮件地址不会被公开。 必填项已用*标注

    无觅相关文章插件,快速提升流量