Forums - Adreno crash in Android 5 on EsxGfxMem::GpuAddr()

4 posts / 0 new
Last post
Adreno crash in Android 5 on EsxGfxMem::GpuAddr()
Nicholas - Synthesia
Join Date: 11 Oct 15
Posts: 3
Posted: Sun, 2015-10-11 20:16

Hello, hopefully you guys can help us track this down!

We were getting quite a few reports from our users that our (OpenGL ES 2, NativeActivity) app would crash right at startup.  Between Google Play's crash reporting and Amazon's new Device Farm service, we were able to track things down to certain Adreno devices running Android 5, 5.0.1, and 5.1 (so far).  Several users have tried downgrading to 4.4, where the app would immediately work again.

It seems to reproduce every time on the affected hardware, but never on other devices.  The most common crashes are on the HTC One M9 (htc_himauhl, htc_himaul, htc_himawhl, htc_himawl, and htc_himaulatt) with some Sony devices following close behind (402SO, SO-03G, SOV31, and E6553).

A typical stack trace looks like this:

#00 pc 0016acca /system/vendor/lib/egl/libGLESv2_adreno.so (EsxGfxMem::GpuAddr() const+1)
#01 pc 00132bcf /system/vendor/lib/egl/libGLESv2_adreno.so (A4xContext::ConfigureVisibilityPass(EsxBinningLayout const*, unsigned int)+62)
#02 pc 00132ef7 /system/vendor/lib/egl/libGLESv2_adreno.so (A4xContext::HwInsertVisibilityPass(unsigned int, unsigned int)+26)
#03 pc 000b8cd7 /system/vendor/lib/egl/libGLESv2_adreno.so (EsxContext::ProcessAndSubmitRendering(EsxFlushReason)+2930)
#04 pc 0015eff9 /system/vendor/lib/egl/libGLESv2_adreno.so (EsxCmdMgr::Flush(EsxFlushReason)+432)
#05 pc 000b785d /system/vendor/lib/egl/libGLESv2_adreno.so (EsxContext::SwapBuffers(EsxRect const*, unsigned int, EglResourceAccessInfo*)+132)
#06 pc 001073f5 /system/vendor/lib/egl/libGLESv2_adreno.so (EglContext::SwapBuffers(EsxRect const*, unsigned int, EglResourceAccessInfo*)+44)
#07 pc 0010486f /system/vendor/lib/egl/libGLESv2_adreno.so (EglApi::SwapBuffers(void*, void*)+126)
#08 pc 00005ea9 /system/vendor/lib/egl/libEGL_adreno.so (eglSwapBuffers+20)
#09 pc 000126e9 /system/lib/libEGL.so (eglSwapBuffers+320)

We've tried inserting a flush before SwapBuffers, but then it crashes on the flush instead.  Removing both makes it crash in some other OpenGL call.  But the first five stack frames (eventually crashing in EsxGfxMem::GpuAddr) are always the same.

If it helps, here is a link to the APK: https://dl.dropboxusercontent.com/u/28500103/Synthesia-AdrenoBug.apk

Searching for the various function names near the top of that trace have turned up absolutely nothing.  I've never seen Google so quiet on a subject before.  My hope is that you guys have seen this internally already.  If you know of any workarounds, that would be very helpful!

Thanks!

Nicholas

  • Up0
  • Down0
Nicholas - Synthesia
Join Date: 11 Oct 15
Posts: 3
Posted: Wed, 2015-11-25 11:00

Have you guys had any luck reproducing the crash with the provided APK?

(We continue to get emails from Adreno users each day about this.  Having anything better to tell them than "we're still not sure what's going wrong" would be very helpful.  Thanks again for trying to look into this!)

  • Up0
  • Down0
mhfeldma Moderator
Join Date: 29 Nov 12
Posts: 310
Posted: Thu, 2015-12-10 15:59

We've taken a look at the app and confirmed the crash.  We also noticed that the issue seems fixed when run on Android M (6.0.1).  Would you be able to confirm that as well?

  • Up0
  • Down0
Nicholas - Synthesia
Join Date: 11 Oct 15
Posts: 3
Posted: Fri, 2015-12-11 19:01

That's good news that it's fixed in 6.0.1!  We haven't tried it there yet, but I'll take your word for it.

Were you able to tell which behavior in our app was causing the crash?  We'd still like to avoid whatever the root cause is so that our 5.x users (many of which will never see 6.x on their current devices) can use our app today.  (Being able to say "download our update" is a better support story than "go buy a new device".)

The app uses an almost trivial shader and just streams out a single vertex buffer each frame.  My hypothesis was that it was just some quirky ordering that the newer Adreno cores didn't like for whatever reason.  If you had any advice for a workaround on 5.x devices, I would be grateful!

 

Thanks,

Nicholas

  • Up0
  • Down0
or Register

Opinions expressed in the content posted here are the personal opinions of the original authors, and do not necessarily reflect those of Qualcomm Incorporated or its subsidiaries (“Qualcomm”). The content is provided for informational purposes only and is not meant to be an endorsement or representation by Qualcomm or any other party. This site may also provide links or references to non-Qualcomm sites and resources. Qualcomm makes no representations, warranties, or other commitments whatsoever about any non-Qualcomm sites or third-party resources that may be referenced, accessible from, or linked to this site.