Skip to content

K/N thread sanitizer data races #3378

New issue

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

Closed
qwwdfsad opened this issue Jul 27, 2022 · 1 comment
Closed

K/N thread sanitizer data races #3378

qwwdfsad opened this issue Jul 27, 2022 · 1 comment
Assignees
Labels

Comments

@qwwdfsad
Copy link
Collaborator

CancellableContinuationImpl.getParentHandle/setParentHandle
WARNING: ThreadSanitizer: data race (pid=88874)
  Read of size 8 at 0x7b1400020b60 by thread T3:
    #0 kfun:kotlinx.coroutines.CancellableContinuationImpl.<get-parentHandle>#internal CancellableContinuationImpl.kt:75 (newMM.kexe:x86_64+0x10019410b)
    #1 kfun:kotlinx.coroutines.CancellableContinuationImpl#detachChild(){} CancellableContinuationImpl.kt:495 (newMM.kexe:x86_64+0x10019affb)
    #2 kfun:kotlinx.coroutines.CancellableContinuationImpl.detachChildIfNonResuable#internal CancellableContinuationImpl.kt:488 (newMM.kexe:x86_64+0x10019af32)
    #3 kfun:kotlinx.coroutines.CancellableContinuationImpl#cancel(kotlin.Throwable?){}kotlin.Boolean CancellableContinuationImpl.kt:174 (newMM.kexe:x86_64+0x10019623c)
    #4 kfun:kotlinx.coroutines.CancellableContinuationImpl#parentCancelled(kotlin.Throwable){} CancellableContinuationImpl.kt:190 (newMM.kexe:x86_64+0x100196420)
    #5 kfun:kotlinx.coroutines.ChildContinuation#invoke(kotlin.Throwable?){} JobSupport.kt:1475 (newMM.kexe:x86_64+0x1001cbf2d)
    #6 kfun:kotlinx.coroutines.JobSupport.notifyCancelling#internal JobSupport.kt:330 (newMM.kexe:x86_64+0x1001b8f46)
    #7 kfun:kotlinx.coroutines.JobSupport.tryMakeCancelling#internal JobSupport.kt:795 (newMM.kexe:x86_64+0x1001c1a21)
    #8 kfun:kotlinx.coroutines.JobSupport.makeCancelling#internal JobSupport.kt:732 (newMM.kexe:x86_64+0x1001c0f01)
    #9 kfun:kotlinx.coroutines.JobSupport#cancelImpl(kotlin.Any?){}kotlin.Boolean JobSupport.kt:671 (newMM.kexe:x86_64+0x1001bf5b1)
    #10 kfun:kotlinx.coroutines.JobSupport#cancelCoroutine(kotlin.Throwable?){}kotlin.Boolean JobSupport.kt:658 (newMM.kexe:x86_64+0x1001bf142)
    #11 kfun:kotlinx.coroutines.TimeoutCoroutine.run#internal Timeout.kt:154 (newMM.kexe:x86_64+0x1001d3218)
    #12 kfun:kotlinx.coroutines.WorkerDispatcher.DisposableBlock.invoke#internal MultithreadedDispatchers.kt:46 (newMM.kexe:x86_64+0x10030407b)
    #13 kfun:kotlinx.coroutines.WorkerDispatcher.DisposableBlock.$<bridge-UNN>invoke(){}#internal MultithreadedDispatchers.kt:42 (newMM.kexe:x86_64+0x100304228)
    #14 WorkerLaunchpad Internal.kt:87 (newMM.kexe:x86_64+0x10002b05e)
    #15 Worker::processQueueElement(bool) <null>:2 (newMM.kexe:x86_64+0x100e086d1)
    #16 (anonymous namespace)::workerRoutine(void*) <null>:2 (newMM.kexe:x86_64+0x100e0784c)

  Previous write of size 8 at 0x7b1400020b60 by main thread:
    #0 UpdateHeapRef <null>:2 (newMM.kexe:x86_64+0x100dff931)
    #1 kfun:kotlinx.coroutines.CancellableContinuationImpl.<set-parentHandle>#internal CancellableContinuationImpl.kt:75 (newMM.kexe:x86_64+0x1001941e1)
    #2 kfun:kotlinx.coroutines.CancellableContinuationImpl.installParentHandle#internal CancellableContinuationImpl.kt:312 (newMM.kexe:x86_64+0x10019851b)
    #3 kfun:kotlinx.coroutines.CancellableContinuationImpl#initCancellability(){} CancellableContinuationImpl.kt:98 (newMM.kexe:x86_64+0x10019486b)
    #4 kfun:kotlinx.coroutines#delay(kotlin.Long){} Delay.kt:16 (newMM.kexe:x86_64+0x1001a63d6)
    #5 kfun:kotlinx.coroutines#delay(kotlin.time.Duration){} Delay.kt:136 (newMM.kexe:x86_64+0x1001a6dfb)
    #6 kfun:kotlinx.coroutines.WithTimeoutOrNullDurationTest.$testNestedTimeout$lambda$21$lambda$20$lambda$19COROUTINE$618.invokeSuspend#internal WithTimeoutOrNullDurationTest.kt:124 (newMM.kexe:x86_64+0x100554f9b)
    #7 kfun:kotlinx.coroutines.WithTimeoutOrNullDurationTest.$testNestedTimeout$lambda$21$lambda$20$lambda$19COROUTINE$618.invoke#internal WithTimeoutOrNullDurationTest.kt:123 (newMM.kexe:x86_64+0x100555397)
    #8 kfun:kotlinx.coroutines.WithTimeoutOrNullDurationTest.$testNestedTimeout$lambda$21$lambda$20$lambda$19COROUTINE$618.invoke#internal.1444 WithTimeoutOrNullDurationTest.kt:1 (newMM.kexe:x86_64+0x10055549b)
    #9 kfun:kotlinx.coroutines.intrinsics#startUndispatchedOrReturnIgnoreTimeout__at__kotlinx.coroutines.internal.ScopeCoroutine<0:0>(0:1;kotlin.coroutines.SuspendFunction1<0:1,0:0>){0§<kotlin.Any?>;1§<kotlin.Any?>}kotlin.Any? Undispatched.kt:99 (newMM.kexe:x86_64+0x1002d4baa)
    #10 kfun:kotlinx.coroutines.setupTimeout#internal Timeout.kt:146 (newMM.kexe:x86_64+0x1001d2d6d)
    #11 kfun:kotlinx.coroutines#withTimeout(kotlin.Long;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,0:0>){0§<kotlin.Any?>}0:0 Timeout.kt:18 (newMM.kexe:x86_64+0x1001d18be)
    #12 kfun:kotlinx.coroutines#withTimeout(kotlin.time.Duration;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,0:0>){0§<kotlin.Any?>}0:0 Timeout.kt:71 (newMM.kexe:x86_64+0x1001d1a0a)
    #13 kfun:kotlinx.coroutines.WithTimeoutOrNullDurationTest.$testNestedTimeout$lambda$21$lambda$20COROUTINE$619.invokeSuspend#internal WithTimeoutOrNullDurationTest.kt:123 (newMM.kexe:x86_64+0x1005558f4)
    #14 kfun:kotlinx.coroutines.WithTimeoutOrNullDurationTest.$testNestedTimeout$lambda$21$lambda$20COROUTINE$619.invoke#internal WithTimeoutOrNullDurationTest.kt:121 (newMM.kexe:x86_64+0x100555d97)
    #15 kfun:kotlinx.coroutines.WithTimeoutOrNullDurationTest.$testNestedTimeout$lambda$21$lambda$20COROUTINE$619.invoke#internal.1446 WithTimeoutOrNullDurationTest.kt:1 (newMM.kexe:x86_64+0x100555e9b)
    #16 kfun:kotlinx.coroutines.intrinsics#startUndispatchedOrReturnIgnoreTimeout__at__kotlinx.coroutines.internal.ScopeCoroutine<0:0>(0:1;kotlin.coroutines.SuspendFunction1<0:1,0:0>){0§<kotlin.Any?>;1§<kotlin.Any?>}kotlin.Any? Undispatched.kt:99 (newMM.kexe:x86_64+0x1002d4baa)
    #17 kfun:kotlinx.coroutines.setupTimeout#internal Timeout.kt:146 (newMM.kexe:x86_64+0x1001d2d6d)
    #18 kfun:kotlinx.coroutines.$withTimeoutOrNullCOROUTINE$2706#invokeSuspend(kotlin.Result<kotlin.Any?>){}kotlin.Any? Timeout.kt:100 (newMM.kexe:x86_64+0x1001d2506)
    #19 kfun:kotlinx.coroutines#withTimeoutOrNull(kotlin.Long;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,0:0>){0§<kotlin.Any?>}0:0? Timeout.kt:95 (newMM.kexe:x86_64+0x1001d2931)
    #20 kfun:kotlinx.coroutines#withTimeoutOrNull(kotlin.time.Duration;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,0:0>){0§<kotlin.Any?>}0:0? Timeout.kt:134 (newMM.kexe:x86_64+0x1001d1ee8)
    #21 kfun:kotlinx.coroutines.WithTimeoutOrNullDurationTest.$testNestedTimeout$lambda$21COROUTINE$620.invokeSuspend#internal WithTimeoutOrNullDurationTest.kt:121 (newMM.kexe:x86_64+0x100556291)
    #22 kfun:kotlin.coroutines.native.internal.BaseContinuationImpl#resumeWith(kotlin.Result<kotlin.Any?>){} ContinuationImpl.kt:26 (newMM.kexe:x86_64+0x10001d1b2)
    #23 kfun:kotlinx.coroutines.DispatchedTask#run(){} DispatchedTask.kt:88 (newMM.kexe:x86_64+0x1002c0720)
    #24 kfun:kotlinx.coroutines.EventLoopImplBase#processNextEvent(){}kotlin.Long EventLoop.common.kt:284 (newMM.kexe:x86_64+0x1001aad02)
    #25 kfun:kotlinx.coroutines.BlockingCoroutine.joinBlocking#internal Builders.kt:83 (newMM.kexe:x86_64+0x1002fdf17)
    #26 kfun:kotlinx.coroutines#runBlocking(kotlin.coroutines.CoroutineContext;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,0:0>){0§<kotlin.Any?>}0:0 Builders.kt:56 (newMM.kexe:x86_64+0x1002fd0aa)
    #27 kfun:kotlinx.coroutines.TestBase#runTest(kotlin.Function1<kotlin.Throwable,kotlin.Boolean>?;kotlin.collections.List<kotlin.Function1<kotlin.Throwable,kotlin.Boolean>>;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,kotlin.Unit>){} TestBase.kt:86 (newMM.kexe:x86_64+0x100d97868)
    #28 kfun:kotlinx.coroutines.TestBase#runTest$default(kotlin.Function1<kotlin.Throwable,kotlin.Boolean>?;kotlin.collections.List<kotlin.Function1<kotlin.Throwable,kotlin.Boolean>>?;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,kotlin.Unit>;kotlin.Int){} TestBase.kt:78 (newMM.kexe:x86_64+0x100d98270)
    #29 kfun:kotlinx.coroutines.WithTimeoutOrNullDurationTest#testNestedTimeout(){} WithTimeoutOrNullDurationTest.kt:120 (newMM.kexe:x86_64+0x10054a567)
    #30 kfun:kotlinx.coroutines.$WithTimeoutOrNullDurationTest$test$0.$testNestedTimeout$FUNCTION_REFERENCE$392.invoke#internal WithTimeoutOrNullDurationTest.kt:120 (newMM.kexe:x86_64+0x1005638b0)
    #31 kfun:kotlinx.coroutines.$WithTimeoutOrNullDurationTest$test$0.$testNestedTimeout$FUNCTION_REFERENCE$392.$<bridge-UNNN>invoke(-1:0){}#internal WithTimeoutOrNullDurationTest.kt:120 (newMM.kexe:x86_64+0x100563bf6)
    #32 kfun:kotlin.native.internal.test.BaseClassSuite.TestCase#run(){} TestSuite.kt:85 (newMM.kexe:x86_64+0x100065e76)
    #33 kfun:kotlin.native.internal.test.TestRunner.run#internal TestRunner.kt:238 (newMM.kexe:x86_64+0x100059602)
    #34 kfun:kotlin.native.internal.test.TestRunner.runIteration#internal TestRunner.kt:261 (newMM.kexe:x86_64+0x10005d22f)
    #35 kfun:kotlin.native.internal.test.TestRunner#run(){}kotlin.Int TestRunner.kt:283 (newMM.kexe:x86_64+0x10005eba1)
    #36 kfun:kotlin.native.internal.test#testLauncherEntryPoint(kotlin.Array<kotlin.String>){}kotlin.Int Launcher.kt:30 (newMM.kexe:x86_64+0x100049d03)
    #37 kfun:kotlinx.coroutines#mainNoExit(kotlin.Array<kotlin.String>){} Launcher.kt:25 (newMM.kexe:x86_64+0x100d9e6b1)
    #38 Konan_start Launcher.kt:24 (newMM.kexe:x86_64+0x100d9e82c)
    #39 Init_and_run_start <null>:2 (newMM.kexe:x86_64+0x100e23528)
    #40 Konan_main <null>:2 (newMM.kexe:x86_64+0x100e235c8)
    #41 start <null>:2 (dyld:x86_64+0x551d)

  Location is heap block of size 72 at 0x7b1400020b20 allocated by main thread:
    #0 calloc <null>:3 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x534a4)
    #1 kotlin::mm::internal::ObjectFactoryStorage<8ul, kotlin::gc::AllocatorWithGC<kotlin::gc::Allocator, kotlin::gc::ConcurrentMarkAndSweep::ThreadData> >::Node::Create(kotlin::gc::AllocatorWithGC<kotlin::gc::Allocator, kotlin::gc::ConcurrentMarkAndSweep::ThreadData>&, unsigned long) <null>:2 (newMM.kexe:x86_64+0x100dd5c90)
    #2 kotlin::mm::internal::ObjectFactoryStorage<8ul, kotlin::gc::AllocatorWithGC<kotlin::gc::Allocator, kotlin::gc::ConcurrentMarkAndSweep::ThreadData> >::Producer::Insert(unsigned long) <null>:2 (newMM.kexe:x86_64+0x100dd56b1)
    #3 AllocInstance <null>:2 (newMM.kexe:x86_64+0x100dfeaad)
    #4 kfun:kotlinx.coroutines#delay(kotlin.Long){} Delay.kt:16 (newMM.kexe:x86_64+0x1001a633c)
    #5 kfun:kotlinx.coroutines#delay(kotlin.time.Duration){} Delay.kt:136 (newMM.kexe:x86_64+0x1001a6dfb)
    #6 kfun:kotlinx.coroutines.WithTimeoutOrNullDurationTest.$testNestedTimeout$lambda$21$lambda$20$lambda$19COROUTINE$618.invokeSuspend#internal WithTimeoutOrNullDurationTest.kt:124 (newMM.kexe:x86_64+0x100554f9b)
    #7 kfun:kotlinx.coroutines.WithTimeoutOrNullDurationTest.$testNestedTimeout$lambda$21$lambda$20$lambda$19COROUTINE$618.invoke#internal WithTimeoutOrNullDurationTest.kt:123 (newMM.kexe:x86_64+0x100555397)
    #8 kfun:kotlinx.coroutines.WithTimeoutOrNullDurationTest.$testNestedTimeout$lambda$21$lambda$20$lambda$19COROUTINE$618.invoke#internal.1444 WithTimeoutOrNullDurationTest.kt:1 (newMM.kexe:x86_64+0x10055549b)
    #9 kfun:kotlinx.coroutines.intrinsics#startUndispatchedOrReturnIgnoreTimeout__at__kotlinx.coroutines.internal.ScopeCoroutine<0:0>(0:1;kotlin.coroutines.SuspendFunction1<0:1,0:0>){0§<kotlin.Any?>;1§<kotlin.Any?>}kotlin.Any? Undispatched.kt:99 (newMM.kexe:x86_64+0x1002d4baa)
    #10 kfun:kotlinx.coroutines.setupTimeout#internal Timeout.kt:146 (newMM.kexe:x86_64+0x1001d2d6d)
    #11 kfun:kotlinx.coroutines#withTimeout(kotlin.Long;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,0:0>){0§<kotlin.Any?>}0:0 Timeout.kt:18 (newMM.kexe:x86_64+0x1001d18be)
    #12 kfun:kotlinx.coroutines#withTimeout(kotlin.time.Duration;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,0:0>){0§<kotlin.Any?>}0:0 Timeout.kt:71 (newMM.kexe:x86_64+0x1001d1a0a)
    #13 kfun:kotlinx.coroutines.WithTimeoutOrNullDurationTest.$testNestedTimeout$lambda$21$lambda$20COROUTINE$619.invokeSuspend#internal WithTimeoutOrNullDurationTest.kt:123 (newMM.kexe:x86_64+0x1005558f4)
    #14 kfun:kotlinx.coroutines.WithTimeoutOrNullDurationTest.$testNestedTimeout$lambda$21$lambda$20COROUTINE$619.invoke#internal WithTimeoutOrNullDurationTest.kt:121 (newMM.kexe:x86_64+0x100555d97)
    #15 kfun:kotlinx.coroutines.WithTimeoutOrNullDurationTest.$testNestedTimeout$lambda$21$lambda$20COROUTINE$619.invoke#internal.1446 WithTimeoutOrNullDurationTest.kt:1 (newMM.kexe:x86_64+0x100555e9b)
    #16 kfun:kotlinx.coroutines.intrinsics#startUndispatchedOrReturnIgnoreTimeout__at__kotlinx.coroutines.internal.ScopeCoroutine<0:0>(0:1;kotlin.coroutines.SuspendFunction1<0:1,0:0>){0§<kotlin.Any?>;1§<kotlin.Any?>}kotlin.Any? Undispatched.kt:99 (newMM.kexe:x86_64+0x1002d4baa)
    #17 kfun:kotlinx.coroutines.setupTimeout#internal Timeout.kt:146 (newMM.kexe:x86_64+0x1001d2d6d)
    #18 kfun:kotlinx.coroutines.$withTimeoutOrNullCOROUTINE$2706#invokeSuspend(kotlin.Result<kotlin.Any?>){}kotlin.Any? Timeout.kt:100 (newMM.kexe:x86_64+0x1001d2506)
    #19 kfun:kotlinx.coroutines#withTimeoutOrNull(kotlin.Long;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,0:0>){0§<kotlin.Any?>}0:0? Timeout.kt:95 (newMM.kexe:x86_64+0x1001d2931)
    #20 kfun:kotlinx.coroutines#withTimeoutOrNull(kotlin.time.Duration;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,0:0>){0§<kotlin.Any?>}0:0? Timeout.kt:134 (newMM.kexe:x86_64+0x1001d1ee8)
    #21 kfun:kotlinx.coroutines.WithTimeoutOrNullDurationTest.$testNestedTimeout$lambda$21COROUTINE$620.invokeSuspend#internal WithTimeoutOrNullDurationTest.kt:121 (newMM.kexe:x86_64+0x100556291)
    #22 kfun:kotlin.coroutines.native.internal.BaseContinuationImpl#resumeWith(kotlin.Result<kotlin.Any?>){} ContinuationImpl.kt:26 (newMM.kexe:x86_64+0x10001d1b2)
    #23 kfun:kotlinx.coroutines.DispatchedTask#run(){} DispatchedTask.kt:88 (newMM.kexe:x86_64+0x1002c0720)
    #24 kfun:kotlinx.coroutines.EventLoopImplBase#processNextEvent(){}kotlin.Long EventLoop.common.kt:284 (newMM.kexe:x86_64+0x1001aad02)
    #25 kfun:kotlinx.coroutines.BlockingCoroutine.joinBlocking#internal Builders.kt:83 (newMM.kexe:x86_64+0x1002fdf17)
    #26 kfun:kotlinx.coroutines#runBlocking(kotlin.coroutines.CoroutineContext;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,0:0>){0§<kotlin.Any?>}0:0 Builders.kt:56 (newMM.kexe:x86_64+0x1002fd0aa)
    #27 kfun:kotlinx.coroutines.TestBase#runTest(kotlin.Function1<kotlin.Throwable,kotlin.Boolean>?;kotlin.collections.List<kotlin.Function1<kotlin.Throwable,kotlin.Boolean>>;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,kotlin.Unit>){} TestBase.kt:86 (newMM.kexe:x86_64+0x100d97868)
    #28 kfun:kotlinx.coroutines.TestBase#runTest$default(kotlin.Function1<kotlin.Throwable,kotlin.Boolean>?;kotlin.collections.List<kotlin.Function1<kotlin.Throwable,kotlin.Boolean>>?;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,kotlin.Unit>;kotlin.Int){} TestBase.kt:78 (newMM.kexe:x86_64+0x100d98270)
    #29 kfun:kotlinx.coroutines.WithTimeoutOrNullDurationTest#testNestedTimeout(){} WithTimeoutOrNullDurationTest.kt:120 (newMM.kexe:x86_64+0x10054a567)
    #30 kfun:kotlinx.coroutines.$WithTimeoutOrNullDurationTest$test$0.$testNestedTimeout$FUNCTION_REFERENCE$392.invoke#internal WithTimeoutOrNullDurationTest.kt:120 (newMM.kexe:x86_64+0x1005638b0)
    #31 kfun:kotlinx.coroutines.$WithTimeoutOrNullDurationTest$test$0.$testNestedTimeout$FUNCTION_REFERENCE$392.$<bridge-UNNN>invoke(-1:0){}#internal WithTimeoutOrNullDurationTest.kt:120 (newMM.kexe:x86_64+0x100563bf6)
    #32 kfun:kotlin.native.internal.test.BaseClassSuite.TestCase#run(){} TestSuite.kt:85 (newMM.kexe:x86_64+0x100065e76)
    #33 kfun:kotlin.native.internal.test.TestRunner.run#internal TestRunner.kt:238 (newMM.kexe:x86_64+0x100059602)
    #34 kfun:kotlin.native.internal.test.TestRunner.runIteration#internal TestRunner.kt:261 (newMM.kexe:x86_64+0x10005d22f)
    #35 kfun:kotlin.native.internal.test.TestRunner#run(){}kotlin.Int TestRunner.kt:283 (newMM.kexe:x86_64+0x10005eba1)
    #36 kfun:kotlin.native.internal.test#testLauncherEntryPoint(kotlin.Array<kotlin.String>){}kotlin.Int Launcher.kt:30 (newMM.kexe:x86_64+0x100049d03)
    #37 kfun:kotlinx.coroutines#mainNoExit(kotlin.Array<kotlin.String>){} Launcher.kt:25 (newMM.kexe:x86_64+0x100d9e6b1)
    #38 Konan_start Launcher.kt:24 (newMM.kexe:x86_64+0x100d9e82c)
    #39 Init_and_run_start <null>:2 (newMM.kexe:x86_64+0x100e23528)
    #40 Konan_main <null>:2 (newMM.kexe:x86_64+0x100e235c8)
    #41 start <null>:2 (dyld:x86_64+0x551d)

  Thread T3 (tid=8194867, running) created by main thread at:
    #0 pthread_create <null>:3 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x2bb6f)
    #1 Kotlin_Worker_startInternal <null>:2 (newMM.kexe:x86_64+0x100e0cfe4)
    #2 kfun:kotlin.native.concurrent.Worker.Companion#start(kotlin.Boolean;kotlin.String?){}kotlin.native.concurrent.Worker Worker.kt:43 (newMM.kexe:x86_64+0x10002ee13)
    #3 kfun:kotlin.native.concurrent.Worker.Companion#start$default(kotlin.Boolean;kotlin.String?;kotlin.Int){}kotlin.native.concurrent.Worker Worker.kt:42 (newMM.kexe:x86_64+0x10002ef74)
    #4 kfun:kotlinx.coroutines.WorkerDispatcher#<init>(kotlin.String){} MultithreadedDispatchers.kt:25 (newMM.kexe:x86_64+0x10030329a)
    #5 kfun:kotlinx.coroutines.DefaultExecutor#<init>(){} CoroutineContext.kt:13 (newMM.kexe:x86_64+0x1002ff65d)
    #6 kotlin::mm::InitSingleton(kotlin::mm::ThreadData*, ObjHeader**, TypeInfo const*, void (*)(ObjHeader*), ObjHeader**) <null>:2 (newMM.kexe:x86_64+0x100dff504)
    #7 InitSingleton <null>:2 (newMM.kexe:x86_64+0x100dfef35)
    #8 kfun:kotlinx.coroutines.$init_global#internal.188 CoroutineContext.kt:44 (newMM.kexe:x86_64+0x1002fe5dd)
    #9 CallInitGlobalPossiblyLock <null>:2 (newMM.kexe:x86_64+0x100e1e6e9)
    #10 kfun:kotlinx.coroutines#newCoroutineContext__at__kotlinx.coroutines.CoroutineScope(kotlin.coroutines.CoroutineContext){}kotlin.coroutines.CoroutineContext CoroutineContext.kt:1 (newMM.kexe:x86_64+0x1002fe8e7)
    #11 kfun:kotlinx.coroutines#runBlocking(kotlin.coroutines.CoroutineContext;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,0:0>){0§<kotlin.Any?>}0:0 Builders.kt:46 (newMM.kexe:x86_64+0x1002fcf94)
    #12 kfun:kotlinx.coroutines.TestBase#runTest(kotlin.Function1<kotlin.Throwable,kotlin.Boolean>?;kotlin.collections.List<kotlin.Function1<kotlin.Throwable,kotlin.Boolean>>;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,kotlin.Unit>){} TestBase.kt:86 (newMM.kexe:x86_64+0x100d97868)
    #13 kfun:kotlinx.coroutines.TestBase#runTest$default(kotlin.Function1<kotlin.Throwable,kotlin.Boolean>?;kotlin.collections.List<kotlin.Function1<kotlin.Throwable,kotlin.Boolean>>?;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,kotlin.Unit>;kotlin.Int){} TestBase.kt:78 (newMM.kexe:x86_64+0x100d98270)
    #14 kfun:kotlinx.coroutines.AbstractCoroutineTest#testNotifications(){} AbstractCoroutineTest.kt:13 (newMM.kexe:x86_64+0x10030e3a3)
    #15 kfun:kotlinx.coroutines.$AbstractCoroutineTest$test$0.$testNotifications$FUNCTION_REFERENCE$4.invoke#internal AbstractCoroutineTest.kt:13 (newMM.kexe:x86_64+0x100311740)
    #16 kfun:kotlinx.coroutines.$AbstractCoroutineTest$test$0.$testNotifications$FUNCTION_REFERENCE$4.$<bridge-UNNN>invoke(-1:0){}#internal AbstractCoroutineTest.kt:13 (newMM.kexe:x86_64+0x100311a86)
    #17 kfun:kotlin.native.internal.test.BaseClassSuite.TestCase#run(){} TestSuite.kt:85 (newMM.kexe:x86_64+0x100065e76)
    #18 kfun:kotlin.native.internal.test.TestRunner.run#internal TestRunner.kt:238 (newMM.kexe:x86_64+0x100059602)
    #19 kfun:kotlin.native.internal.test.TestRunner.runIteration#internal TestRunner.kt:261 (newMM.kexe:x86_64+0x10005d22f)
    #20 kfun:kotlin.native.internal.test.TestRunner#run(){}kotlin.Int TestRunner.kt:283 (newMM.kexe:x86_64+0x10005eba1)
    #21 kfun:kotlin.native.internal.test#testLauncherEntryPoint(kotlin.Array<kotlin.String>){}kotlin.Int Launcher.kt:30 (newMM.kexe:x86_64+0x100049d03)
    #22 kfun:kotlinx.coroutines#mainNoExit(kotlin.Array<kotlin.String>){} Launcher.kt:25 (newMM.kexe:x86_64+0x100d9e6b1)
    #23 Konan_start Launcher.kt:24 (newMM.kexe:x86_64+0x100d9e82c)
    #24 Init_and_run_start <null>:2 (newMM.kexe:x86_64+0x100e23528)
    #25 Konan_main <null>:2 (newMM.kexe:x86_64+0x100e235c8)
    #26 start <null>:2 (dyld:x86_64+0x551d)

SUMMARY: ThreadSanitizer: data race CancellableContinuationImpl.kt:75 in kfun:kotlinx.coroutines.CancellableContinuationImpl.<get-parentHandle>#internal
JobNode.getNode/setJob
WARNING: ThreadSanitizer: data race (pid=88874)
  Read of size 8 at 0x7b100012dfb0 by thread T3:
    #0 kfun:kotlinx.coroutines.JobNode#<get-job>(){}kotlinx.coroutines.JobSupport JobSupport.kt:1355 (newMM.kexe:x86_64+0x1001cb3cd)
    #1 kfun:kotlinx.coroutines.JobNode#dispose(){} JobSupport.kt:1358 (newMM.kexe:x86_64+0x1001cb6a7)
    #2 kfun:kotlinx.coroutines.CancellableContinuationImpl#detachChild(){} CancellableContinuationImpl.kt:496 (newMM.kexe:x86_64+0x10019b10a)
    #3 kfun:kotlinx.coroutines.CancellableContinuationImpl.detachChildIfNonResuable#internal CancellableContinuationImpl.kt:488 (newMM.kexe:x86_64+0x10019af32)
    #4 kfun:kotlinx.coroutines.CancellableContinuationImpl.tryResumeImpl#internal CancellableContinuationImpl.kt:460 (newMM.kexe:x86_64+0x10019ab62)
    #5 kfun:kotlinx.coroutines.CancellableContinuationImpl#tryResume(1:0;kotlin.Any?;kotlin.Function1<kotlin.Throwable,kotlin.Unit>?){}kotlin.Any? CancellableContinuationImpl.kt:505 (newMM.kexe:x86_64+0x10019b3c6)
    #6 kfun:kotlinx.coroutines.channels.AbstractChannel.ReceiveElement.tryResumeReceive#internal AbstractChannel.kt:901 (newMM.kexe:x86_64+0x1001dc8de)
    #7 kfun:kotlinx.coroutines.channels.ArrayChannel#offerInternal(1:0){}kotlin.Any ArrayChannel.kt:58 (newMM.kexe:x86_64+0x1001f7b3a)
    #8 kfun:kotlinx.coroutines.channels.AbstractSendChannel#send(1:0){} AbstractChannel.kt:134 (newMM.kexe:x86_64+0x1001e30a4)
    #9 kfun:kotlinx.coroutines.channels.ChannelCoroutine#send(1:0){} ChannelCoroutine.kt:1 (newMM.kexe:x86_64+0x10020b0e3)
    #10 kfun:kotlinx.coroutines.flow.FlowInvariantsTest.$emptyContextTest$collector$lambda$79COROUTINE$952.invokeSuspend#internal FlowInvariantsTest.kt:266 (newMM.kexe:x86_64+0x1006bf746)
    #11 kfun:kotlinx.coroutines.flow.FlowInvariantsTest.$emptyContextTest$collector$lambda$79COROUTINE$952.invoke#internal FlowInvariantsTest.kt:265 (newMM.kexe:x86_64+0x1006bfb47)
    #12 kfun:kotlinx.coroutines.flow.ChannelFlowBuilder.collectTo#internal Builders.kt:322 (newMM.kexe:x86_64+0x10021e372)
    #13 kfun:kotlinx.coroutines.flow.internal.ChannelFlow.$<get-collectToFun>$lambda$0COROUTINE$2729.invokeSuspend#internal ChannelFlow.kt:60 (newMM.kexe:x86_64+0x100240b57)
    #14 kfun:kotlin.coroutines.native.internal.BaseContinuationImpl#resumeWith(kotlin.Result<kotlin.Any?>){} ContinuationImpl.kt:26 (newMM.kexe:x86_64+0x10001d1b2)
    #15 kfun:kotlinx.coroutines.DispatchedTask#run(){} DispatchedTask.kt:88 (newMM.kexe:x86_64+0x1002c0720)
    #16 kfun:kotlinx.coroutines.WorkerDispatcher.dispatch$lambda$0#internal MultithreadedDispatchers.kt:28 (newMM.kexe:x86_64+0x100303b5b)
    #17 kfun:kotlinx.coroutines.WorkerDispatcher.$dispatch$lambda$0$FUNCTION_REFERENCE$1631.invoke#internal MultithreadedDispatchers.kt:28 (newMM.kexe:x86_64+0x1003042c9)
    #18 kfun:kotlinx.coroutines.WorkerDispatcher.$dispatch$lambda$0$FUNCTION_REFERENCE$1631.$<bridge-UNN>invoke(){}#internal MultithreadedDispatchers.kt:28 (newMM.kexe:x86_64+0x1003043d8)
    #19 WorkerLaunchpad Internal.kt:87 (newMM.kexe:x86_64+0x10002b05e)
    #20 Worker::processQueueElement(bool) <null>:2 (newMM.kexe:x86_64+0x100e086d1)
    #21 (anonymous namespace)::workerRoutine(void*) <null>:2 (newMM.kexe:x86_64+0x100e0784c)

  Previous write of size 8 at 0x7b100012dfb0 by main thread:
    #0 UpdateHeapRef <null>:2 (newMM.kexe:x86_64+0x100dff931)
    #1 kfun:kotlinx.coroutines.JobNode#<set-job>(kotlinx.coroutines.JobSupport){} JobSupport.kt:1355 (newMM.kexe:x86_64+0x1001cb511)
    #2 kfun:kotlinx.coroutines.JobSupport.makeNode#internal JobSupport.kt:519 (newMM.kexe:x86_64+0x1001bc85f)
    #3 kfun:kotlinx.coroutines.JobSupport#invokeOnCompletion(kotlin.Boolean;kotlin.Boolean;kotlin.Function1<kotlin.Throwable?,kotlin.Unit>){}kotlinx.coroutines.DisposableHandle JobSupport.kt:458 (newMM.kexe:x86_64+0x1001bb908)
    #4 kfun:kotlinx.coroutines.Job#invokeOnCompletion$default(kotlin.Boolean;kotlin.Boolean;kotlin.Function1<kotlin.Throwable?,kotlin.Unit>;kotlin.Int){}kotlinx.coroutines.DisposableHandle Job.kt:341 (newMM.kexe:x86_64+0x1001b0531)
    #5 kfun:kotlinx.coroutines.CancellableContinuationImpl.installParentHandle#internal CancellableContinuationImpl.kt:308 (newMM.kexe:x86_64+0x1001984e4)
    #6 kfun:kotlinx.coroutines.CancellableContinuationImpl#getResult(){}kotlin.Any? CancellableContinuationImpl.kt:271 (newMM.kexe:x86_64+0x100198111)
    #7 kfun:kotlinx.coroutines.channels.AbstractChannel.receiveSuspend#internal AbstractChannel.kt:17 (newMM.kexe:x86_64+0x1001d62b0)
    #8 kfun:kotlinx.coroutines.channels.AbstractChannel#receiveCatching(){}kotlinx.coroutines.channels.ChannelResult<1:0> AbstractChannel.kt:633 (newMM.kexe:x86_64+0x1001d6ceb)
    #9 kfun:kotlinx.coroutines.channels.ChannelCoroutine#receiveCatching(){}kotlinx.coroutines.channels.ChannelResult<1:0> ChannelCoroutine.kt:1 (newMM.kexe:x86_64+0x10020ad48)
    #10 kfun:kotlinx.coroutines.flow.$emitAllImplCOROUTINE$2720.invokeSuspend#internal Channels.kt:51 (newMM.kexe:x86_64+0x100224182)
    #11 kfun:kotlinx.coroutines.flow.emitAllImpl#internal Channels.kt:32 (newMM.kexe:x86_64+0x100224c1f)
    #12 kfun:kotlinx.coroutines.flow#emitAll__at__kotlinx.coroutines.flow.FlowCollector<0:0>(kotlinx.coroutines.channels.ReceiveChannel<0:0>){0§<kotlin.Any?>} Channels.kt:30 (newMM.kexe:x86_64+0x100221fc7)
    #13 kfun:kotlinx.coroutines.flow.internal.ChannelFlow.$collect$lambda$1COROUTINE$2730.invokeSuspend#internal ChannelFlow.kt:123 (newMM.kexe:x86_64+0x100241515)
    #14 kfun:kotlinx.coroutines.flow.internal.ChannelFlow.$collect$lambda$1COROUTINE$2730.invoke#internal ChannelFlow.kt:122 (newMM.kexe:x86_64+0x100241997)
    #15 kfun:kotlinx.coroutines.flow.internal.ChannelFlow.$collect$lambda$1COROUTINE$2730.invoke#internal.65 ChannelFlow.kt:1 (newMM.kexe:x86_64+0x100241a9b)
    #16 kfun:kotlinx.coroutines.intrinsics#startUndispatchedOrReturn__at__kotlinx.coroutines.internal.ScopeCoroutine<0:0>(0:1;kotlin.coroutines.SuspendFunction1<0:1,0:0>){0§<kotlin.Any?>;1§<kotlin.Any?>}kotlin.Any? Undispatched.kt:88 (newMM.kexe:x86_64+0x1002d3079)
    #17 kfun:kotlinx.coroutines#coroutineScope(kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,0:0>){0§<kotlin.Any?>}0:0 CoroutineScope.kt:15 (newMM.kexe:x86_64+0x1001a45d0)
    #18 kfun:kotlinx.coroutines.flow.internal.ChannelFlow#collect(kotlinx.coroutines.flow.FlowCollector<1:0>){} ChannelFlow.kt:122 (newMM.kexe:x86_64+0x10023fdc7)
    #19 kfun:kotlinx.coroutines.flow.FlowInvariantsTest.object-2.$collectCOROUTINE$896.invokeSuspend#internal FlowInvariantsTest.kt:129 (newMM.kexe:x86_64+0x1006c1a6f)
    #20 kfun:kotlinx.coroutines.flow.FlowInvariantsTest.object-2.collect#internal FlowInvariantsTest.kt:125 (newMM.kexe:x86_64+0x1006c1d35)
    #21 kfun:kotlinx.coroutines.flow.FlowInvariantsTest.$emptyContextTest$collectorCOROUTINE$953.invokeSuspend#internal FlowInvariantsTest.kt:268 (newMM.kexe:x86_64+0x1006c050d)
    #22 kfun:kotlinx.coroutines.flow.FlowInvariantsTest.emptyContextTest$collector#internal FlowInvariantsTest.kt:263 (newMM.kexe:x86_64+0x1006c08b5)
    #23 kfun:kotlinx.coroutines.flow.FlowInvariantsTest.$emptyContextTest$lambda$81COROUTINE$954.invokeSuspend#internal FlowInvariantsTest.kt:275 (newMM.kexe:x86_64+0x1006c0c61)
    #24 kfun:kotlinx.coroutines.flow.FlowInvariantsTest.$emptyContextTest$lambda$81COROUTINE$954.invoke#internal FlowInvariantsTest.kt:275 (newMM.kexe:x86_64+0x1006c111d)
    #25 kfun:kotlinx.coroutines.flow.FlowInvariantsTest.$emptyContextTest$lambda$81COROUTINE$954.invoke#internal.2117 FlowInvariantsTest.kt:1 (newMM.kexe:x86_64+0x1006c11fd)
    #26 kfun:kotlinx.coroutines.intrinsics#startCoroutineUnintercepted__at__kotlin.coroutines.SuspendFunction0<0:0>(kotlin.coroutines.Continuation<0:0>){0§<kotlin.Any?>} Undispatched.kt:18 (newMM.kexe:x86_64+0x1002d2962)
    #27 kfun:kotlinx.coroutines.$withEmptyContextCOROUTINE$341#invokeSuspend(kotlin.Result<kotlin.Any?>){}kotlin.Any? EmptyContext.kt:10 (newMM.kexe:x86_64+0x100461de1)
    #28 kfun:kotlinx.coroutines#withEmptyContext(kotlin.coroutines.SuspendFunction0<0:0>){0§<kotlin.Any?>}0:0 EmptyContext.kt:10 (newMM.kexe:x86_64+0x1004620c7)
    #29 kfun:kotlinx.coroutines.flow.FlowInvariantsTest.$emptyContextTestCOROUTINE$897.invokeSuspend#internal FlowInvariantsTest.kt:275 (newMM.kexe:x86_64+0x100695560)
    #30 kfun:kotlinx.coroutines.flow.FlowInvariantsTest.emptyContextTest#internal FlowInvariantsTest.kt:262 (newMM.kexe:x86_64+0x100695905)
    #31 kfun:kotlinx.coroutines.flow.FlowInvariantsTest.$testEmptyCoroutineContextMap$lambda$62COROUTINE$939.invokeSuspend#internal FlowInvariantsTest.kt:196 (newMM.kexe:x86_64+0x1006b68b6)
    #32 kfun:kotlin.coroutines.native.internal.BaseContinuationImpl#resumeWith(kotlin.Result<kotlin.Any?>){} ContinuationImpl.kt:26 (newMM.kexe:x86_64+0x10001d1b2)
    #33 kfun:kotlinx.coroutines.DispatchedTask#run(){} DispatchedTask.kt:88 (newMM.kexe:x86_64+0x1002c0720)
    #34 kfun:kotlinx.coroutines.EventLoopImplBase#processNextEvent(){}kotlin.Long EventLoop.common.kt:284 (newMM.kexe:x86_64+0x1001aad02)
    #35 kfun:kotlinx.coroutines.BlockingCoroutine.joinBlocking#internal Builders.kt:83 (newMM.kexe:x86_64+0x1002fdf17)
    #36 kfun:kotlinx.coroutines#runBlocking(kotlin.coroutines.CoroutineContext;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,0:0>){0§<kotlin.Any?>}0:0 Builders.kt:56 (newMM.kexe:x86_64+0x1002fd0aa)
    #37 kfun:kotlinx.coroutines.TestBase#runTest(kotlin.Function1<kotlin.Throwable,kotlin.Boolean>?;kotlin.collections.List<kotlin.Function1<kotlin.Throwable,kotlin.Boolean>>;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,kotlin.Unit>){} TestBase.kt:86 (newMM.kexe:x86_64+0x100d97868)
    #38 kfun:kotlinx.coroutines.TestBase#runTest$default(kotlin.Function1<kotlin.Throwable,kotlin.Boolean>?;kotlin.collections.List<kotlin.Function1<kotlin.Throwable,kotlin.Boolean>>?;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,kotlin.Unit>;kotlin.Int){} TestBase.kt:78 (newMM.kexe:x86_64+0x100d98270)
    #39 kfun:kotlinx.coroutines.flow.FlowInvariantsTest#testEmptyCoroutineContextMap(){} FlowInvariantsTest.kt:195 (newMM.kexe:x86_64+0x100694da3)
    #40 kfun:kotlinx.coroutines.flow.$FlowInvariantsTest$test$0.$testEmptyCoroutineContextMap$FUNCTION_REFERENCE$614.invoke#internal FlowInvariantsTest.kt:195 (newMM.kexe:x86_64+0x1006c7d30)
    #41 kfun:kotlinx.coroutines.flow.$FlowInvariantsTest$test$0.$testEmptyCoroutineContextMap$FUNCTION_REFERENCE$614.$<bridge-UNNN>invoke(-1:0){}#internal FlowInvariantsTest.kt:195 (newMM.kexe:x86_64+0x1006c8076)
    #42 kfun:kotlin.native.internal.test.BaseClassSuite.TestCase#run(){} TestSuite.kt:85 (newMM.kexe:x86_64+0x100065e76)
    #43 kfun:kotlin.native.internal.test.TestRunner.run#internal TestRunner.kt:238 (newMM.kexe:x86_64+0x100059602)
    #44 kfun:kotlin.native.internal.test.TestRunner.runIteration#internal TestRunner.kt:261 (newMM.kexe:x86_64+0x10005d22f)
    #45 kfun:kotlin.native.internal.test.TestRunner#run(){}kotlin.Int TestRunner.kt:283 (newMM.kexe:x86_64+0x10005eba1)
    #46 kfun:kotlin.native.internal.test#testLauncherEntryPoint(kotlin.Array<kotlin.String>){}kotlin.Int Launcher.kt:30 (newMM.kexe:x86_64+0x100049d03)
    #47 kfun:kotlinx.coroutines#mainNoExit(kotlin.Array<kotlin.String>){} Launcher.kt:25 (newMM.kexe:x86_64+0x100d9e6b1)
    #48 Konan_start Launcher.kt:24 (newMM.kexe:x86_64+0x100d9e82c)
    #49 Init_and_run_start <null>:2 (newMM.kexe:x86_64+0x100e23528)
    #50 Konan_main <null>:2 (newMM.kexe:x86_64+0x100e235c8)
    #51 start <null>:2 (dyld:x86_64+0x551d)

  Location is heap block of size 64 at 0x7b100012df80 allocated by main thread:
    #0 calloc <null>:3 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x534a4)
    #1 kotlin::mm::internal::ObjectFactoryStorage<8ul, kotlin::gc::AllocatorWithGC<kotlin::gc::Allocator, kotlin::gc::ConcurrentMarkAndSweep::ThreadData> >::Node::Create(kotlin::gc::AllocatorWithGC<kotlin::gc::Allocator, kotlin::gc::ConcurrentMarkAndSweep::ThreadData>&, unsigned long) <null>:2 (newMM.kexe:x86_64+0x100dd5c90)
    #2 kotlin::mm::internal::ObjectFactoryStorage<8ul, kotlin::gc::AllocatorWithGC<kotlin::gc::Allocator, kotlin::gc::ConcurrentMarkAndSweep::ThreadData> >::Producer::Insert(unsigned long) <null>:2 (newMM.kexe:x86_64+0x100dd56b1)
    #3 AllocInstance <null>:2 (newMM.kexe:x86_64+0x100dfeaad)
    #4 kfun:kotlinx.coroutines.CancellableContinuationImpl.installParentHandle#internal CancellableContinuationImpl.kt:310 (newMM.kexe:x86_64+0x10019847c)
    #5 kfun:kotlinx.coroutines.CancellableContinuationImpl#getResult(){}kotlin.Any? CancellableContinuationImpl.kt:271 (newMM.kexe:x86_64+0x100198111)
    #6 kfun:kotlinx.coroutines.channels.AbstractChannel.receiveSuspend#internal AbstractChannel.kt:17 (newMM.kexe:x86_64+0x1001d62b0)
    #7 kfun:kotlinx.coroutines.channels.AbstractChannel#receiveCatching(){}kotlinx.coroutines.channels.ChannelResult<1:0> AbstractChannel.kt:633 (newMM.kexe:x86_64+0x1001d6ceb)
    #8 kfun:kotlinx.coroutines.channels.ChannelCoroutine#receiveCatching(){}kotlinx.coroutines.channels.ChannelResult<1:0> ChannelCoroutine.kt:1 (newMM.kexe:x86_64+0x10020ad48)
    #9 kfun:kotlinx.coroutines.flow.$emitAllImplCOROUTINE$2720.invokeSuspend#internal Channels.kt:51 (newMM.kexe:x86_64+0x100224182)
    #10 kfun:kotlinx.coroutines.flow.emitAllImpl#internal Channels.kt:32 (newMM.kexe:x86_64+0x100224c1f)
    #11 kfun:kotlinx.coroutines.flow#emitAll__at__kotlinx.coroutines.flow.FlowCollector<0:0>(kotlinx.coroutines.channels.ReceiveChannel<0:0>){0§<kotlin.Any?>} Channels.kt:30 (newMM.kexe:x86_64+0x100221fc7)
    #12 kfun:kotlinx.coroutines.flow.internal.ChannelFlow.$collect$lambda$1COROUTINE$2730.invokeSuspend#internal ChannelFlow.kt:123 (newMM.kexe:x86_64+0x100241515)
    #13 kfun:kotlinx.coroutines.flow.internal.ChannelFlow.$collect$lambda$1COROUTINE$2730.invoke#internal ChannelFlow.kt:122 (newMM.kexe:x86_64+0x100241997)
    #14 kfun:kotlinx.coroutines.flow.internal.ChannelFlow.$collect$lambda$1COROUTINE$2730.invoke#internal.65 ChannelFlow.kt:1 (newMM.kexe:x86_64+0x100241a9b)
    #15 kfun:kotlinx.coroutines.intrinsics#startUndispatchedOrReturn__at__kotlinx.coroutines.internal.ScopeCoroutine<0:0>(0:1;kotlin.coroutines.SuspendFunction1<0:1,0:0>){0§<kotlin.Any?>;1§<kotlin.Any?>}kotlin.Any? Undispatched.kt:88 (newMM.kexe:x86_64+0x1002d3079)
    #16 kfun:kotlinx.coroutines#coroutineScope(kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,0:0>){0§<kotlin.Any?>}0:0 CoroutineScope.kt:15 (newMM.kexe:x86_64+0x1001a45d0)
    #17 kfun:kotlinx.coroutines.flow.internal.ChannelFlow#collect(kotlinx.coroutines.flow.FlowCollector<1:0>){} ChannelFlow.kt:122 (newMM.kexe:x86_64+0x10023fdc7)
    #18 kfun:kotlinx.coroutines.flow.FlowInvariantsTest.object-2.$collectCOROUTINE$896.invokeSuspend#internal FlowInvariantsTest.kt:129 (newMM.kexe:x86_64+0x1006c1a6f)
    #19 kfun:kotlinx.coroutines.flow.FlowInvariantsTest.object-2.collect#internal FlowInvariantsTest.kt:125 (newMM.kexe:x86_64+0x1006c1d35)
    #20 kfun:kotlinx.coroutines.flow.FlowInvariantsTest.$emptyContextTest$collectorCOROUTINE$953.invokeSuspend#internal FlowInvariantsTest.kt:268 (newMM.kexe:x86_64+0x1006c050d)
    #21 kfun:kotlinx.coroutines.flow.FlowInvariantsTest.emptyContextTest$collector#internal FlowInvariantsTest.kt:263 (newMM.kexe:x86_64+0x1006c08b5)
    #22 kfun:kotlinx.coroutines.flow.FlowInvariantsTest.$emptyContextTest$lambda$81COROUTINE$954.invokeSuspend#internal FlowInvariantsTest.kt:275 (newMM.kexe:x86_64+0x1006c0c61)
    #23 kfun:kotlinx.coroutines.flow.FlowInvariantsTest.$emptyContextTest$lambda$81COROUTINE$954.invoke#internal FlowInvariantsTest.kt:275 (newMM.kexe:x86_64+0x1006c111d)
    #24 kfun:kotlinx.coroutines.flow.FlowInvariantsTest.$emptyContextTest$lambda$81COROUTINE$954.invoke#internal.2117 FlowInvariantsTest.kt:1 (newMM.kexe:x86_64+0x1006c11fd)
    #25 kfun:kotlinx.coroutines.intrinsics#startCoroutineUnintercepted__at__kotlin.coroutines.SuspendFunction0<0:0>(kotlin.coroutines.Continuation<0:0>){0§<kotlin.Any?>} Undispatched.kt:18 (newMM.kexe:x86_64+0x1002d2962)
    #26 kfun:kotlinx.coroutines.$withEmptyContextCOROUTINE$341#invokeSuspend(kotlin.Result<kotlin.Any?>){}kotlin.Any? EmptyContext.kt:10 (newMM.kexe:x86_64+0x100461de1)
    #27 kfun:kotlinx.coroutines#withEmptyContext(kotlin.coroutines.SuspendFunction0<0:0>){0§<kotlin.Any?>}0:0 EmptyContext.kt:10 (newMM.kexe:x86_64+0x1004620c7)
    #28 kfun:kotlinx.coroutines.flow.FlowInvariantsTest.$emptyContextTestCOROUTINE$897.invokeSuspend#internal FlowInvariantsTest.kt:275 (newMM.kexe:x86_64+0x100695560)
    #29 kfun:kotlinx.coroutines.flow.FlowInvariantsTest.emptyContextTest#internal FlowInvariantsTest.kt:262 (newMM.kexe:x86_64+0x100695905)
    #30 kfun:kotlinx.coroutines.flow.FlowInvariantsTest.$testEmptyCoroutineContextMap$lambda$62COROUTINE$939.invokeSuspend#internal FlowInvariantsTest.kt:196 (newMM.kexe:x86_64+0x1006b68b6)
    #31 kfun:kotlin.coroutines.native.internal.BaseContinuationImpl#resumeWith(kotlin.Result<kotlin.Any?>){} ContinuationImpl.kt:26 (newMM.kexe:x86_64+0x10001d1b2)
    #32 kfun:kotlinx.coroutines.DispatchedTask#run(){} DispatchedTask.kt:88 (newMM.kexe:x86_64+0x1002c0720)
    #33 kfun:kotlinx.coroutines.EventLoopImplBase#processNextEvent(){}kotlin.Long EventLoop.common.kt:284 (newMM.kexe:x86_64+0x1001aad02)
    #34 kfun:kotlinx.coroutines.BlockingCoroutine.joinBlocking#internal Builders.kt:83 (newMM.kexe:x86_64+0x1002fdf17)
    #35 kfun:kotlinx.coroutines#runBlocking(kotlin.coroutines.CoroutineContext;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,0:0>){0§<kotlin.Any?>}0:0 Builders.kt:56 (newMM.kexe:x86_64+0x1002fd0aa)
    #36 kfun:kotlinx.coroutines.TestBase#runTest(kotlin.Function1<kotlin.Throwable,kotlin.Boolean>?;kotlin.collections.List<kotlin.Function1<kotlin.Throwable,kotlin.Boolean>>;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,kotlin.Unit>){} TestBase.kt:86 (newMM.kexe:x86_64+0x100d97868)
    #37 kfun:kotlinx.coroutines.TestBase#runTest$default(kotlin.Function1<kotlin.Throwable,kotlin.Boolean>?;kotlin.collections.List<kotlin.Function1<kotlin.Throwable,kotlin.Boolean>>?;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,kotlin.Unit>;kotlin.Int){} TestBase.kt:78 (newMM.kexe:x86_64+0x100d98270)
    #38 kfun:kotlinx.coroutines.flow.FlowInvariantsTest#testEmptyCoroutineContextMap(){} FlowInvariantsTest.kt:195 (newMM.kexe:x86_64+0x100694da3)
    #39 kfun:kotlinx.coroutines.flow.$FlowInvariantsTest$test$0.$testEmptyCoroutineContextMap$FUNCTION_REFERENCE$614.invoke#internal FlowInvariantsTest.kt:195 (newMM.kexe:x86_64+0x1006c7d30)
    #40 kfun:kotlinx.coroutines.flow.$FlowInvariantsTest$test$0.$testEmptyCoroutineContextMap$FUNCTION_REFERENCE$614.$<bridge-UNNN>invoke(-1:0){}#internal FlowInvariantsTest.kt:195 (newMM.kexe:x86_64+0x1006c8076)
    #41 kfun:kotlin.native.internal.test.BaseClassSuite.TestCase#run(){} TestSuite.kt:85 (newMM.kexe:x86_64+0x100065e76)
    #42 kfun:kotlin.native.internal.test.TestRunner.run#internal TestRunner.kt:238 (newMM.kexe:x86_64+0x100059602)
    #43 kfun:kotlin.native.internal.test.TestRunner.runIteration#internal TestRunner.kt:261 (newMM.kexe:x86_64+0x10005d22f)
    #44 kfun:kotlin.native.internal.test.TestRunner#run(){}kotlin.Int TestRunner.kt:283 (newMM.kexe:x86_64+0x10005eba1)
    #45 kfun:kotlin.native.internal.test#testLauncherEntryPoint(kotlin.Array<kotlin.String>){}kotlin.Int Launcher.kt:30 (newMM.kexe:x86_64+0x100049d03)
    #46 kfun:kotlinx.coroutines#mainNoExit(kotlin.Array<kotlin.String>){} Launcher.kt:25 (newMM.kexe:x86_64+0x100d9e6b1)
    #47 Konan_start Launcher.kt:24 (newMM.kexe:x86_64+0x100d9e82c)
    #48 Init_and_run_start <null>:2 (newMM.kexe:x86_64+0x100e23528)
    #49 Konan_main <null>:2 (newMM.kexe:x86_64+0x100e235c8)
    #50 start <null>:2 (dyld:x86_64+0x551d)

  Thread T3 (tid=8194867, running) created by main thread at:
    #0 pthread_create <null>:3 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x2bb6f)
    #1 Kotlin_Worker_startInternal <null>:2 (newMM.kexe:x86_64+0x100e0cfe4)
    #2 kfun:kotlin.native.concurrent.Worker.Companion#start(kotlin.Boolean;kotlin.String?){}kotlin.native.concurrent.Worker Worker.kt:43 (newMM.kexe:x86_64+0x10002ee13)
    #3 kfun:kotlin.native.concurrent.Worker.Companion#start$default(kotlin.Boolean;kotlin.String?;kotlin.Int){}kotlin.native.concurrent.Worker Worker.kt:42 (newMM.kexe:x86_64+0x10002ef74)
    #4 kfun:kotlinx.coroutines.WorkerDispatcher#<init>(kotlin.String){} MultithreadedDispatchers.kt:25 (newMM.kexe:x86_64+0x10030329a)
    #5 kfun:kotlinx.coroutines.DefaultExecutor#<init>(){} CoroutineContext.kt:13 (newMM.kexe:x86_64+0x1002ff65d)
    #6 kotlin::mm::InitSingleton(kotlin::mm::ThreadData*, ObjHeader**, TypeInfo const*, void (*)(ObjHeader*), ObjHeader**) <null>:2 (newMM.kexe:x86_64+0x100dff504)
    #7 InitSingleton <null>:2 (newMM.kexe:x86_64+0x100dfef35)
    #8 kfun:kotlinx.coroutines.$init_global#internal.188 CoroutineContext.kt:44 (newMM.kexe:x86_64+0x1002fe5dd)
    #9 CallInitGlobalPossiblyLock <null>:2 (newMM.kexe:x86_64+0x100e1e6e9)
    #10 kfun:kotlinx.coroutines#newCoroutineContext__at__kotlinx.coroutines.CoroutineScope(kotlin.coroutines.CoroutineContext){}kotlin.coroutines.CoroutineContext CoroutineContext.kt:1 (newMM.kexe:x86_64+0x1002fe8e7)
    #11 kfun:kotlinx.coroutines#runBlocking(kotlin.coroutines.CoroutineContext;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,0:0>){0§<kotlin.Any?>}0:0 Builders.kt:46 (newMM.kexe:x86_64+0x1002fcf94)
    #12 kfun:kotlinx.coroutines.TestBase#runTest(kotlin.Function1<kotlin.Throwable,kotlin.Boolean>?;kotlin.collections.List<kotlin.Function1<kotlin.Throwable,kotlin.Boolean>>;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,kotlin.Unit>){} TestBase.kt:86 (newMM.kexe:x86_64+0x100d97868)
    #13 kfun:kotlinx.coroutines.TestBase#runTest$default(kotlin.Function1<kotlin.Throwable,kotlin.Boolean>?;kotlin.collections.List<kotlin.Function1<kotlin.Throwable,kotlin.Boolean>>?;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,kotlin.Unit>;kotlin.Int){} TestBase.kt:78 (newMM.kexe:x86_64+0x100d98270)
    #14 kfun:kotlinx.coroutines.AbstractCoroutineTest#testNotifications(){} AbstractCoroutineTest.kt:13 (newMM.kexe:x86_64+0x10030e3a3)
    #15 kfun:kotlinx.coroutines.$AbstractCoroutineTest$test$0.$testNotifications$FUNCTION_REFERENCE$4.invoke#internal AbstractCoroutineTest.kt:13 (newMM.kexe:x86_64+0x100311740)
    #16 kfun:kotlinx.coroutines.$AbstractCoroutineTest$test$0.$testNotifications$FUNCTION_REFERENCE$4.$<bridge-UNNN>invoke(-1:0){}#internal AbstractCoroutineTest.kt:13 (newMM.kexe:x86_64+0x100311a86)
    #17 kfun:kotlin.native.internal.test.BaseClassSuite.TestCase#run(){} TestSuite.kt:85 (newMM.kexe:x86_64+0x100065e76)
    #18 kfun:kotlin.native.internal.test.TestRunner.run#internal TestRunner.kt:238 (newMM.kexe:x86_64+0x100059602)
    #19 kfun:kotlin.native.internal.test.TestRunner.runIteration#internal TestRunner.kt:261 (newMM.kexe:x86_64+0x10005d22f)
    #20 kfun:kotlin.native.internal.test.TestRunner#run(){}kotlin.Int TestRunner.kt:283 (newMM.kexe:x86_64+0x10005eba1)
    #21 kfun:kotlin.native.internal.test#testLauncherEntryPoint(kotlin.Array<kotlin.String>){}kotlin.Int Launcher.kt:30 (newMM.kexe:x86_64+0x100049d03)
    #22 kfun:kotlinx.coroutines#mainNoExit(kotlin.Array<kotlin.String>){} Launcher.kt:25 (newMM.kexe:x86_64+0x100d9e6b1)
    #23 Konan_start Launcher.kt:24 (newMM.kexe:x86_64+0x100d9e82c)
    #24 Init_and_run_start <null>:2 (newMM.kexe:x86_64+0x100e23528)
    #25 Konan_main <null>:2 (newMM.kexe:x86_64+0x100e235c8)
    #26 start <null>:2 (dyld:x86_64+0x551d)

SUMMARY: ThreadSanitizer: data race JobSupport.kt:1355 in kfun:kotlinx.coroutines.JobNode#<get-job>(){}kotlinx.coroutines.JobSupport
@qwwdfsad qwwdfsad self-assigned this Jul 27, 2022
@qwwdfsad
Copy link
Collaborator Author

kfun:kotlinx.atomicfu.locks.MutexPool#release
 Write of size 8 at 0x7b60000107e8 by main thread:
    #0 kfun:kotlinx.atomicfu.locks.MutexPool#release(kotlinx.cinterop.CPointer<interop.mutex_node>){} Synchronized.kt:204 (newMM.kexe:x86_64+0x1001875df)
    #1 kfun:kotlinx.atomicfu.locks.SynchronizedObject#lock(){} Synchronized.kt:43 (newMM.kexe:x86_64+0x100183337)
    #2 kfun:kotlinx.coroutines.internal.LimitedDispatcher.tryAllocateWorker#internal LimitedDispatcher.kt:92 (newMM.kexe:x86_64+0x1002c4a5a)
    #3 kfun:kotlinx.coroutines.internal.LimitedDispatcher#dispatch(kotlin.coroutines.CoroutineContext;kotlinx.coroutines.Runnable){} LimitedDispatcher.kt:66 (newMM.kexe:x86_64+0x1002c46b0)
    #4 kfun:kotlinx.coroutines.internal#resumeCancellableWith__at__kotlin.coroutines.Continuation<0:0>(kotlin.Result<0:0>;kotlin.Function1<kotlin.Throwable,kotlin.Unit>?){0§<kotlin.Any?>} DispatchedContinuation.kt:282 (newMM.kexe:x86_64+0x1002ba226)
    #5 kfun:kotlinx.coroutines.intrinsics#startCoroutineCancellable__at__kotlin.coroutines.SuspendFunction1<0:0,0:1>(0:0;kotlin.coroutines.Continuation<0:1>;kotlin.Function1<kotlin.Throwable,kotlin.Unit>?){0§<kotlin.Any?>;1§<kotlin.Any?>} Cancellable.kt:29 (newMM.kexe:x86_64+0x1002d18f4)
    #6 kfun:kotlinx.coroutines.intrinsics#startCoroutineCancellable$default__at__kotlin.coroutines.SuspendFunction1<0:0,0:1>(0:0;kotlin.coroutines.Continuation<0:1>;kotlin.Function1<kotlin.Throwable,kotlin.Unit>?;kotlin.Int){0§<kotlin.Any?>;1§<kotlin.Any?>} Cancellable.kt:25 (newMM.kexe:x86_64+0x1002d1b34)
    #7 kfun:kotlinx.coroutines.CoroutineStart#invoke(kotlin.coroutines.SuspendFunction1<0:0,0:1>;0:0;kotlin.coroutines.Continuation<0:1>){0§<kotlin.Any?>;1§<kotlin.Any?>} CoroutineStart.kt:110 (newMM.kexe:x86_64+0x1001a5860)
    #8 kfun:kotlinx.coroutines.AbstractCoroutine#start(kotlinx.coroutines.CoroutineStart;0:0;kotlin.coroutines.SuspendFunction1<0:0,1:0>){0§<kotlin.Any?>} AbstractCoroutine.kt:126 (newMM.kexe:x86_64+0x100189378)
    #9 kfun:kotlinx.coroutines#launch__at__kotlinx.coroutines.CoroutineScope(kotlin.coroutines.CoroutineContext;kotlinx.coroutines.CoroutineStart;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,kotlin.Unit>){}kotlinx.coroutines.Job Builders.common.kt:56 (newMM.kexe:x86_64+0x10018f564)
    #10 kfun:kotlinx.coroutines#launch$default__at__kotlinx.coroutines.CoroutineScope(kotlin.coroutines.CoroutineContext?;kotlinx.coroutines.CoroutineStart?;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,kotlin.Unit>;kotlin.Int){}kotlinx.coroutines.Job Builders.common.kt:47 (newMM.kexe:x86_64+0x10018f858)
    #11 kfun:kotlinx.coroutines.LimitedParallelismConcurrentTest.$testLimitedExecutor$lambda$2$lambda$1COROUTINE$2556.invokeSuspend#internal LimitedParallelismConcurrentTest.kt:42 (newMM.kexe:x86_64+0x100d1559c)
    #12 kfun:kotlinx.coroutines.LimitedParallelismConcurrentTest.$testLimitedExecutor$lambda$2$lambda$1COROUTINE$2556.invoke#internal LimitedParallelismConcurrentTest.kt:41 (newMM.kexe:x86_64+0x100d15967)
    #13 kfun:kotlinx.coroutines.LimitedParallelismConcurrentTest.$testLimitedExecutor$lambda$2$lambda$1COROUTINE$2556.invoke#internal.5123 LimitedParallelismConcurrentTest.kt:1 (newMM.kexe:x86_64+0x100d15a6b)
    #14 kfun:kotlinx.coroutines.intrinsics#startUndispatchedOrReturn__at__kotlinx.coroutines.internal.ScopeCoroutine<0:0>(0:1;kotlin.coroutines.SuspendFunction1<0:1,0:0>){0§<kotlin.Any?>;1§<kotlin.Any?>}kotlin.Any? Undispatched.kt:88 (newMM.kexe:x86_64+0x1002d3079)
    #15 kfun:kotlinx.coroutines#coroutineScope(kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,0:0>){0§<kotlin.Any?>}0:0 CoroutineScope.kt:15 (newMM.kexe:x86_64+0x1001a45d0)
    #16 kfun:kotlinx.coroutines.LimitedParallelismConcurrentTest.$testLimitedExecutor$lambda$2COROUTINE$2557.invokeSuspend#internal LimitedParallelismConcurrentTest.kt:29 (newMM.kexe:x86_64+0x100d16258)
    #17 kfun:kotlin.coroutines.native.internal.BaseContinuationImpl#resumeWith(kotlin.Result<kotlin.Any?>){} ContinuationImpl.kt:26 (newMM.kexe:x86_64+0x10001d1b2)
    #18 kfun:kotlinx.coroutines.DispatchedTask#run(){} DispatchedTask.kt:88 (newMM.kexe:x86_64+0x1002c0720)
    #19 kfun:kotlinx.coroutines.EventLoopImplBase#processNextEvent(){}kotlin.Long EventLoop.common.kt:284 (newMM.kexe:x86_64+0x1001aad02)
    #20 kfun:kotlinx.coroutines.BlockingCoroutine.joinBlocking#internal Builders.kt:83 (newMM.kexe:x86_64+0x1002fdf17)
    #21 kfun:kotlinx.coroutines#runBlocking(kotlin.coroutines.CoroutineContext;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,0:0>){0§<kotlin.Any?>}0:0 Builders.kt:56 (newMM.kexe:x86_64+0x1002fd0aa)
    #22 kfun:kotlinx.coroutines.TestBase#runTest(kotlin.Function1<kotlin.Throwable,kotlin.Boolean>?;kotlin.collections.List<kotlin.Function1<kotlin.Throwable,kotlin.Boolean>>;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,kotlin.Unit>){} TestBase.kt:86 (newMM.kexe:x86_64+0x100d97868)
    #23 kfun:kotlinx.coroutines#runMtTest__at__kotlinx.coroutines.TestBase(kotlin.Function1<kotlin.Throwable,kotlin.Boolean>?;kotlin.collections.List<kotlin.Function1<kotlin.Throwable,kotlin.Boolean>>;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,kotlin.Unit>){} TestBaseExtension.kt:18 (newMM.kexe:x86_64+0x100d99183)
    #24 kfun:kotlinx.coroutines#runMtTest$default__at__kotlinx.coroutines.TestBase(kotlin.Function1<kotlin.Throwable,kotlin.Boolean>?;kotlin.collections.List<kotlin.Function1<kotlin.Throwable,kotlin.Boolean>>?;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,kotlin.Unit>;kotlin.Int){} TestBaseExtension.kt:12 (newMM.kexe:x86_64+0x100d99360)
    #25 kfun:kotlinx.coroutines.LimitedParallelismConcurrentTest#testLimitedExecutor(){} LimitedParallelismConcurrentTest.kt:26 (newMM.kexe:x86_64+0x100d149a3)
    #26 kfun:kotlinx.coroutines.$LimitedParallelismConcurrentTest$test$0.$testLimitedExecutor$FUNCTION_REFERENCE$1494.invoke#internal LimitedParallelismConcurrentTest.kt:26 (newMM.kexe:x86_64+0x100d18bf0)
    #27 kfun:kotlinx.coroutines.$LimitedParallelismConcurrentTest$test$0.$testLimitedExecutor$FUNCTION_REFERENCE$1494.$<bridge-UNNN>invoke(-1:0){}#internal LimitedParallelismConcurrentTest.kt:26 (newMM.kexe:x86_64+0x100d18f36)
    #28 kfun:kotlin.native.internal.test.BaseClassSuite.TestCase#run(){} TestSuite.kt:85 (newMM.kexe:x86_64+0x100065e76)
    #29 kfun:kotlin.native.internal.test.TestRunner.run#internal TestRunner.kt:238 (newMM.kexe:x86_64+0x100059602)
    #30 kfun:kotlin.native.internal.test.TestRunner.runIteration#internal TestRunner.kt:261 (newMM.kexe:x86_64+0x10005d22f)
    #31 kfun:kotlin.native.internal.test.TestRunner#run(){}kotlin.Int TestRunner.kt:283 (newMM.kexe:x86_64+0x10005eba1)
    #32 kfun:kotlin.native.internal.test#testLauncherEntryPoint(kotlin.Array<kotlin.String>){}kotlin.Int Launcher.kt:30 (newMM.kexe:x86_64+0x100049d03)
    #33 kfun:kotlinx.coroutines#mainNoExit(kotlin.Array<kotlin.String>){} Launcher.kt:25 (newMM.kexe:x86_64+0x100d9e6b1)
    #34 Konan_start Launcher.kt:24 (newMM.kexe:x86_64+0x100d9e82c)
    #35 Init_and_run_start <null>:2 (newMM.kexe:x86_64+0x100e23528)
    #36 Konan_main <null>:2 (newMM.kexe:x86_64+0x100e235c8)
    #37 start <null>:2 (dyld:x86_64+0x551d)

  Previous read of size 8 at 0x7b60000107e8 by thread T15:
    #0 kfun:kotlinx.atomicfu.locks.MutexPool.pop#internal Synchronized.kt:215 (newMM.kexe:x86_64+0x100187a38)
    #1 kfun:kotlinx.atomicfu.locks.MutexPool#allocate(){}kotlinx.cinterop.CPointer<interop.mutex_node> Synchronized.kt:199 (newMM.kexe:x86_64+0x100187394)
    #2 kfun:kotlinx.atomicfu.locks.SynchronizedObject#lock(){} Synchronized.kt:32 (newMM.kexe:x86_64+0x10018311d)
    #3 kfun:kotlinx.coroutines.internal.LimitedDispatcher#run(){} LimitedDispatcher.kt:56 (newMM.kexe:x86_64+0x1002c405d)
    #4 kfun:kotlinx.coroutines.MultiWorkerDispatcher.$workerRunLoop$lambda$1COROUTINE$2871.invokeSuspend#internal MultithreadedDispatchers.kt:80 (newMM.kexe:x86_64+0x100305b92)
    #5 kfun:kotlin.coroutines.native.internal.BaseContinuationImpl#resumeWith(kotlin.Result<kotlin.Any?>){} ContinuationImpl.kt:26 (newMM.kexe:x86_64+0x10001d1b2)
    #6 kfun:kotlinx.coroutines.DispatchedTask#run(){} DispatchedTask.kt:88 (newMM.kexe:x86_64+0x1002c0720)
    #7 kfun:kotlinx.coroutines.EventLoopImplBase#processNextEvent(){}kotlin.Long EventLoop.common.kt:284 (newMM.kexe:x86_64+0x1001aad02)
    #8 kfun:kotlinx.coroutines.BlockingCoroutine.joinBlocking#internal Builders.kt:83 (newMM.kexe:x86_64+0x1002fdf17)
    #9 kfun:kotlinx.coroutines#runBlocking(kotlin.coroutines.CoroutineContext;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,0:0>){0§<kotlin.Any?>}0:0 Builders.kt:56 (newMM.kexe:x86_64+0x1002fd0aa)
    #10 kfun:kotlinx.coroutines#runBlocking$default(kotlin.coroutines.CoroutineContext?;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,0:0>;kotlin.Int){0§<kotlin.Any?>}0:0 Builders.kt:36 (newMM.kexe:x86_64+0x1002fd6a3)
    #11 kfun:kotlinx.coroutines.MultiWorkerDispatcher.workerRunLoop#internal MultithreadedDispatchers.kt:77 (newMM.kexe:x86_64+0x10030505d)
    #12 kfun:kotlinx.coroutines.MultiWorkerDispatcher.<init>$lambda$0#internal MultithreadedDispatchers.kt:74 (newMM.kexe:x86_64+0x100305534)
    #13 kfun:kotlinx.coroutines.MultiWorkerDispatcher.$<init>$lambda$0$FUNCTION_REFERENCE$1633.invoke#internal MultithreadedDispatchers.kt:74 (newMM.kexe:x86_64+0x100306539)
    #14 kfun:kotlinx.coroutines.MultiWorkerDispatcher.$<init>$lambda$0$FUNCTION_REFERENCE$1633.$<bridge-UNN>invoke(){}#internal MultithreadedDispatchers.kt:74 (newMM.kexe:x86_64+0x100306648)
    #15 WorkerLaunchpad Internal.kt:87 (newMM.kexe:x86_64+0x10002b05e)
    #16 Worker::processQueueElement(bool) <null>:2 (newMM.kexe:x86_64+0x100e086d1)
    #17 (anonymous namespace)::workerRoutine(void*) <null>:2 (newMM.kexe:x86_64+0x100e0784c)

  Location is heap block of size 1024 at 0x7b6000010400 allocated by thread T3:
    #0 posix_memalign <null>:3 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x53603)
    #1 kotlin::std_support::aligned_malloc(unsigned long, unsigned long) <null>:2 (newMM.kexe:x86_64+0x100e12788)
    #2 Kotlin_interop_malloc <null>:2 (newMM.kexe:x86_64+0x100e1d2b9)
    #3 kfun:kotlinx.cinterop.nativeMemUtils#allocRaw(kotlin.Long;kotlin.Int){}kotlin.native.internal.NativePtr NativeMem.kt:130 (newMM.kexe:x86_64+0x1000052e0)
    #4 kfun:kotlinx.cinterop.nativeMemUtils#alloc(kotlin.Long;kotlin.Int){}kotlinx.cinterop.NativePointed NativeMem.kt:122 (newMM.kexe:x86_64+0x100005183)
    #5 kfun:kotlinx.cinterop.nativeHeap#alloc(kotlin.Long;kotlin.Int){}kotlinx.cinterop.NativePointed Utils.kt:34 (newMM.kexe:x86_64+0x100004d46)
    #6 kfun:kotlinx.atomicfu.locks.MutexPool#<init>(kotlin.Int){} Synchronized.kt:189 (newMM.kexe:x86_64+0x100186758)
    #7 kfun:kotlinx.atomicfu.locks.mutexPool$delegate$lambda$0#internal Synchronized.kt:184 (newMM.kexe:x86_64+0x100187d0c)
    #8 kfun:kotlinx.atomicfu.locks.$mutexPool$delegate$lambda$0$FUNCTION_REFERENCE$1640.invoke#internal Synchronized.kt:184 (newMM.kexe:x86_64+0x1001880ba)
    #9 kfun:kotlin.native.concurrent.SynchronizedLazyImpl#<get-value>(){}1:0 Lazy.kt:144 (newMM.kexe:x86_64+0x10002bbf7)
    #10 kfun:kotlinx.atomicfu.locks.<get-mutexPool>#internal Synchronized.kt:184 (newMM.kexe:x86_64+0x100182768)
    #11 kfun:kotlinx.atomicfu.locks.SynchronizedObject#lock(){} Synchronized.kt:32 (newMM.kexe:x86_64+0x100183106)
    #12 kfun:kotlinx.coroutines.channels.ArrayChannel#offerInternal(1:0){}kotlin.Any ArrayChannel.kt:58 (newMM.kexe:x86_64+0x1001f778e)
    #13 kfun:kotlinx.coroutines.channels.AbstractSendChannel#send(1:0){} AbstractChannel.kt:134 (newMM.kexe:x86_64+0x1001e30a4)
    #14 kfun:kotlinx.coroutines.channels.ChannelCoroutine#send(1:0){} ChannelCoroutine.kt:1 (newMM.kexe:x86_64+0x10020b0e3)
    #15 kfun:kotlinx.coroutines.flow.FlowInvariantsTest.$emptyContextTest$collector$lambda$79COROUTINE$952.invokeSuspend#internal FlowInvariantsTest.kt:266 (newMM.kexe:x86_64+0x1006bf746)
    #16 kfun:kotlinx.coroutines.flow.FlowInvariantsTest.$emptyContextTest$collector$lambda$79COROUTINE$952.invoke#internal FlowInvariantsTest.kt:265 (newMM.kexe:x86_64+0x1006bfb47)
    #17 kfun:kotlinx.coroutines.flow.ChannelFlowBuilder.collectTo#internal Builders.kt:322 (newMM.kexe:x86_64+0x10021e372)
    #18 kfun:kotlinx.coroutines.flow.internal.ChannelFlow.$<get-collectToFun>$lambda$0COROUTINE$2729.invokeSuspend#internal ChannelFlow.kt:60 (newMM.kexe:x86_64+0x100240b57)
    #19 kfun:kotlin.coroutines.native.internal.BaseContinuationImpl#resumeWith(kotlin.Result<kotlin.Any?>){} ContinuationImpl.kt:26 (newMM.kexe:x86_64+0x10001d1b2)
    #20 kfun:kotlinx.coroutines.DispatchedTask#run(){} DispatchedTask.kt:88 (newMM.kexe:x86_64+0x1002c0720)
    #21 kfun:kotlinx.coroutines.WorkerDispatcher.dispatch$lambda$0#internal MultithreadedDispatchers.kt:28 (newMM.kexe:x86_64+0x100303b5b)
    #22 kfun:kotlinx.coroutines.WorkerDispatcher.$dispatch$lambda$0$FUNCTION_REFERENCE$1631.invoke#internal MultithreadedDispatchers.kt:28 (newMM.kexe:x86_64+0x1003042c9)
    #23 kfun:kotlinx.coroutines.WorkerDispatcher.$dispatch$lambda$0$FUNCTION_REFERENCE$1631.$<bridge-UNN>invoke(){}#internal MultithreadedDispatchers.kt:28 (newMM.kexe:x86_64+0x1003043d8)
    #24 WorkerLaunchpad Internal.kt:87 (newMM.kexe:x86_64+0x10002b05e)
    #25 Worker::processQueueElement(bool) <null>:2 (newMM.kexe:x86_64+0x100e086d1)
    #26 (anonymous namespace)::workerRoutine(void*) <null>:2 (newMM.kexe:x86_64+0x100e0784c)

  Thread T15 (tid=8195310, running) created by main thread at:
    #0 pthread_create <null>:3 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x2bb6f)
    #1 Kotlin_Worker_startInternal <null>:2 (newMM.kexe:x86_64+0x100e0cfe4)
    #2 kfun:kotlin.native.concurrent.Worker.Companion#start(kotlin.Boolean;kotlin.String?){}kotlin.native.concurrent.Worker Worker.kt:43 (newMM.kexe:x86_64+0x10002ee13)
    #3 kfun:kotlin.native.concurrent.Worker.Companion#start$default(kotlin.Boolean;kotlin.String?;kotlin.Int){}kotlin.native.concurrent.Worker Worker.kt:42 (newMM.kexe:x86_64+0x10002ef74)
    #4 kfun:kotlinx.coroutines.MultiWorkerDispatcher.<init>#internal MultithreadedDispatchers.kt:71 (newMM.kexe:x86_64+0x100304ac2)
    #5 kfun:kotlinx.coroutines#newFixedThreadPoolContext(kotlin.Int;kotlin.String){}kotlinx.coroutines.CloseableCoroutineDispatcher MultithreadedDispatchers.kt:21 (newMM.kexe:x86_64+0x100303005)
    #6 kfun:kotlinx.coroutines.LimitedParallelismConcurrentTest.$testLimitedExecutor$lambda$2COROUTINE$2557.invokeSuspend#internal LimitedParallelismConcurrentTest.kt:27 (newMM.kexe:x86_64+0x100d15e78)
    #7 kfun:kotlin.coroutines.native.internal.BaseContinuationImpl#resumeWith(kotlin.Result<kotlin.Any?>){} ContinuationImpl.kt:26 (newMM.kexe:x86_64+0x10001d1b2)
    #8 kfun:kotlinx.coroutines.DispatchedTask#run(){} DispatchedTask.kt:88 (newMM.kexe:x86_64+0x1002c0720)
    #9 kfun:kotlinx.coroutines.EventLoopImplBase#processNextEvent(){}kotlin.Long EventLoop.common.kt:284 (newMM.kexe:x86_64+0x1001aad02)
    #10 kfun:kotlinx.coroutines.BlockingCoroutine.joinBlocking#internal Builders.kt:83 (newMM.kexe:x86_64+0x1002fdf17)
    #11 kfun:kotlinx.coroutines#runBlocking(kotlin.coroutines.CoroutineContext;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,0:0>){0§<kotlin.Any?>}0:0 Builders.kt:56 (newMM.kexe:x86_64+0x1002fd0aa)
    #12 kfun:kotlinx.coroutines.TestBase#runTest(kotlin.Function1<kotlin.Throwable,kotlin.Boolean>?;kotlin.collections.List<kotlin.Function1<kotlin.Throwable,kotlin.Boolean>>;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,kotlin.Unit>){} TestBase.kt:86 (newMM.kexe:x86_64+0x100d97868)
    #13 kfun:kotlinx.coroutines#runMtTest__at__kotlinx.coroutines.TestBase(kotlin.Function1<kotlin.Throwable,kotlin.Boolean>?;kotlin.collections.List<kotlin.Function1<kotlin.Throwable,kotlin.Boolean>>;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,kotlin.Unit>){} TestBaseExtension.kt:18 (newMM.kexe:x86_64+0x100d99183)
    #14 kfun:kotlinx.coroutines#runMtTest$default__at__kotlinx.coroutines.TestBase(kotlin.Function1<kotlin.Throwable,kotlin.Boolean>?;kotlin.collections.List<kotlin.Function1<kotlin.Throwable,kotlin.Boolean>>?;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,kotlin.Unit>;kotlin.Int){} TestBaseExtension.kt:12 (newMM.kexe:x86_64+0x100d99360)
    #15 kfun:kotlinx.coroutines.LimitedParallelismConcurrentTest#testLimitedExecutor(){} LimitedParallelismConcurrentTest.kt:26 (newMM.kexe:x86_64+0x100d149a3)
    #16 kfun:kotlinx.coroutines.$LimitedParallelismConcurrentTest$test$0.$testLimitedExecutor$FUNCTION_REFERENCE$1494.invoke#internal LimitedParallelismConcurrentTest.kt:26 (newMM.kexe:x86_64+0x100d18bf0)
    #17 kfun:kotlinx.coroutines.$LimitedParallelismConcurrentTest$test$0.$testLimitedExecutor$FUNCTION_REFERENCE$1494.$<bridge-UNNN>invoke(-1:0){}#internal LimitedParallelismConcurrentTest.kt:26 (newMM.kexe:x86_64+0x100d18f36)
    #18 kfun:kotlin.native.internal.test.BaseClassSuite.TestCase#run(){} TestSuite.kt:85 (newMM.kexe:x86_64+0x100065e76)
    #19 kfun:kotlin.native.internal.test.TestRunner.run#internal TestRunner.kt:238 (newMM.kexe:x86_64+0x100059602)
    #20 kfun:kotlin.native.internal.test.TestRunner.runIteration#internal TestRunner.kt:261 (newMM.kexe:x86_64+0x10005d22f)
    #21 kfun:kotlin.native.internal.test.TestRunner#run(){}kotlin.Int TestRunner.kt:283 (newMM.kexe:x86_64+0x10005eba1)
    #22 kfun:kotlin.native.internal.test#testLauncherEntryPoint(kotlin.Array<kotlin.String>){}kotlin.Int Launcher.kt:30 (newMM.kexe:x86_64+0x100049d03)
    #23 kfun:kotlinx.coroutines#mainNoExit(kotlin.Array<kotlin.String>){} Launcher.kt:25 (newMM.kexe:x86_64+0x100d9e6b1)
    #24 Konan_start Launcher.kt:24 (newMM.kexe:x86_64+0x100d9e82c)
    #25 Init_and_run_start <null>:2 (newMM.kexe:x86_64+0x100e23528)
    #26 Konan_main <null>:2 (newMM.kexe:x86_64+0x100e235c8)
    #27 start <null>:2 (dyld:x86_64+0x551d)

  Thread T3 (tid=8194867, running) created by main thread at:
    #0 pthread_create <null>:3 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x2bb6f)
    #1 Kotlin_Worker_startInternal <null>:2 (newMM.kexe:x86_64+0x100e0cfe4)
    #2 kfun:kotlin.native.concurrent.Worker.Companion#start(kotlin.Boolean;kotlin.String?){}kotlin.native.concurrent.Worker Worker.kt:43 (newMM.kexe:x86_64+0x10002ee13)
    #3 kfun:kotlin.native.concurrent.Worker.Companion#start$default(kotlin.Boolean;kotlin.String?;kotlin.Int){}kotlin.native.concurrent.Worker Worker.kt:42 (newMM.kexe:x86_64+0x10002ef74)
    #4 kfun:kotlinx.coroutines.WorkerDispatcher#<init>(kotlin.String){} MultithreadedDispatchers.kt:25 (newMM.kexe:x86_64+0x10030329a)
    #5 kfun:kotlinx.coroutines.DefaultExecutor#<init>(){} CoroutineContext.kt:13 (newMM.kexe:x86_64+0x1002ff65d)
    #6 kotlin::mm::InitSingleton(kotlin::mm::ThreadData*, ObjHeader**, TypeInfo const*, void (*)(ObjHeader*), ObjHeader**) <null>:2 (newMM.kexe:x86_64+0x100dff504)
    #7 InitSingleton <null>:2 (newMM.kexe:x86_64+0x100dfef35)
    #8 kfun:kotlinx.coroutines.$init_global#internal.188 CoroutineContext.kt:44 (newMM.kexe:x86_64+0x1002fe5dd)
    #9 CallInitGlobalPossiblyLock <null>:2 (newMM.kexe:x86_64+0x100e1e6e9)
    #10 kfun:kotlinx.coroutines#newCoroutineContext__at__kotlinx.coroutines.CoroutineScope(kotlin.coroutines.CoroutineContext){}kotlin.coroutines.CoroutineContext CoroutineContext.kt:1 (newMM.kexe:x86_64+0x1002fe8e7)
    #11 kfun:kotlinx.coroutines#runBlocking(kotlin.coroutines.CoroutineContext;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,0:0>){0§<kotlin.Any?>}0:0 Builders.kt:46 (newMM.kexe:x86_64+0x1002fcf94)
    #12 kfun:kotlinx.coroutines.TestBase#runTest(kotlin.Function1<kotlin.Throwable,kotlin.Boolean>?;kotlin.collections.List<kotlin.Function1<kotlin.Throwable,kotlin.Boolean>>;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,kotlin.Unit>){} TestBase.kt:86 (newMM.kexe:x86_64+0x100d97868)
    #13 kfun:kotlinx.coroutines.TestBase#runTest$default(kotlin.Function1<kotlin.Throwable,kotlin.Boolean>?;kotlin.collections.List<kotlin.Function1<kotlin.Throwable,kotlin.Boolean>>?;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,kotlin.Unit>;kotlin.Int){} TestBase.kt:78 (newMM.kexe:x86_64+0x100d98270)
    #14 kfun:kotlinx.coroutines.AbstractCoroutineTest#testNotifications(){} AbstractCoroutineTest.kt:13 (newMM.kexe:x86_64+0x10030e3a3)
    #15 kfun:kotlinx.coroutines.$AbstractCoroutineTest$test$0.$testNotifications$FUNCTION_REFERENCE$4.invoke#internal AbstractCoroutineTest.kt:13 (newMM.kexe:x86_64+0x100311740)
    #16 kfun:kotlinx.coroutines.$AbstractCoroutineTest$test$0.$testNotifications$FUNCTION_REFERENCE$4.$<bridge-UNNN>invoke(-1:0){}#internal AbstractCoroutineTest.kt:13 (newMM.kexe:x86_64+0x100311a86)
    #17 kfun:kotlin.native.internal.test.BaseClassSuite.TestCase#run(){} TestSuite.kt:85 (newMM.kexe:x86_64+0x100065e76)
    #18 kfun:kotlin.native.internal.test.TestRunner.run#internal TestRunner.kt:238 (newMM.kexe:x86_64+0x100059602)
    #19 kfun:kotlin.native.internal.test.TestRunner.runIteration#internal TestRunner.kt:261 (newMM.kexe:x86_64+0x10005d22f)
    #20 kfun:kotlin.native.internal.test.TestRunner#run(){}kotlin.Int TestRunner.kt:283 (newMM.kexe:x86_64+0x10005eba1)
    #21 kfun:kotlin.native.internal.test#testLauncherEntryPoint(kotlin.Array<kotlin.String>){}kotlin.Int Launcher.kt:30 (newMM.kexe:x86_64+0x100049d03)
    #22 kfun:kotlinx.coroutines#mainNoExit(kotlin.Array<kotlin.String>){} Launcher.kt:25 (newMM.kexe:x86_64+0x100d9e6b1)
    #23 Konan_start Launcher.kt:24 (newMM.kexe:x86_64+0x100d9e82c)
    #24 Init_and_run_start <null>:2 (newMM.kexe:x86_64+0x100e23528)
    #25 Konan_main <null>:2 (newMM.kexe:x86_64+0x100e235c8)
    #26 start <null>:2 (dyld:x86_64+0x551d)

SUMMARY: ThreadSanitizer: data race Synchronized.kt:204 in kfun:kotlinx.atomicfu.locks.MutexPool#release(kotlinx.cinterop.CPointer<interop.mutex_node>){}
ArrayBroadcastChannel
WARNING: ThreadSanitizer: data race (pid=88874)
  Write of size 8 at 0x7b0c0078a970 by thread T22:
    #0 Kotlin_Array_set <null>:2 (newMM.kexe:x86_64+0x100e19cfa)
    #1 kfun:kotlinx.coroutines.channels.ArrayBroadcastChannel.updateHead#internal ArrayBroadcastChannel.kt:152 (newMM.kexe:x86_64+0x1001f1aa7)
    #2 kfun:kotlinx.coroutines.channels.ArrayBroadcastChannel#updateHead$default(kotlinx.coroutines.channels.ArrayBroadcastChannel.Subscriber<1:0>?;kotlinx.coroutines.channels.ArrayBroadcastChannel.Subscriber<1:0>?;kotlin.Int){} ArrayBroadcastChannel.kt:149 (newMM.kexe:x86_64+0x1001f29d9)
    #3 kfun:kotlinx.coroutines.channels.ArrayBroadcastChannel.Subscriber.close#internal ArrayBroadcastChannel.kt:232 (newMM.kexe:x86_64+0x1001f3c40)
    #4 kfun:kotlinx.coroutines.channels.AbstractChannel#cancelInternal(kotlin.Throwable?){}kotlin.Boolean AbstractChannel.kt:661 (newMM.kexe:x86_64+0x1001d771d)
    #5 kfun:kotlinx.coroutines.channels.AbstractChannel#cancel(kotlin.coroutines.cancellation.CancellationException?){} AbstractChannel.kt:656 (newMM.kexe:x86_64+0x1001d760e)
    #6 kfun:kotlinx.coroutines.channels.ReceiveChannel#cancel$default(kotlin.coroutines.cancellation.CancellationException?;kotlin.Int){} Channel.kt:279 (newMM.kexe:x86_64+0x1002040d0)
    #7 kfun:kotlinx.coroutines.channels.BroadcastChannelSubStressTest.$testStress$lambda$3$lambda$1COROUTINE$2584.invokeSuspend#internal BroadcastChannelSubStressTest.kt:43 (newMM.kexe:x86_64+0x100d2c139)
    #8 kfun:kotlin.coroutines.native.internal.BaseContinuationImpl#resumeWith(kotlin.Result<kotlin.Any?>){} ContinuationImpl.kt:26 (newMM.kexe:x86_64+0x10001d1b2)
    #9 kfun:kotlinx.coroutines.DispatchedTask#run(){} DispatchedTask.kt:88 (newMM.kexe:x86_64+0x1002c0720)
    #10 kfun:kotlinx.coroutines.DarwinGlobalQueueDispatcher.dispatch$lambda$0#internal Dispatchers.kt:26 (newMM.kexe:x86_64+0x10030cb4b)
    #11 kfun:kotlinx.coroutines.DarwinGlobalQueueDispatcher.$dispatch$lambda$0$FUNCTION_REFERENCE$1638.invoke#internal Dispatchers.kt:25 (newMM.kexe:x86_64+0x10030cc09)
    #12 kfun:kotlinx.coroutines.DarwinGlobalQueueDispatcher.$dispatch$lambda$0$FUNCTION_REFERENCE$1638.$<bridge-UNN>invoke(){}#internal Dispatchers.kt:25 (newMM.kexe:x86_64+0x10030cd18)
    #13 _6f72672e6a6574627261696e732e6b6f746c696e783a6b6f746c696e782d636f726f7574696e65732d636f7265_knbridge17 Dispatchers.kt:25 (newMM.kexe:x86_64+0x10030df55)
    #14 ___6f72672e6a6574627261696e732e6b6f746c696e783a6b6f746c696e782d636f726f7574696e65732d636f7265_knbridge15_block_invoke <null>:2 (newMM.kexe:x86_64+0x100dc83fe)
    #15 __tsan::invoke_and_release_block(void*) <null>:3 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x77f0b)
    #16 _dispatch_client_callout <null>:2 (libdispatch.dylib:x86_64+0x3316)

  Previous read of size 8 at 0x7b0c0078a970 by thread T4:
    #0 Kotlin_Array_get <null>:2 (newMM.kexe:x86_64+0x100e19bda)
    #1 kfun:kotlinx.coroutines.channels.ArrayBroadcastChannel.elementAt#internal ArrayBroadcastChannel.kt:212 (newMM.kexe:x86_64+0x1001f3156)
    #2 kfun:kotlinx.coroutines.channels.ArrayBroadcastChannel.Subscriber.peekUnderLock#internal ArrayBroadcastChannel.kt:371 (newMM.kexe:x86_64+0x1001f5939)
    #3 kfun:kotlinx.coroutines.channels.ArrayBroadcastChannel.Subscriber.checkOffer#internal ArrayBroadcastChannel.kt:254 (newMM.kexe:x86_64+0x1001f4095)
    #4 kfun:kotlinx.coroutines.channels.ArrayBroadcastChannel.checkSubOffers#internal ArrayBroadcastChannel.kt:142 (newMM.kexe:x86_64+0x1001f0fd4)
    #5 kfun:kotlinx.coroutines.channels.ArrayBroadcastChannel#offerInternal(1:0){}kotlin.Any ArrayBroadcastChannel.kt:111 (newMM.kexe:x86_64+0x1001f04c5)
    #6 kfun:kotlinx.coroutines.channels.AbstractSendChannel.sendSuspend#internal AbstractChannel.kt:17 (newMM.kexe:x86_64+0x1001e42bc)
    #7 kfun:kotlinx.coroutines.channels.AbstractSendChannel#send(1:0){} AbstractChannel.kt:136 (newMM.kexe:x86_64+0x1001e30f1)
    #8 kfun:kotlinx.coroutines.channels.BroadcastChannelSubStressTest.$testStress$lambda$3$lambda$0COROUTINE$2583.invokeSuspend#internal BroadcastChannelSubStressTest.kt:30 (newMM.kexe:x86_64+0x100d2b021)
    #9 kfun:kotlin.coroutines.native.internal.BaseContinuationImpl#resumeWith(kotlin.Result<kotlin.Any?>){} ContinuationImpl.kt:26 (newMM.kexe:x86_64+0x10001d1b2)
    #10 kfun:kotlinx.coroutines.DispatchedTask#run(){} DispatchedTask.kt:88 (newMM.kexe:x86_64+0x1002c0720)
    #11 kfun:kotlinx.coroutines.DarwinGlobalQueueDispatcher.dispatch$lambda$0#internal Dispatchers.kt:26 (newMM.kexe:x86_64+0x10030cb4b)
    #12 kfun:kotlinx.coroutines.DarwinGlobalQueueDispatcher.$dispatch$lambda$0$FUNCTION_REFERENCE$1638.invoke#internal Dispatchers.kt:25 (newMM.kexe:x86_64+0x10030cc09)
    #13 kfun:kotlinx.coroutines.DarwinGlobalQueueDispatcher.$dispatch$lambda$0$FUNCTION_REFERENCE$1638.$<bridge-UNN>invoke(){}#internal Dispatchers.kt:25 (newMM.kexe:x86_64+0x10030cd18)
    #14 _6f72672e6a6574627261696e732e6b6f746c696e783a6b6f746c696e782d636f726f7574696e65732d636f7265_knbridge17 Dispatchers.kt:25 (newMM.kexe:x86_64+0x10030df55)
    #15 ___6f72672e6a6574627261696e732e6b6f746c696e783a6b6f746c696e782d636f726f7574696e65732d636f7265_knbridge15_block_invoke <null>:2 (newMM.kexe:x86_64+0x100dc83fe)
    #16 __tsan::invoke_and_release_block(void*) <null>:3 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x77f0b)
    #17 _dispatch_client_callout <null>:2 (libdispatch.dylib:x86_64+0x3316)

  Location is heap block of size 40 at 0x7b0c0078a950 allocated by main thread:
    #0 calloc <null>:3 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x534a4)
    #1 kotlin::mm::internal::ObjectFactoryStorage<8ul, kotlin::gc::AllocatorWithGC<kotlin::gc::Allocator, kotlin::gc::ConcurrentMarkAndSweep::ThreadData> >::Node::Create(kotlin::gc::AllocatorWithGC<kotlin::gc::Allocator, kotlin::gc::ConcurrentMarkAndSweep::ThreadData>&, unsigned long) <null>:2 (newMM.kexe:x86_64+0x100dd5c90)
    #2 kotlin::mm::internal::ObjectFactoryStorage<8ul, kotlin::gc::AllocatorWithGC<kotlin::gc::Allocator, kotlin::gc::ConcurrentMarkAndSweep::ThreadData> >::Producer::Insert(unsigned long) <null>:2 (newMM.kexe:x86_64+0x100dd56b1)
    #3 AllocArrayInstance <null>:2 (newMM.kexe:x86_64+0x100dfec45)
    #4 kfun:kotlinx.coroutines.channels.ArrayBroadcastChannel#<init>(kotlin.Int){} ArrayBroadcastChannel.kt:48 (newMM.kexe:x86_64+0x1001ee6af)
    #5 kfun:kotlinx.coroutines.channels#BroadcastChannel(kotlin.Int){0§<kotlin.Any?>}kotlinx.coroutines.channels.BroadcastChannel<0:0> BroadcastChannel.kt:74 (newMM.kexe:x86_64+0x100202319)
    #6 kfun:kotlinx.coroutines.channels.TestBroadcastChannelKind.ARRAY_1.create#internal TestBroadcastChannelKind.kt:9 (newMM.kexe:x86_64+0x10068f37f)
    #7 kfun:kotlinx.coroutines.channels.BroadcastChannelSubStressTest.$testStress$lambda$3COROUTINE$2586.invokeSuspend#internal BroadcastChannelSubStressTest.kt:24 (newMM.kexe:x86_64+0x100d2e135)
    #8 kfun:kotlin.coroutines.native.internal.BaseContinuationImpl#resumeWith(kotlin.Result<kotlin.Any?>){} ContinuationImpl.kt:26 (newMM.kexe:x86_64+0x10001d1b2)
    #9 kfun:kotlinx.coroutines.DispatchedTask#run(){} DispatchedTask.kt:88 (newMM.kexe:x86_64+0x1002c0720)
    #10 kfun:kotlinx.coroutines.EventLoopImplBase#processNextEvent(){}kotlin.Long EventLoop.common.kt:284 (newMM.kexe:x86_64+0x1001aad02)
    #11 kfun:kotlinx.coroutines.BlockingCoroutine.joinBlocking#internal Builders.kt:83 (newMM.kexe:x86_64+0x1002fdf17)
    #12 kfun:kotlinx.coroutines#runBlocking(kotlin.coroutines.CoroutineContext;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,0:0>){0§<kotlin.Any?>}0:0 Builders.kt:56 (newMM.kexe:x86_64+0x1002fd0aa)
    #13 kfun:kotlinx.coroutines.TestBase#runTest(kotlin.Function1<kotlin.Throwable,kotlin.Boolean>?;kotlin.collections.List<kotlin.Function1<kotlin.Throwable,kotlin.Boolean>>;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,kotlin.Unit>){} TestBase.kt:86 (newMM.kexe:x86_64+0x100d97868)
    #14 kfun:kotlinx.coroutines#runMtTest__at__kotlinx.coroutines.TestBase(kotlin.Function1<kotlin.Throwable,kotlin.Boolean>?;kotlin.collections.List<kotlin.Function1<kotlin.Throwable,kotlin.Boolean>>;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,kotlin.Unit>){} TestBaseExtension.kt:18 (newMM.kexe:x86_64+0x100d99183)
    #15 kfun:kotlinx.coroutines#runMtTest$default__at__kotlinx.coroutines.TestBase(kotlin.Function1<kotlin.Throwable,kotlin.Boolean>?;kotlin.collections.List<kotlin.Function1<kotlin.Throwable,kotlin.Boolean>>?;kotlin.coroutines.SuspendFunction1<kotlinx.coroutines.CoroutineScope,kotlin.Unit>;kotlin.Int){} TestBaseExtension.kt:12 (newMM.kexe:x86_64+0x100d99360)
    #16 kfun:kotlinx.coroutines.channels.BroadcastChannelSubStressTest#testStress(){} BroadcastChannelSubStressTest.kt:23 (newMM.kexe:x86_64+0x100d2aac3)
    #17 kfun:kotlinx.coroutines.channels.$BroadcastChannelSubStressTest$test$0.$testStress$FUNCTION_REFERENCE$1508.invoke#internal BroadcastChannelSubStressTest.kt:23 (newMM.kexe:x86_64+0x100d30150)
    #18 kfun:kotlinx.coroutines.channels.$BroadcastChannelSubStressTest$test$0.$testStress$FUNCTION_REFERENCE$1508.$<bridge-UNNN>invoke(-1:0){}#internal BroadcastChannelSubStressTest.kt:23 (newMM.kexe:x86_64+0x100d30496)
    #19 kfun:kotlin.native.internal.test.BaseClassSuite.TestCase#run(){} TestSuite.kt:85 (newMM.kexe:x86_64+0x100065e76)
    #20 kfun:kotlin.native.internal.test.TestRunner.run#internal TestRunner.kt:238 (newMM.kexe:x86_64+0x100059602)
    #21 kfun:kotlin.native.internal.test.TestRunner.runIteration#internal TestRunner.kt:261 (newMM.kexe:x86_64+0x10005d22f)
    #22 kfun:kotlin.native.internal.test.TestRunner#run(){}kotlin.Int TestRunner.kt:283 (newMM.kexe:x86_64+0x10005eba1)
    #23 kfun:kotlin.native.internal.test#testLauncherEntryPoint(kotlin.Array<kotlin.String>){}kotlin.Int Launcher.kt:30 (newMM.kexe:x86_64+0x100049d03)
    #24 kfun:kotlinx.coroutines#mainNoExit(kotlin.Array<kotlin.String>){} Launcher.kt:25 (newMM.kexe:x86_64+0x100d9e6b1)
    #25 Konan_start Launcher.kt:24 (newMM.kexe:x86_64+0x100d9e82c)
    #26 Init_and_run_start <null>:2 (newMM.kexe:x86_64+0x100e23528)
    #27 Konan_main <null>:2 (newMM.kexe:x86_64+0x100e235c8)
    #28 start <null>:2 (dyld:x86_64+0x551d)

qwwdfsad added a commit that referenced this issue Jul 27, 2022
… avoid race with original thread setting parent handle, while another thread nulls it out during cancellation via detachChild

Fixes on of the races found in #3378
qwwdfsad added a commit that referenced this issue Jul 28, 2022
… avoid race with original thread setting parent handle, while another thread nulls it out during cancellation via detachChild

Fixes on of the races found in #3378
qwwdfsad added a commit that referenced this issue Aug 2, 2022
… avoid race with original thread setting parent handle, while another thread nulls it out during cancellation via detachChild (#3380)

Fixes one of the races found in #3378
@qwwdfsad qwwdfsad closed this as completed May 5, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant