Android P app crash by "IMGSRV : :0: PVRPMapKMem: mmap(2) failed"

we use SGX544-MP2 core in Android P ,but we get crash on our app,it seem like something wrong in GPU。Can we get some suggestions to solve this question?

this is our logcat when crash:

01-11 14:06:18.754 921 983 E IMGSRV : :0: PVRPMapKMem: mmap(2) failed: Mapping handle=0x2e6: Operation not permitted
01-11 14:06:18.754 921 983 E IMGSRV : :0: PVRSRVMapDeviceMem: PVRPMapKMem failed for buffer
01-11 14:06:18.754 921 983 E IMGSRV : :0: Failed to acquire CPU mapping for texture device memory
01-11 14:06:18.754 921 983 E IMGSRV : :0: PVRPMapKMem: mmap(2) failed: Mapping handle=0x2e6: Operation not permitted
01-11 14:06:18.754 921 983 E IMGSRV : :0: PVRSRVMapDeviceMem: PVRPMapKMem failed for buffer
01-11 14:06:18.754 921 983 E IMGSRV : :0: Failed to acquire CPU mapping for texture device memory
--------- beginning of crash
01-11 14:06:18.755 921 983 F libc : Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0 in tid 983 (RenderThread), pid 921 (testdemo)
01-11 14:06:18.924 921 1773 W testdemo: Large object allocation failed: Failed anonymous mmap(0x0, 188416, 0x3, 0x2, 166, 0): Operation not permitted. See process maps in the log.
01-11 14:06:18.924 921 1773 I testdemo: Starting a blocking GC Alloc
01-11 14:06:18.924 921 1773 I testdemo: Starting a blocking GC Alloc
01-11 14:06:18.902 4271 4271 I crash_dump32: type=1400 audit(0.0:666): avc: denied { read write } for path=“/dev/null” dev=“tmpfs” ino=11745 scontext=u:r:crash_dump:s0 tcontext=u:object_r:device:s0 tclass=chr_file permissive=1
01-11 14:06:19.089 4272 4272 I crash_dump32: obtaining output fd from tombstoned, type: kDebuggerdTombstone
01-11 14:06:19.089 274 274 I /system/bin/tombstoned: received crash request for pid 983
01-11 14:06:19.090 4272 4272 I crash_dump32: performing dump of process 921 (target tid = 983)
01-11 14:06:19.118 4272 4272 F DEBUG : *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
01-11 14:06:19.118 4272 4272 F DEBUG : Build fingerprint: ‘Android/am57_ax3/am57_ax3:9/PPR1.181005.003/root09021425:userdebug/test-keys’
01-11 14:06:19.118 4272 4272 F DEBUG : Revision: ‘0’
01-11 14:06:19.118 4272 4272 F DEBUG : ABI: ‘arm’
01-11 14:06:19.118 4272 4272 F DEBUG : pid: 921, tid: 983, name: RenderThread >>> testdemo <<<
01-11 14:06:19.118 4272 4272 F DEBUG : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0
01-11 14:06:19.118 4272 4272 F DEBUG : Cause: null pointer dereference
01-11 14:06:19.118 4272 4272 F DEBUG : r0 fffffffc r1 ac1cbbc0 r2 000000fa r3 000000bb
01-11 14:06:19.118 4272 4272 F DEBUG : r4 000000f9 r5 ac1cbbc4 r6 fffffffc r7 ff231512
01-11 14:06:19.118 4272 4272 F DEBUG : r8 00000000 r9 7bb24000 r10 02514720 r11 000003e8
01-11 14:06:19.118 4272 4272 F DEBUG : ip 00000400 sp 7b484908 lr 000003e8 pc 97226c94
01-11 14:06:19.086 4272 4272 I crash_dump32: type=1400 audit(0.0:667): avc: denied { open } for path=“/dev/pmsg0” dev=“tmpfs” ino=11755 scontext=u:r:crash_dump:s0 tcontext=u:object_r:device:s0 tclass=chr_file permissive=1
01-11 14:06:19.217 921 1775 W testdemo: Large object allocation failed: Failed anonymous mmap(0x0, 188416, 0x3, 0x2, 166, 0): Operation not permitted. See process maps in the log.
01-11 14:06:19.217 921 1775 I testdemo: Waiting for a blocking GC Alloc
01-11 14:06:19.286 4272 4272 F DEBUG :
01-11 14:06:19.286 4272 4272 F DEBUG : backtrace:
01-11 14:06:19.286 4272 4272 F DEBUG : #00 pc 00021c94 /vendor/lib/egl/libGLESv2_POWERVR_SGX544_116.so
01-11 14:06:19.286 4272 4272 F DEBUG : #01 pc 00022c9d /vendor/lib/egl/libGLESv2_POWERVR_SGX544_116.so
01-11 14:06:19.286 4272 4272 F DEBUG : #02 pc 00023b0d /vendor/lib/egl/libGLESv2_POWERVR_SGX544_116.so (glTexImage2D+64)
01-11 14:06:19.286 4272 4272 F DEBUG : #03 pc 0007d5a1 /system/lib/libhwui.so (android::uirenderer::debug::DefaultGlesDriver::glTexImage2D_(unsigned int, int, int, int, int, int, unsigned int, unsigned int, void const*)+34)
01-11 14:06:19.286 4272 4272 F DEBUG : #04 pc 00080187 /system/lib/libhwui.so (android::uirenderer::debug::GlesErrorCheckWrapper::glTexImage2D_(unsigned int, int, int, int, int, int, unsigned int, unsigned int, void const*)+38)
01-11 14:06:19.286 4272 4272 F DEBUG : #05 pc 00375df5 /system/lib/libhwui.so (wrap_glTexImage2D(unsigned int, int, int, int, int, int, unsigned int, unsigned int, void const*)+52)
01-11 14:06:19.286 4272 4272 F DEBUG : #06 pc 000d5323 /system/lib/libhwui.so (android::uirenderer::uploadToTexture(bool, int, unsigned int, unsigned int, int, int, int, int, void const*)+54)
01-11 14:06:19.286 4272 4272 F DEBUG : #07 pc 000d4ea1 /system/lib/libhwui.so (android::uirenderer::Texture::upload(android::Bitmap&)+380)
01-11 14:06:19.286 4272 4272 F DEBUG : #08 pc 000d568b /system/lib/libhwui.so (android::uirenderer::TextureCache::createTexture(android::Bitmap*)+122)
01-11 14:06:19.286 4272 4272 F DEBUG : #09 pc 00386317 /system/lib/libhwui.so (android::uirenderer::TextureCache::getCachedTexture(android::Bitmap*)+210)
01-11 14:06:19.286 4272 4272 F DEBUG : #10 pc 0009c5a1 /system/lib/libhwui.so (android::uirenderer::renderthread::OpenGLPipeline::pinImages(android::uirenderer::LsaVector<sk_spandroid::Bitmap>&)+36)
01-11 14:06:19.286 4272 4272 F DEBUG : #11 pc 000b01e7 /system/lib/libhwui.so (android::uirenderer::DisplayList::prepareListAndChildren(android::uirenderer::TreeObserver&, android::uirenderer::TreeInfo&, bool, std::__1::function<void (android::uirenderer::RenderNode*, android::uirenderer::TreeObserver&, android::uirenderer::TreeInfo&, bool)>)+46)
01-11 14:06:19.286 4272 4272 F DEBUG : #12 pc 003531e1 /system/lib/libhwui.so (android::uirenderer::RenderNode::prepareTreeImpl(android::uirenderer::TreeObserver&, android::uirenderer::TreeInfo&, bool)+3932)
01-11 14:06:19.286 4272 4272 F DEBUG : #13 pc 000b02c9 /system/lib/libhwui.so (android::uirenderer::DisplayList::prepareListAndChildren(android::uirenderer::TreeObserver&, android::uirenderer::TreeInfo&, bool, std::__1::function<void (android::uirenderer::RenderNode*, android::uirenderer::TreeObserver&, android::uirenderer::TreeInfo&, bool)>)+272)
01-11 14:06:19.286 4272 4272 F DEBUG : #14 pc 003531e1 /system/lib/libhwui.so (android::uirenderer::RenderNode::prepareTreeImpl(android::uirenderer::TreeObserver&, android::uirenderer::TreeInfo&, bool)+3932)
01-11 14:06:19.286 4272 4272 F DEBUG : #15 pc 000b02c9 /system/lib/libhwui.so (android::uirenderer::DisplayList::prepareListAndChildren(android::uirenderer::TreeObserver&, android::uirenderer::TreeInfo&, bool, std::__1::function<void (android::uirenderer::RenderNode*, android::uirenderer::TreeObserver&, android::uirenderer::TreeInfo&, bool)>)+272)
01-11 14:06:19.286 4272 4272 F DEBUG : #16 pc 003531e1 /system/lib/libhwui.so (android::uirenderer::RenderNode::prepareTreeImpl(android::uirenderer::TreeObserver&, android::uirenderer::TreeInfo&, bool)+3932)
01-11 14:06:19.287 4272 4272 F DEBUG : #17 pc 000b02c9 /system/lib/libhwui.so (android::uirenderer::DisplayList::prepareListAndChildren(android::uirenderer::TreeObserver&, android::uirenderer::TreeInfo&, bool, std::__1::function<void (android::uirenderer::RenderNode*, android::uirenderer::TreeObserver&, android::uirenderer::TreeInfo&, bool)>)+272)
01-11 14:06:19.287 4272 4272 F DEBUG : #18 pc 003531e1 /system/lib/libhwui.so (android::uirenderer::RenderNode::prepareTreeImpl(android::uirenderer::TreeObserver&, android::uirenderer::TreeInfo&, bool)+3932)
01-11 14:06:19.287 4272 4272 F DEBUG : #19 pc 000b02c9 /system/lib/libhwui.so (android::uirenderer::DisplayList::prepareListAndChildren(android::uirenderer::TreeObserver&, android::uirenderer::TreeInfo&, bool, std::__1::function<void (android::uirenderer::RenderNode*, android::uirenderer::TreeObserver&, android::uirenderer::TreeInfo&, bool)>)+272)
01-11 14:06:19.287 4272 4272 F DEBUG : #20 pc 003531e1 /system/lib/libhwui.so (android::uirenderer::RenderNode::prepareTreeImpl(android::uirenderer::TreeObserver&, android::uirenderer::TreeInfo&, bool)+3932)
01-11 14:06:19.287 4272 4272 F DEBUG : #21 pc 000b02c9 /system/lib/libhwui.so (android::uirenderer::DisplayList::prepareListAndChildren(android::uirenderer::TreeObserver&, android::uirenderer::TreeInfo&, bool, std::__1::function<void (android::uirenderer::RenderNode*, android::uirenderer::TreeObserver&, android::uirenderer::TreeInfo&, bool)>)+272)
01-11 14:06:19.287 4272 4272 F DEBUG : #22 pc 003531e1 /system/lib/libhwui.so (android::uirenderer::RenderNode::prepareTreeImpl(android::uirenderer::TreeObserver&, android::uirenderer::TreeInfo&, bool)+3932)
01-11 14:06:19.287 4272 4272 F DEBUG : #23 pc 000b02c9 /system/lib/libhwui.so (android::uirenderer::DisplayList::prepareListAndChildren(android::uirenderer::TreeObserver&, android::uirenderer::TreeInfo&, bool, std::__1::function<void (android::uirenderer::RenderNode*, android::uirenderer::TreeObserver&, android::uirenderer::TreeInfo&, bool)>)+272)
01-11 14:06:19.287 4272 4272 F DEBUG : #24 pc 003531e1 /system/lib/libhwui.so (android::uirenderer::RenderNode::prepareTreeImpl(android::uirenderer::TreeObserver&, android::uirenderer::TreeInfo&, bool)+3932)
01-11 14:06:19.287 4272 4272 F DEBUG : #25 pc 000b02c9 /system/lib/libhwui.so (android::uirenderer::DisplayList::prepareListAndChildren(android::uirenderer::TreeObserver&, android::uirenderer::TreeInfo&, bool, std::__1::function<void (android::uirenderer::RenderNode*, android::uirenderer::TreeObserver&, android::uirenderer::TreeInfo&, bool)>)+272)
01-11 14:06:19.287 4272 4272 F DEBUG : #26 pc 003531e1 /system/lib/libhwui.so (android::uirenderer::RenderNode::prepareTreeImpl(android::uirenderer::TreeObserver&, android::uirenderer::TreeInfo&, bool)+3932)
01-11 14:06:19.287 4272 4272 F DEBUG : #27 pc 000b02c9 /system/lib/libhwui.so (android::uirenderer::DisplayList::prepareListAndChildren(android::uirenderer::TreeObserver&, android::uirenderer::TreeInfo&, bool, std::__1::function<void (android::uirenderer::RenderNode*, android::uirenderer::TreeObserver&, android::uirenderer::TreeInfo&, bool)>)+272)
01-11 14:06:19.287 4272 4272 F DEBUG : #28 pc 003531e1 /system/lib/libhwui.so (android::uirenderer::RenderNode::prepareTreeImpl(android::uirenderer::TreeObserver&, android::uirenderer::TreeInfo&, bool)+3932)
01-11 14:06:19.287 4272 4272 F DEBUG : #29 pc 000b02c9 /system/lib/libhwui.so (android::uirenderer::DisplayList::prepareListAndChildren(android::uirenderer::TreeObserver&, android::uirenderer::TreeInfo&, bool, std::__1::function<void (android::uirenderer::RenderNode*, android::uirenderer::TreeObserver&, android::uirenderer::TreeInfo&, bool)>)+272)
01-11 14:06:19.287 4272 4272 F DEBUG : #30 pc 003531e1 /system/lib/libhwui.so (android::uirenderer::RenderNode::prepareTreeImpl(android::uirenderer::TreeObserver&, android::uirenderer::TreeInfo&, bool)+3932)
01-11 14:06:19.287 4272 4272 F DEBUG : #31 pc 000b02c9 /system/lib/libhwui.so (android::uirenderer::DisplayList::prepareListAndChildren(android::uirenderer::TreeObserver&, android::uirenderer::TreeInfo&, bool, std::__1::function<void (android::uirenderer::RenderNode*, android::uirenderer::TreeObserver&, android::uirenderer::TreeInfo&, bool)>)+272)
01-11 14:06:19.287 4272 4272 F DEBUG : #32 pc 003531e1 /system/lib/libhwui.so (android::uirenderer::RenderNode::prepareTreeImpl(android::uirenderer::TreeObserver&, android::uirenderer::TreeInfo&, bool)+3932)
01-11 14:06:19.287 4272 4272 F DEBUG : #33 pc 00383bbf /system/lib/libhwui.so (android::uirenderer::RenderNode::prepareTree(android::uirenderer::TreeInfo&)+110)
01-11 14:06:19.287 4272 4272 F DEBUG : #34 pc 000a7acf /system/lib/libandroid_runtime.so (android::RootRenderNode::prepareTree(android::uirenderer::TreeInfo&)+192)
01-11 14:06:19.287 4272 4272 F DEBUG : #35 pc 0009a6c5 /system/lib/libhwui.so (android::uirenderer::renderthread::CanvasContext::prepareTree(android::uirenderer::TreeInfo&, long long*, long long, android::uirenderer::RenderNode*)+228)
01-11 14:06:19.288 4272 4272 F DEBUG : #36 pc 0037be8d /system/lib/libhwui.so (_ZNSt3__110__function6__funcIZN7android10uirenderer12renderthread13DrawFrameTask11postAndWaitEvE3$_0NS_9allocatorIS6_EEFvvEEclEv$c303f2d2360db58ed70a2d0ac7ed911b+320)
01-11 14:06:19.288 4272 4272 F DEBUG : #37 pc 00342e1f /system/lib/libhwui.so (android::uirenderer::WorkQueue::process()+122)
01-11 14:06:19.288 4272 4272 F DEBUG : #38 pc 000a3677 /system/lib/libhwui.so (android::uirenderer::renderthread::RenderThread::threadLoop()+182)
01-11 14:06:19.288 4272 4272 F DEBUG : #39 pc 0000c0bf /system/lib/libutils.so (android::thread::_threadLoop(void*)+170)
01-11 14:06:19.288 4272 4272 F DEBUG : #40 pc 00064343 /system/lib/libc.so (__pthread_start(void*)+22)
01-11 14:06:19.288 4272 4272 F DEBUG : #41 pc 0001dfad /system/lib/libc.so (__start_thread+32)

Hi, Ximeng.

Welcome to our forum!
The problem you describe looks like a out-of-memory situation. Are you able to run simpler OpenGL ES applications on your system? Are you handling returned errors when handling texture upload?

Thanks.

Carlos.

Hi,Carlos
Thank you for reply.
it seem works fine in a simpler OpenGL ES applications.
We use Ti AM5728 cpu, our app also works fine on Android 5.1.1 SDK, but we need to upgrade Android system to Andoid P and those crash comes. and these crash on Android P in my app not happen everytime but high probabilty.
so where can i get new version for .so like (libEGL_POWERVR_SGX544_116.so\libGLESv2_POWERVR_SGX544_116.so\libGLESv1_CM_POWERVR_SGX544_116.so)?
by the way , i have asked ti for help ,but them had not supported Android SDK any more.

Hi, Ximeng.

The drivers are built and distributed by our customers for their own platforms so, if TI have already said the do not support these drivers any longer, there is not much we can do.
The issue above seems to be a problem with memory. I remember that the old Android puts a very stringent limit to the amount of memory an application can allocate. Maybe reducing the total memory allocated (e.g. smaller textures) could ease this problem.

Regards.

Carlos.