diff --git a/stdlib/public/Concurrency/Actor.cpp b/stdlib/public/Concurrency/Actor.cpp index aad95245c2423..97376daa3839c 100644 --- a/stdlib/public/Concurrency/Actor.cpp +++ b/stdlib/public/Concurrency/Actor.cpp @@ -256,8 +256,6 @@ void swift::runJobInEstablishedExecutorContext(Job *job) { #if SWIFT_OBJC_INTEROP objc_autoreleasePoolPop(pool); #endif - - _swift_tsan_release(job); } void swift::adoptTaskVoucher(AsyncTask *task) { diff --git a/stdlib/public/Concurrency/TaskPrivate.h b/stdlib/public/Concurrency/TaskPrivate.h index f61cd3ac09bbe..ea6db1ae0649e 100644 --- a/stdlib/public/Concurrency/TaskPrivate.h +++ b/stdlib/public/Concurrency/TaskPrivate.h @@ -854,6 +854,8 @@ struct AsyncTask::PrivateStorage { } } + _swift_tsan_release(task); + // Destroy and deallocate any remaining task local items since the task is // completed. We need to do this before we destroy the task local // deallocator.