Skip to content

Serialization fails from Map<String, String> to json in kotlin native for ios #3053

@nikkysliv

Description

@nikkysliv

Describe the bug
I have a hash map of <String, String>. This map we are storing in preference for persistance storage. Before storing we are converting this map to json using Json.encodeToString(map)
On Android platform it works fine. On ios platform getting below exception

Crashed: Thread
0 Sony LIV 0x2fc2ce4 kfun:kotlinx.serialization.json.internal#printQuoted__at__kotlin.text.StringBuilder(kotlin.String){} + 15 (CharSequence.kt:15)
1 Sony LIV 0x2fbff84 kfun:kotlinx.serialization.json.internal.StreamingJsonEncoder#encodeSerializableValue(kotlinx.serialization.SerializationStrategy<0:0>;0:0){0§<kotlin.Any?>} + 72 (StreamingJsonEncoder.kt:72)
2 Sony LIV 0x2e97a80 kfun:kotlinx.serialization.internal.MapLikeSerializer#serialize(kotlinx.serialization.encoding.Encoder;1:2){} + 23 (Iterator.kt:23)
3 Sony LIV 0x2fbff84 kfun:kotlinx.serialization.json.internal.StreamingJsonEncoder#encodeSerializableValue(kotlinx.serialization.SerializationStrategy<0:0>;0:0){0§<kotlin.Any?>} + 72 (StreamingJsonEncoder.kt:72)
4 Sony LIV 0x2f9f504 kfun:kotlinx.serialization.json.Json#encodeToString(kotlinx.serialization.SerializationStrategy<0:0>;0:0){0§<kotlin.Any?>}kotlin.String + 100 (JsonStreams.kt:100)
5 Sony LIV 0x30c0bec kfun:com.sonyliv.godavariunicore.util#toJsonString__at__kotlin.collections.Map<kotlin.String,kotlin.String>?(){}kotlin.String + 30 (GodavariUtils.kt:30)
6 Sony LIV 0x30b8958 kfun:com.sonyliv.godavariunicore.sdk.GodavariSdkManager.GodavariSdkManager$storeLatestUserPropertySnapshot$1.invoke#internal + 115 (GodavariSdkManager.kt:115)
7 Sony LIV 0x2d1d494 kfun:kotlin.coroutines.intrinsics.createCoroutineUnintercepted$$inlined$createCoroutineFromSuspendFunction$2.invokeSuspend#internal + 248740 (IntrinsicsNative.kt:248740)
8 Sony LIV 0x2d1b188 kfun:kotlin.coroutines.native.internal.BaseContinuationImpl#resumeWith(kotlin.Result<kotlin.Any?>){} + 50 (ContinuationImpl.kt:50)
9 Sony LIV 0x2e33604 kfun:kotlinx.coroutines.DispatchedTask#run(){} + 26 (Continuation.kt:26)
10 Sony LIV 0x2e35674 kfun:kotlinx.coroutines.internal.LimitedDispatcher.Worker.run#internal + 119 (LimitedDispatcher.kt:119)
11 Sony LIV 0x2e505b0 kfun:kotlinx.coroutines.MultiWorkerDispatcher.MultiWorkerDispatcher$workerRunLoop$1.$invokeCOROUTINE$0.invokeSuspend#internal + 101 (MultithreadedDispatchers.kt:101)
12 Sony LIV 0x2d1b188 kfun:kotlin.coroutines.native.internal.BaseContinuationImpl#resumeWith(kotlin.Result<kotlin.Any?>){} + 50 (ContinuationImpl.kt:50)
13 Sony LIV 0x2e33604 kfun:kotlinx.coroutines.DispatchedTask#run(){} + 26 (Continuation.kt:26)
14 Sony LIV 0x2df3ab4 kfun:kotlinx.coroutines.EventLoopImplBase#processNextEvent(){}kotlin.Long + 15 (ObjectiveCUtils.kt:15)
15 Sony LIV 0x2e4874c kfun:kotlinx.coroutines#runBlocking(kotlin.coroutines.CoroutineContext;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,0:0>){0§<kotlin.Any?>}0:0 + 52 (EventLoop.common.kt:52)
16 Sony LIV 0x2e4f8e0 kfun:kotlinx.coroutines.MultiWorkerDispatcher.MultiWorkerDispatcher$1.MultiWorkerDispatcher$1$invoke$$inlined$apply$1.$invoke(){}#internal + 121 (MultithreadedDispatchers.kt:121)
17 Sony LIV 0x327c250 Worker::processQueueElement(bool) + 50432
18 Sony LIV 0x327b8a0 (anonymous namespace)::workerRoutine(void*) + 47952
19 libsystem_pthread.dylib 0x3344 _pthread_start + 136
20 libsystem_pthread.dylib 0xab8 thread_start + 8

To Reproduce
Not able to reproduce, this is happening on production builds

Expected behavior
Should not crash and work without issue on ios

Environment

  • Kotlin version: 2.1.21
  • Library version: 1.7.0 org.jetbrains.kotlinx:kotlinx-serialization-json
  • Kotlin platforms: JVM, Native ios and apple tv
  • Gradle version: 8.2.0
  • IDE version: Android Studio Meerkat | 2024.3.1 Canary 7
  • Other relevant context

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions