-
Notifications
You must be signed in to change notification settings - Fork 176
Open
Description
Hi,
I'm experiencing the following error when running tests on iOS with kodein 7.26.1 on kotlin 2.1.21 and MacOS 15.5. I don't have anything fancy in my container setup, just some singletons. This error is not always thrown and seems to be a race condition.
fun getMainDI(
platformFunctions: PlatformFunctions
) = DI.Module("main") {
bindSingleton { platformFunctions.licensesFactory }
bindSingleton { platformFunctions.resReader }
bindSingleton<DaoFacade> { DaoSqlite(platformFunctions.driverFactory) }
bindSingleton { TaskManager() }
bindSingleton {
HttpClient(platformFunctions.httpEngine) {
install(ContentNegotiation) {
json()
}
install(Logging) {
logger = Logger.EMPTY
level = LogLevel.INFO
}
// the default timeout differs between platforms and devices
// some have no time out, so define it here
install(HttpTimeout) {
requestTimeoutMillis = 5000
}
}
}
}
The instances are received via by instance()
. Is HashMap on native really thread safe?
kotlin.ArrayIndexOutOfBoundsException
at kotlin.Throwable#<init>(/opt/buildAgent/work/7377bd4dc65e1c03/kotlin/kotlin-native/runtime/src/main/kotlin/kotlin/Throwable.kt:34)
at kotlin.Exception#<init>(/opt/buildAgent/work/7377bd4dc65e1c03/kotlin/kotlin-native/runtime/src/main/kotlin/kotlin/Exceptions.kt:21)
at kotlin.RuntimeException#<init>(/opt/buildAgent/work/7377bd4dc65e1c03/kotlin/kotlin-native/runtime/src/main/kotlin/kotlin/Exceptions.kt:32)
at kotlin.IndexOutOfBoundsException#<init>(/opt/buildAgent/work/7377bd4dc65e1c03/kotlin/kotlin-native/runtime/src/main/kotlin/kotlin/Exceptions.kt:90)
at kotlin.ArrayIndexOutOfBoundsException#<init>(/opt/buildAgent/work/7377bd4dc65e1c03/kotlin/kotlin-native/runtime/src/main/kotlin/kotlin/Exceptions.kt:99)
at <global>.ThrowArrayIndexOutOfBoundsException(/opt/buildAgent/work/7377bd4dc65e1c03/kotlin/kotlin-native/runtime/src/main/kotlin/kotlin/native/internal/RuntimeUtils.kt:33)
at <global>.Kotlin_Array_set(Unknown Source)
at kotlin.collections.HashMap#addKey(/opt/buildAgent/work/7377bd4dc65e1c03/kotlin/libraries/stdlib/native-wasm/src/kotlin/collections/HashMap.kt:360)
at kotlin.collections.HashMap#put(/opt/buildAgent/work/7377bd4dc65e1c03/kotlin/libraries/stdlib/native-wasm/src/kotlin/collections/HashMap.kt:117)
at kotlin.collections.MutableMap#put(/opt/buildAgent/work/7377bd4dc65e1c03/kotlin/libraries/stdlib/native-wasm/src/kotlin/collections/Map.kt:92)
at org.kodein.di.internal.DITreeImpl#find(/Users/runner/work/Kodein/Kodein/kodein-di/src/commonMain/kotlin/org/kodein/di/internal/DITreeImpl.kt:132)
at org.kodein.di.DITree#find(/Users/runner/work/Kodein/Kodein/kodein-di/src/commonMain/kotlin/org/kodein/di/DITree.kt:36)
at org.kodein.di.DITree#find$default(/Users/runner/work/Kodein/Kodein/kodein-di/src/commonMain/kotlin/org/kodein/di/DITree.kt:36)
at org.kodein.di.internal.DIContainerImpl#factory(/Users/runner/work/Kodein/Kodein/kodein-di/src/commonMain/kotlin/org/kodein/di/internal/DIContainerImpl.kt:171)
at org.kodein.di.DIContainer#factory(/Users/runner/work/Kodein/Kodein/kodein-di/src/commonMain/kotlin/org/kodein/di/DIContainer.kt:32)
at org.kodein.di.DIContainer#factory$default(/Users/runner/work/Kodein/Kodein/kodein-di/src/commonMain/kotlin/org/kodein/di/DIContainer.kt:32)
at org.kodein.di.DIContainer#provider(/Users/runner/work/Kodein/Kodein/kodein-di/src/commonMain/kotlin/org/kodein/di/DIContainer.kt:76)
at org.kodein.di.DIContainer#provider(/Users/runner/work/Kodein/Kodein/kodein-di/src/commonMain/kotlin/org/kodein/di/DIContainer.kt:75)
at org.kodein.di.DIContainer#provider$default(/Users/runner/work/Kodein/Kodein/kodein-di/src/commonMain/kotlin/org/kodein/di/DIContainer.kt:75)
at org.kodein.di.Instance$1.invoke#internal(/Users/runner/work/Kodein/Kodein/kodein-di/src/commonMain/kotlin/org/kodein/di/DIAware.kt:208)
at kotlin.Function2#invoke(/Users/teamcity/.gradle/daemon/8.12.1/[K][Suspend]Functions:1)
at org.kodein.di.DIProperty.DIProperty$provideDelegate$1.invoke#internal(/Users/runner/work/Kodein/Kodein/kodein-di/src/commonMain/kotlin/org/kodein/di/properties.kt:57)
at kotlin.Function0#invoke(/Users/teamcity/.gradle/daemon/8.12.1/[K][Suspend]Functions:1)
at kotlin.native.concurrent.SynchronizedLazyImpl#<get-value>(/opt/buildAgent/work/7377bd4dc65e1c03/kotlin/kotlin-native/runtime/src/main/kotlin/kotlin/native/concurrent/Lazy.kt:77)
at kotlin.Lazy#<get-value>(/opt/buildAgent/work/7377bd4dc65e1c03/kotlin/libraries/stdlib/src/kotlin/util/Lazy.kt:27)
at app.pathoshare.shared.main.pages.history.HistoryComponent.<get-dao>#internal(/Users/frederik/builds/t1_P9Ssdn/0/pathology/pathoshare/pathoshare-app/shared/src/commonMain/kotlin/app/pathoshare/shared/main/pages/history/HistoryComponent.kt:30)
at app.pathoshare.shared.main.pages.history.HistoryComponent.HistoryComponent$1.$invokeCOROUTINE$0.invokeSuspend#internal(/Users/frederik/builds/t1_P9Ssdn/0/pathology/pathoshare/pathoshare-app/shared/src/commonMain/kotlin/app/pathoshare/shared/main/pages/history/HistoryComponent.kt:46)
at app.pathoshare.shared.main.pages.history.HistoryComponent.HistoryComponent$1.invoke#internal(/Users/frederik/builds/t1_P9Ssdn/0/pathology/pathoshare/pathoshare-app/shared/src/commonMain/kotlin/app/pathoshare/shared/main/pages/history/HistoryComponent.kt:45)
at kotlin.Function2#invoke(/Users/teamcity/.gradle/daemon/8.12.1/[K][Suspend]Functions:1)
at kotlin.coroutines.intrinsics.createCoroutineUnintercepted$$inlined$createCoroutineFromSuspendFunction$4.invokeSuspend#internal(/opt/buildAgent/work/7377bd4dc65e1c03/kotlin/kotlin-native/runtime/src/main/kotlin/kotlin/coroutines/intrinsics/IntrinsicsNative.kt:254)
at kotlin.coroutines.native.internal.BaseContinuationImpl#invokeSuspend(/opt/buildAgent/work/7377bd4dc65e1c03/kotlin/kotlin-native/runtime/src/main/kotlin/kotlin/coroutines/ContinuationImpl.kt:50)
at kotlin.coroutines.native.internal.BaseContinuationImpl#resumeWith(/opt/buildAgent/work/7377bd4dc65e1c03/kotlin/kotlin-native/runtime/src/main/kotlin/kotlin/coroutines/ContinuationImpl.kt:30)
at kotlin.coroutines.Continuation#resumeWith(/opt/buildAgent/work/7377bd4dc65e1c03/kotlin/libraries/stdlib/src/kotlin/coroutines/Continuation.kt:26)
at kotlinx.coroutines.DispatchedTask#run(/opt/buildAgent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/DispatchedTask.kt:100)
at kotlinx.coroutines.Runnable#run(/opt/buildAgent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/native/src/Runnable.kt:12)
at kotlinx.coroutines.DarwinGlobalQueueDispatcher.DarwinGlobalQueueDispatcher$dispatch$$inlined$autoreleasepool$1.invoke#internal(/opt/buildAgent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/nativeDarwin/src/Dispatchers.kt:22)
at kotlinx.coroutines.DarwinGlobalQueueDispatcher.DarwinGlobalQueueDispatcher$dispatch$$inlined$autoreleasepool$1.$<bridge-DNN>invoke(/opt/buildAgent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/nativeDarwin/src/Dispatchers.kt:21)
at kotlin.Function0#invoke(/Users/teamcity/.gradle/daemon/8.12.1/[K][Suspend]Functions:1)
at <global>._6f72672e6a6574627261696e732e6b6f746c696e783a6b6f746c696e782d636f726f7574696e65732d636f72652f6f70742f6275696c644167656e742f776f726b2f343465633665383530643563363366302f6b6f746c696e782d636f726f7574696e65732d636f72652f6e617469766544617277696e2f7372632f44697370617463686572732e6b74_knbridge8(/opt/buildAgent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/nativeDarwin/src/Dispatchers.kt:21)
at <global>._dispatch_call_block_and_release(Unknown Source)
at <global>._dispatch_client_callout(Unknown Source)
at _dispatch_workloop_invoke.cold.4(Unknown Source)
at <global>._dispatch_queue_override_invoke(Unknown Source)
at <global>._dispatch_root_queue_drain(Unknown Source)
at <global>._dispatch_worker_thread2(Unknown Source)
at <global>._pthread_wqthread(Unknown Source)
at <global>.start_wqthread(Unknown Source)
a second error
kotlin.IllegalStateException: This cannot happen with fixed magic multiplier and grow-only hash array. Have object hashCodes changed?
at kotlin.Throwable#<init>(/opt/buildAgent/work/7377bd4dc65e1c03/kotlin/kotlin-native/runtime/src/main/kotlin/kotlin/Throwable.kt:30)
at kotlin.Exception#<init>(/opt/buildAgent/work/7377bd4dc65e1c03/kotlin/kotlin-native/runtime/src/main/kotlin/kotlin/Exceptions.kt:23)
at kotlin.RuntimeException#<init>(/opt/buildAgent/work/7377bd4dc65e1c03/kotlin/kotlin-native/runtime/src/main/kotlin/kotlin/Exceptions.kt:34)
at kotlin.IllegalStateException#<init>(/opt/buildAgent/work/7377bd4dc65e1c03/kotlin/kotlin-native/runtime/src/main/kotlin/kotlin/Exceptions.kt:70)
at kotlin.collections.HashMap.rehash#internal(/opt/buildAgent/work/7377bd4dc65e1c03/kotlin/libraries/stdlib/native-wasm/src/kotlin/collections/HashMap.kt:302)
at kotlin.collections.HashMap.ensureCapacity#internal(/opt/buildAgent/work/7377bd4dc65e1c03/kotlin/libraries/stdlib/native-wasm/src/kotlin/collections/HashMap.kt:253)
at kotlin.collections.HashMap.ensureExtraCapacity#internal(/opt/buildAgent/work/7377bd4dc65e1c03/kotlin/libraries/stdlib/native-wasm/src/kotlin/collections/HashMap.kt:233)
at kotlin.collections.HashMap#addKey(/opt/buildAgent/work/7377bd4dc65e1c03/kotlin/libraries/stdlib/native-wasm/src/kotlin/collections/HashMap.kt:356)
at kotlin.collections.HashMap#put(/opt/buildAgent/work/7377bd4dc65e1c03/kotlin/libraries/stdlib/native-wasm/src/kotlin/collections/HashMap.kt:117)
at kotlin.collections.MutableMap#put(/opt/buildAgent/work/7377bd4dc65e1c03/kotlin/libraries/stdlib/native-wasm/src/kotlin/collections/Map.kt:92)
at org.kodein.di.internal.DITreeImpl#find(/Users/runner/work/Kodein/Kodein/kodein-di/src/commonMain/kotlin/org/kodein/di/internal/DITreeImpl.kt:132)
at org.kodein.di.DITree#find(/Users/runner/work/Kodein/Kodein/kodein-di/src/commonMain/kotlin/org/kodein/di/DITree.kt:36)
at org.kodein.di.DITree#find$default(/Users/runner/work/Kodein/Kodein/kodein-di/src/commonMain/kotlin/org/kodein/di/DITree.kt:36)
at org.kodein.di.internal.DIContainerImpl#factory(/Users/runner/work/Kodein/Kodein/kodein-di/src/commonMain/kotlin/org/kodein/di/internal/DIContainerImpl.kt:171)
at org.kodein.di.DIContainer#factory(/Users/runner/work/Kodein/Kodein/kodein-di/src/commonMain/kotlin/org/kodein/di/DIContainer.kt:32)
at org.kodein.di.DIContainer#factory$default(/Users/runner/work/Kodein/Kodein/kodein-di/src/commonMain/kotlin/org/kodein/di/DIContainer.kt:32)
at org.kodein.di.DIContainer#provider(/Users/runner/work/Kodein/Kodein/kodein-di/src/commonMain/kotlin/org/kodein/di/DIContainer.kt:76)
at org.kodein.di.DIContainer#provider(/Users/runner/work/Kodein/Kodein/kodein-di/src/commonMain/kotlin/org/kodein/di/DIContainer.kt:75)
at org.kodein.di.DIContainer#provider$default(/Users/runner/work/Kodein/Kodein/kodein-di/src/commonMain/kotlin/org/kodein/di/DIContainer.kt:75)
at org.kodein.di.Instance$1.invoke#internal(/Users/runner/work/Kodein/Kodein/kodein-di/src/commonMain/kotlin/org/kodein/di/DIAware.kt:208)
at kotlin.Function2#invoke(/Users/teamcity/.gradle/daemon/8.12.1/[K][Suspend]Functions:1)
at org.kodein.di.DIProperty.DIProperty$provideDelegate$1.invoke#internal(/Users/runner/work/Kodein/Kodein/kodein-di/src/commonMain/kotlin/org/kodein/di/properties.kt:57)
at kotlin.Function0#invoke(/Users/teamcity/.gradle/daemon/8.12.1/[K][Suspend]Functions:1)
at kotlin.native.concurrent.SynchronizedLazyImpl#<get-value>(/opt/buildAgent/work/7377bd4dc65e1c03/kotlin/kotlin-native/runtime/src/main/kotlin/kotlin/native/concurrent/Lazy.kt:77)
at kotlin.Lazy#<get-value>(/opt/buildAgent/work/7377bd4dc65e1c03/kotlin/libraries/stdlib/src/kotlin/util/Lazy.kt:27)
at app.pathoshare.shared.main.pages.PagesComponent#<get-patho>(/Users/frederik/builds/t1_P9Ssdn/0/pathology/pathoshare/pathoshare-app/shared/src/commonMain/kotlin/app/pathoshare/shared/main/pages/PagesComponent.kt:57)
at app.pathoshare.shared.main.pages.PagesComponent.PagesComponent$2.invoke#internal(/Users/frederik/builds/t1_P9Ssdn/0/pathology/pathoshare/pathoshare-app/shared/src/commonMain/kotlin/app/pathoshare/shared/main/pages/PagesComponent.kt:64)
at kotlin.Function2#invoke(/Users/teamcity/.gradle/daemon/8.12.1/[K][Suspend]Functions:1)
at kotlin.coroutines.intrinsics.createCoroutineUnintercepted$$inlined$createCoroutineFromSuspendFunction$4.invokeSuspend#internal(/opt/buildAgent/work/7377bd4dc65e1c03/kotlin/kotlin-native/runtime/src/main/kotlin/kotlin/coroutines/intrinsics/IntrinsicsNative.kt:254)
at kotlin.coroutines.native.internal.BaseContinuationImpl#invokeSuspend(/opt/buildAgent/work/7377bd4dc65e1c03/kotlin/kotlin-native/runtime/src/main/kotlin/kotlin/coroutines/ContinuationImpl.kt:50)
at kotlin.coroutines.native.internal.BaseContinuationImpl#resumeWith(/opt/buildAgent/work/7377bd4dc65e1c03/kotlin/kotlin-native/runtime/src/main/kotlin/kotlin/coroutines/ContinuationImpl.kt:30)
at kotlin.coroutines.Continuation#resumeWith(/opt/buildAgent/work/7377bd4dc65e1c03/kotlin/libraries/stdlib/src/kotlin/coroutines/Continuation.kt:26)
at kotlinx.coroutines.DispatchedTask#run(/opt/buildAgent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/common/src/internal/DispatchedTask.kt:100)
at kotlinx.coroutines.Runnable#run(/opt/buildAgent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/native/src/Runnable.kt:12)
at kotlinx.coroutines.DarwinGlobalQueueDispatcher.DarwinGlobalQueueDispatcher$dispatch$$inlined$autoreleasepool$1.invoke#internal(/opt/buildAgent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/nativeDarwin/src/Dispatchers.kt:22)
at kotlinx.coroutines.DarwinGlobalQueueDispatcher.DarwinGlobalQueueDispatcher$dispatch$$inlined$autoreleasepool$1.$<bridge-DNN>invoke(/opt/buildAgent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/nativeDarwin/src/Dispatchers.kt:21)
at kotlin.Function0#invoke(/Users/teamcity/.gradle/daemon/8.12.1/[K][Suspend]Functions:1)
at <global>._6f72672e6a6574627261696e732e6b6f746c696e783a6b6f746c696e782d636f726f7574696e65732d636f72652f6f70742f6275696c644167656e742f776f726b2f343465633665383530643563363366302f6b6f746c696e782d636f726f7574696e65732d636f72652f6e617469766544617277696e2f7372632f44697370617463686572732e6b74_knbridge8(/opt/buildAgent/work/44ec6e850d5c63f0/kotlinx-coroutines-core/nativeDarwin/src/Dispatchers.kt:21)
at <global>._dispatch_call_block_and_release(Unknown Source)
at <global>._dispatch_client_callout(Unknown Source)
at _dispatch_workloop_invoke.cold.4(Unknown Source)
at <global>._dispatch_queue_override_invoke(Unknown Source)
at <global>._dispatch_root_queue_drain(Unknown Source)
at <global>._dispatch_worker_thread2(Unknown Source)
at <global>._pthread_wqthread(Unknown Source)
at <global>.start_wqthread(Unknown Source)
Metadata
Metadata
Assignees
Labels
No labels