json-iterator / java

jsoniter (json-iterator) is fast and flexible JSON parser available in Java and Go
http://jsoniter.com/
MIT License
1.51k stars 519 forks source link

JsonStream.serialize error,cause StackOverflowError #352

Open eastlong opened 10 months ago

eastlong commented 10 months ago

Problem: JsonStream.serialize error,cause StackOverflowError

        ByteArrayOutputStream out = new ByteArrayOutputStream();
        JsonStream.serialize(checkParameter.getParams(), out);

remark:checkParameter.getParams() is a map.

execute error:

aused by: java.lang.reflect.InvocationTargetException at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.baidu.openrasp.jsoniter.output.ReflectionObjectEncoder.enocde(ReflectionObjectEncoder.java:77) ... 1020 more Caused by: java.lang.StackOverflowError at java.util.LinkedHashMap.get(LinkedHashMap.java:280) at java.io.ExpiringCache.entryFor(ExpiringCache.java:83) at java.io.ExpiringCache.get(ExpiringCache.java:58) at java.io.Win32FileSystem.canonicalize(Win32FileSystem.java:377) at java.io.File.getCanonicalPath(File.java:559) at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.baidu.openrasp.jsoniter.output.ReflectionObjectEncoder.enocde(ReflectionObjectEncoder.java:77) at com.baidu.openrasp.jsoniter.output.ReflectionObjectEncoder.encode(ReflectionObjectEncoder.java:37) at com.baidu.openrasp.jsoniter.output.JsonStream.writeVal(JsonStream.java:362) at com.baidu.openrasp.jsoniter.output.ReflectionObjectEncoder.writeEncodeTo(ReflectionObjectEncoder.java:121) at com.baidu.openrasp.jsoniter.output.ReflectionObjectEncoder.enocde(ReflectionObjectEncoder.java:78) at com.baidu.openrasp.jsoniter.output.ReflectionObjectEncoder.encode(ReflectionObjectEncoder.java:37) at com.baidu.openrasp.jsoniter.output.JsonStream.writeVal(JsonStream.java:362) at com.baidu.openrasp.jsoniter.output.ReflectionObjectEncoder.writeEncodeTo(ReflectionObjectEncoder.java:121) at com.baidu.openrasp.jsoniter.output.ReflectionObjectEncoder.enocde(ReflectionObjectEncoder.java:78) at com.baidu.openrasp.jsoniter.output.ReflectionObjectEncoder.encode(ReflectionObjectEncoder.java:37) at com.baidu.openrasp.jsoniter.output.JsonStream.writeVal(JsonStream.java:362) at com.baidu.openrasp.jsoniter.output.ReflectionObjectEncoder.writeEncodeTo(ReflectionObjectEncoder.java:121) at com.baidu.openrasp.jsoniter.output.ReflectionObjectEncoder.enocde(ReflectionObjectEncoder.java:78) at com.baidu.openrasp.jsoniter.output.ReflectionObjectEncoder.encode(ReflectionObjectEncoder.java:37) at com.baidu.openrasp.jsoniter.output.JsonStream.writeVal(JsonStream.java:362) at com.baidu.openrasp.jsoniter.output.ReflectionObjectEncoder.writeEncodeTo(ReflectionObjectEncoder.java:121) at com.baidu.openrasp.jsoniter.output.ReflectionObjectEncoder.enocde(ReflectionObjectEncoder.java:78) at com.baidu.openrasp.jsoniter.output.ReflectionObjectEncoder.encode(ReflectionObjectEncoder.java:37) at com.baidu.openrasp.jsoniter.output.JsonStream.writeVal(JsonStream.java:362) at com.baidu.openrasp.jsoniter.output.ReflectionObjectEncoder.writeEncodeTo(ReflectionObjectEncoder.java:121) at com.baidu.openrasp.jsoniter.output.ReflectionObjectEncoder.enocde_(ReflectionObjectEncoder.java:78) at com.baidu.openrasp.jsoniter.output.ReflectionObjectEncoder.encode(ReflectionObjectEncoder.java:37) at com.baidu.openrasp.jsoniter.output.JsonStream.writeVal(JsonStream.java:362) at com.baidu.openrasp.jsoniter.output.ReflectionObjectEncoder.writeEncodeTo(ReflectionObjectEncoder.java:121) ......

Is there any similar error reported? Is there a solution? thx!

AndrewSpourgeon commented 9 months ago

Can we see the exact line at where this error is coming , because the exact code you have mentioned above is not present in the repo