6

We've published an app in the Google Play store which has the possibility to show advertisements from Google DoubleClick for Publishers.

On certain advertisements the app crashes on the OnePlus 6. We do not get a stacktrace in our crash reporting, but do receive error logs in Google Play console as shown below. We are certain that it is being caused by ads, since it only appears on version which has ads. Also, the crash appears during the time the ad is being rendered.

OnePlus 6 crash

The backtrace in Google Play shows the following log for every crash:

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 0 >>> com.myapp.app <<<

backtrace:
  #00  pc 000000000076eb50  /vendor/lib/libllvm-glnext.so (ShaderObjects::loadProgramBinary(CompilerContext*, void*, unsigned int, QGLC_LINKPROGRAM_RESULT*)+855)
  #01  pc 00000000006ddba5  /vendor/lib/libllvm-glnext.so (CompilerContext::loadProgramBinary(void*, unsigned int, QGLC_LINKPROGRAM_RESULT*)+108)
  #02  pc 000000000077fb73  /vendor/lib/libllvm-glnext.so (QGLCLoadProgramBinary(void*, void*, unsigned int, QGLC_LINKPROGRAM_RESULT*)+54)
  #03  pc 00000000001612b1  /vendor/lib/egl/libGLESv2_adreno.so (EsxShaderCompiler::LoadProgramBinaryBlob(EsxContext*, EsxProgram*, void const*, unsigned int, EsxInfoLog*)+164)
  #04  pc 0000000000140191  /vendor/lib/egl/libGLESv2_adreno.so (EsxProgram::LoadProgramBinary(EsxContext*, unsigned int, void const*, int)+186)
  #05  pc 00000000000aff67  /vendor/lib/egl/libGLESv2_adreno.so (EsxContext::GlProgramBinary(unsigned int, unsigned int, void const*, int)+230)
  #06  pc 00000000000991d9  /vendor/lib/egl/libGLESv2_adreno.so (glProgramBinary+40)
  #07  pc 0000000001748bff  /data/app/com.android.chrome-2SPtcpkG5Ik-UldbIaNfyw==/base.apk

Locally we managed to reproduce this and got the following trace: https://gist.github.com/Sammekl/66fc018f81a04d21717440924a206bdb

Does anyone know how to either fix or capture this crash? it's impacting a really large userbase right now.

Sammekl
  • 446
  • 3
  • 18
  • if there is no stacktrace, how do you know the ad is the culprit? – Tim Jun 07 '18 at 09:00
  • @TimCastelijns We own a OnePlus 6 phone ourself and noticed that the app crashed while the ad was being displayed, easily reproducible – Sammekl Jun 07 '18 at 09:03
  • do you get a stacktrace when reproducing it? – Tim Jun 07 '18 at 09:04
  • @TimCastelijns Not a stracktrace, but we get something similar: https://gist.github.com/Sammekl/66fc018f81a04d21717440924a206bdb – Sammekl Jun 07 '18 at 09:06
  • @Sammekl not getting google advertise? where i can get it? – Vishva Dave Jun 07 '18 at 09:48
  • @Vishva Dave you should get it on home screen or when you press article – Sammekl Jun 07 '18 at 10:03
  • 1
    @Sammekl If i find something i will let you know – Vishva Dave Jun 07 '18 at 10:08
  • @Sammekl How the version of you 'com.google.android.gms',and do you try the new version? – Better Jun 09 '18 at 06:04
  • @Better We have version 11.4.2 due to a backwards compatibility issue we had before. Do you suggest we update this version to latest? (16.0.0) – Sammekl Jun 11 '18 at 07:06
  • @Sammekl I'm not sure whether the method is useful, have met before upgrade 'com.google.android.gms' to solve a bug. And my app also encounter this problem, but we don't have one, plus mobile phone, so can't reproduce this bug, and validation – Better Jun 12 '18 at 06:33

1 Answers1

3

I found the problem. It was caused by installing this app on top of the previous app. The previous app used some form of GPU caching in webviews which interferes with the new app.

The GPU caching was located in the internal storage location of the app:

data/data/com.sammekl.myapp/app_webview/GPUCache

I resolved this issue by recursively removing all files in this directory by using the Kotlin File extension function called deleteRecursively() during first time startup of the new app.

val gpuCache = File("${context.filesDir.parent}/app_webview/GPUCache")
gpuCache.deleteRecursively()
Sammekl
  • 446
  • 3
  • 18
  • as the new app, the app_webview should not is empty? – Better Jun 12 '18 at 03:51
  • @Better the app_webview directory is created upon showing a webview, it contains local storage, cookies and some other caching stuff. Our app had the app_webview stuff from the old app. This somehow broke functionality – Sammekl Jun 12 '18 at 06:37