-
Notifications
You must be signed in to change notification settings - Fork 15
Closed
Description
SDK version: 4.2.6
Environment: Android
Describe the bug
Causes the app to crash with the following error.
Unexpected special floating-point value Infinity with key primitive. By default, non-finite floating point values are prohibited because they do not conform JSON specification. It is possible to deserialize them using 'JsonBuilder.allowSpecialFloatingPointValues = true'
Current output: Infinity
To Reproduce
CustomerIO.screen(screenName, { test: Infinity })
Expected behavior
The app not to crash (+-Infinity & NaN values to be managed)
Additional context
This is the raw stack trace.
kotlinx.serialization.json.internal.JsonEncodingException: Unexpected special floating-point value Infinity with key primitive. By default, non-finite floating point values are prohibited because they do not conform JSON specification. It is possible to deserialize them using 'JsonBuilder.allowSpecialFloatingPointValues = true'
Current output: Infinity
at kotlinx.serialization.json.internal.JsonExceptionsKt.InvalidFloatingPointEncoded(JsonExceptions.kt:66)
at kotlinx.serialization.json.internal.AbstractJsonTreeEncoder.encodeTaggedDouble(TreeJsonEncoder.kt:90)
at kotlinx.serialization.json.internal.AbstractJsonTreeEncoder.encodeTaggedDouble(TreeJsonEncoder.kt:25)
at kotlinx.serialization.internal.TaggedEncoder.encodeDouble(Tagged.kt:73)
at kotlinx.serialization.internal.DoubleSerializer.serialize(Primitives.kt:145)
at kotlinx.serialization.internal.DoubleSerializer.serialize(Primitives.kt:142)
at kotlinx.serialization.json.internal.AbstractJsonTreeEncoder.encodeSerializableValue(TreeJsonEncoder.kt:285)
at kotlinx.serialization.json.internal.AbstractJsonTreeEncoder.encodeSerializableValue(TreeJsonEncoder.kt:82)
at kotlinx.serialization.json.internal.TreeJsonEncoderKt.writeJson(TreeJsonEncoder.kt:21)
at kotlinx.serialization.json.Json.encodeToJsonElement(Json.kt:117)
at com.segment.analytics.kotlin.core.utilities.JsonUtils.toJsonElement(JSON.kt:424)
at com.segment.analytics.kotlin.core.utilities.JsonUtils.toJsonElement(JSON.kt:274)
at com.segment.analytics.kotlin.core.utilities.JsonUtils.toJsonElement(JSON.kt:400)
at com.segment.analytics.kotlin.core.utilities.JsonUtils.toJsonElement(JSON.kt:309)
at com.segment.analytics.kotlin.core.utilities.JsonUtils.toJsonElement(JSON.kt:408)
at com.segment.analytics.kotlin.core.utilities.JsonUtils.toJsonElement(JSON.kt:274)
at com.segment.analytics.kotlin.core.utilities.JsonUtils.toJsonElement(JSON.kt:400)
at com.segment.analytics.kotlin.core.utilities.JsonUtils.toJsonElement(JSON.kt:274)
at com.segment.analytics.kotlin.core.utilities.JsonUtils.toJsonElement(JSON.kt:400)
at com.segment.analytics.kotlin.core.utilities.JsonUtils.toJsonElement(JSON.kt:274)
at com.segment.analytics.kotlin.core.utilities.JsonUtils.toJsonElement(JSON.kt:400)
at com.segment.analytics.kotlin.core.utilities.AnySerializer.serialize(AnySerializer.kt:22)
at kotlinx.serialization.json.internal.AbstractJsonTreeEncoder.encodeSerializableValue(TreeJsonEncoder.kt:285)
at kotlinx.serialization.internal.NullableSerializer.serialize(NullableSerializer.kt:23)
at kotlinx.serialization.json.internal.AbstractJsonTreeEncoder.encodeSerializableValue(TreeJsonEncoder.kt:285)
at kotlinx.serialization.internal.TaggedEncoder.encodeSerializableElement(Tagged.kt:137)
at kotlinx.serialization.internal.MapLikeSerializer.serialize(CollectionSerializers.kt:123)
at kotlinx.serialization.json.internal.AbstractJsonTreeEncoder.encodeSerializableValue(TreeJsonEncoder.kt:285)
at kotlinx.serialization.json.internal.TreeJsonEncoderKt.writeJson(TreeJsonEncoder.kt:21)
at kotlinx.serialization.json.Json.encodeToJsonElement(Json.kt:117)
at com.segment.analytics.kotlin.core.Analytics.screen(Analytics.kt:395)
at com.segment.analytics.kotlin.core.Analytics.screen$default(Analytics.kt:386)
at io.customer.sdk.CustomerIO.screenImpl(CustomerIO.kt:265)
at io.customer.sdk.DataPipelineInstance.screen(DataPipelineInstance.kt:223)
at io.customer.sdk.DataPipelineInstance.screen(DataPipelineInstance.kt:207)
at io.customer.reactnative.sdk.CustomerIOReactNativeModule.screen(CustomerIOReactNativeModule.kt:127)
at java.lang.reflect.Method.invoke(Method.java)
at com.facebook.react.bridge.JavaMethodWrapper.invoke(JavaMethodWrapper.java:372)
at com.facebook.react.bridge.JavaModuleWrapper.invoke(JavaModuleWrapper.java:146)
at com.facebook.jni.NativeRunnable.run(NativeRunnable.java)
at android.os.Handler.handleCallback(Handler.java:959)
at android.os.Handler.dispatchMessage(Handler.java:100)
at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:27)
at android.os.Looper.loopOnce(Looper.java:257)
at android.os.Looper.loop(Looper.java:342)
at com.facebook.react.bridge.queue.MessageQueueThreadImpl$4.run(MessageQueueThreadImpl.java:235)
at java.lang.Thread.run(Thread.java:1012)