Page MenuHomePhabricator

Crash when attempting to parse SiteMatrix data
Closed, ResolvedPublic1 Estimated Story Points

Description

Steps to reproduce

  1. Open the app
  2. Tap the search bar to open the search fragment
  3. Tap the language selector button

Stack trace

FATAL EXCEPTION: main
Process: org.wikipedia.dev, PID: 2470
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at path $
     at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:224)
     at org.wikipedia.json.PostProcessingTypeAdapter$1.read(PostProcessingTypeAdapter.java:26)
     at com.google.gson.Gson.fromJson(Gson.java:887)
     at com.google.gson.Gson.fromJson(Gson.java:952)
     at com.google.gson.Gson.fromJson(Gson.java:925)
     at org.wikipedia.language.SiteMatrixClient$1.onResponse(SiteMatrixClient.java:49)
     at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:70)
     at android.os.Handler.handleCallback(Handler.java:790)
     at android.os.Handler.dispatchMessage(Handler.java:99)
     at android.os.Looper.loop(Looper.java:164)
     at android.app.ActivityThread.main(ActivityThread.java:6494)
     at java.lang.reflect.Method.invoke(Native Method)
     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
  Caused by: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at path $
     at com.google.gson.internal.bind.JsonTreeReader.expect(JsonTreeReader.java:162)
     at com.google.gson.internal.bind.JsonTreeReader.beginObject(JsonTreeReader.java:87)
     at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:213)
     at org.wikipedia.json.PostProcessingTypeAdapter$1.read(PostProcessingTypeAdapter.java:26) 
     at com.google.gson.Gson.fromJson(Gson.java:887) 
     at com.google.gson.Gson.fromJson(Gson.java:952) 
     at com.google.gson.Gson.fromJson(Gson.java:925) 
     at org.wikipedia.language.SiteMatrixClient$1.onResponse(SiteMatrixClient.java:49) 
     at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:70) 
     at android.os.Handler.handleCallback(Handler.java:790) 
     at android.os.Handler.dispatchMessage(Handler.java:99) 
     at android.os.Looper.loop(Looper.java:164) 
     at android.app.ActivityThread.main(ActivityThread.java:6494) 
     at java.lang.reflect.Method.invoke(Native Method) 
     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) 

Environments observed

App version: dev
Android OS versions: O
Device model: Nexus 6P
Device language: en

Event Timeline

What was your current wiki language before tapping the selector?

Change 421180 had a related patch set uploaded (by Dbrant; owner: Dbrant):
[apps/android/wikipedia@master] Prevent possible crash when parsing SiteMatrix response.

https://gerrit.wikimedia.org/r/421180

Change 421180 merged by jenkins-bot:
[apps/android/wikipedia@master] Prevent possible crash when parsing SiteMatrix response.

https://gerrit.wikimedia.org/r/421180

ABorbaWMF subscribed.

Looks good to me on 2.7.228-alpha-2018-03-26. Tried a few devices, no crashes.