We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Simplified rsocket-kotlin code to minimal example:
@Test fun selectTest() = test { val priorityChannel = Channel<String>(Int.MAX_VALUE) val commonChannel = Channel<String>(Int.MAX_VALUE) GlobalScope.launch { repeat(5) { priorityChannel.send("123") delay(100) } } GlobalScope.launch { repeat(5) { commonChannel.send("NOT") delay(100) } } delay(200) GlobalScope.launch(Dispatchers.Unconfined) { repeat(10) { val v = select<String> { priorityChannel.onReceive { it } commonChannel.onReceive { it } } println(v) } }.join() }
Error:
Uncaught Kotlin exception: kotlin.native.IncorrectDereferenceException: illegal attempt to access non-shared io.rsocket.kotlin.core.RSocketTest.$selectTest$lambda-14$lambda-13$<anonymous>_6_8COROUTINE$23@428a9a08 bound to `worker 1` from `DefaultDispatcher` at 0 test.kexe 0x0000000102d7b8b0 kfun:kotlin.native.concurrent.WorkerBoundReference#<get-value>(){}1:0 + 1264 at 1 test.kexe 0x0000000102e23d83 kfun:kotlinx.coroutines.internal.ShareableObject#useRef(){}1:0 + 115 at 2 test.kexe 0x0000000102e248b4 kfun:kotlinx.coroutines.internal.ShareableBlock.invoke#internal.99 + 100 at 3 test.kexe 0x0000000102d767da kfun:kotlin.coroutines.intrinsics.<no name provided>_16.invokeSuspend_19#internal + 250 at 4 test.kexe 0x0000000102d757e3 kfun:kotlin.coroutines.native.internal.BaseContinuationImpl#resumeWith(kotlin.Result<kotlin.Any?>){} + 211 at 5 test.kexe 0x0000000102e10a86 kfun:kotlinx.coroutines.internal#resumeCancellableWith@kotlin.coroutines.Continuation<0:0>(kotlin.Result<0:0>;kotlin.Function1<kotlin.Throwable,kotlin.Unit>?){0§<kotlin.Any?>} + 854 at 6 test.kexe 0x0000000102dd4001 kfun:kotlinx.coroutines#startCoroutineImpl(kotlinx.coroutines.CoroutineStart;0:1;kotlin.coroutines.Continuation<0:0>;kotlin.Function1<kotlin.Throwable,kotlin.Unit>?;kotlin.coroutines.SuspendFunction1<0:1,0:0>){0§<kotlin.Any?>;1§<kotlin.Any?>} + 385 at 7 test.kexe 0x0000000102e1c5ed kfun:kotlinx.coroutines.startCoroutine#internal + 493 at 8 test.kexe 0x0000000102e1c3bb kfun:kotlinx.coroutines#startCoroutine(kotlinx.coroutines.CoroutineStart;0:1;kotlin.coroutines.Continuation<0:0>;kotlin.Function1<kotlin.Throwable,kotlin.Unit>?;kotlin.coroutines.SuspendFunction1<0:1,0:0>){0§<kotlin.Any?>;1§<kotlin.Any?>} + 155 at 9 test.kexe 0x0000000102df113a kfun:kotlinx.coroutines.channels.AbstractChannel.ReceiveSelect.completeResumeReceive#internal + 218 at 10 test.kexe 0x0000000102df298e kfun:kotlinx.coroutines.channels.AbstractSendChannel#offerInternal(1:0){}kotlin.Any + 254 at 11 test.kexe 0x0000000102dfbed2 kfun:kotlinx.coroutines.channels.LinkedListChannel#offerInternal(1:0){}kotlin.Any + 146 at 12 test.kexe 0x0000000102df2d32 kfun:kotlinx.coroutines.channels.AbstractSendChannel#send(1:0){} + 146 at 13 test.kexe 0x0000000102e99aec kfun:io.rsocket.kotlin.core.RSocketTest.$selectTest$lambda-14$lambda-11COROUTINE$21.invokeSuspend#internal + 828 at 14 test.kexe 0x0000000102d757e3 kfun:kotlin.coroutines.native.internal.BaseContinuationImpl#resumeWith(kotlin.Result<kotlin.Any?>){} + 211 at 15 test.kexe 0x0000000102e10f2d kfun:kotlinx.coroutines.DispatchedTask#run(){} + 669 at 16 test.kexe 0x0000000102ddf2b1 kfun:kotlinx.coroutines.EventLoopImplBase#processNextEvent(){}kotlin.Long + 3217 at 17 test.kexe 0x0000000102e1cf60 kfun:kotlinx.coroutines#runEventLoop(kotlinx.coroutines.EventLoop?;kotlin.Function0<kotlin.Boolean>){} + 544 at 18 test.kexe 0x0000000102e21ea0 kfun:kotlinx.coroutines.WorkerCoroutineDispatcherImpl.$start$lambda-0$FUNCTION_REFERENCE$273.$<bridge-UNN>invoke(){}#internal + 256 at 19 test.kexe 0x0000000102f5155f _ZN6Worker19processQueueElementEb + 1007 at 20 test.kexe 0x0000000102f5111d _ZN12_GLOBAL__N_113workerRoutineEPv + 45 at 21 libsystem_pthread.dylib 0x00007fff2037a950 _pthread_start + 224 at 22 libsystem_pthread.dylib 0x00007fff2037647b thread_start + 15
Kotlin version: 1.4.21 Coroutines version: 1.4.2-native-mt
The text was updated successfully, but these errors were encountered:
BTW, workaround is to just manually freeze block, which is passed to onReceive
onReceive
Sorry, something went wrong.
Closing as "won't fix" in the favour of #462 (comment)
No branches or pull requests
Simplified rsocket-kotlin code to minimal example:
Error:
Kotlin version: 1.4.21
Coroutines version: 1.4.2-native-mt
The text was updated successfully, but these errors were encountered: