0
votes

My application was throwing StackOverflowError. Found out that our application logs the Exception in form of JSON and had below code.

GSON.toJson(object) //here object can be my application exception or any runtime exception

To my surprise it GSON.toJson throws StackOverflowError.

Tried below setup to verify:

public static void main(String[] args) {
    Gson GSON = new Gson();
    GSON.toJson(new NullPointerException());
  }

Stacktrace:

Exception in thread "main" java.lang.StackOverflowError
    at com.google.gson.stream.JsonWriter.string(JsonWriter.java:519)
    at com.google.gson.stream.JsonWriter.writeDeferredName(JsonWriter.java:387)
    at com.google.gson.stream.JsonWriter.beginObject(JsonWriter.java:300)
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:190)
    at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:68)
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:89)
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:195)
    at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:68)
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:89)
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:195)
    at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:68)
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:89)
    at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:195)

Can someone tell why I can't get JSON of any exception?

NOTE: This happens in only our application

1
This is due to circular reference, see this answer: stackoverflow.com/a/8199566/2257172 - vip
Possible duplicate of GSON an Java Throwable - vip
Thanks I did not see the post. Anyway I was not getting this error in my new project, found out in Gson 2.6.1 this error doesn't pop. I was using 2.2.2 earlier - Bikas Katwal

1 Answers

0
votes

Upgrading to version Gson 2.6.1 solved the problem