[libcxx-commits] [libcxx] f059e58 - Revert "[libc++] Don't try to wait on a thread that hasn't started in std::async (#125433)"
Kadir Cetinkaya via libcxx-commits
libcxx-commits at lists.llvm.org
Mon Mar 10 07:14:18 PDT 2025
Author: Kadir Cetinkaya
Date: 2025-03-10T15:13:41+01:00
New Revision: f059e58702161bb22b457476f2e5c9faa2386226
URL: https://github.com/llvm/llvm-project/commit/f059e58702161bb22b457476f2e5c9faa2386226
DIFF: https://github.com/llvm/llvm-project/commit/f059e58702161bb22b457476f2e5c9faa2386226.diff
LOG: Revert "[libc++] Don't try to wait on a thread that hasn't started in std::async (#125433)"
This reverts commit 11766a40972f5cc853e296231e5d90ca3c886cc1.
Added:
Modified:
libcxx/include/future
Removed:
libcxx/test/std/thread/futures/futures.async/thread_create_failure.pass.cpp
################################################################################
diff --git a/libcxx/include/future b/libcxx/include/future
index 22b387d3ba094..a08687485bd99 100644
--- a/libcxx/include/future
+++ b/libcxx/include/future
@@ -865,8 +865,7 @@ void __async_assoc_state<_Rp, _Fp>::__execute() {
template <class _Rp, class _Fp>
void __async_assoc_state<_Rp, _Fp>::__on_zero_shared() _NOEXCEPT {
- if (base::__state_ & base::__constructed)
- this->wait();
+ this->wait();
base::__on_zero_shared();
}
@@ -903,8 +902,7 @@ void __async_assoc_state<void, _Fp>::__execute() {
template <class _Fp>
void __async_assoc_state<void, _Fp>::__on_zero_shared() _NOEXCEPT {
- if (base::__state_ & base::__constructed)
- this->wait();
+ this->wait();
base::__on_zero_shared();
}
diff --git a/libcxx/test/std/thread/futures/futures.async/thread_create_failure.pass.cpp b/libcxx/test/std/thread/futures/futures.async/thread_create_failure.pass.cpp
deleted file mode 100644
index d4f7cb771781c..0000000000000
--- a/libcxx/test/std/thread/futures/futures.async/thread_create_failure.pass.cpp
+++ /dev/null
@@ -1,62 +0,0 @@
-//===----------------------------------------------------------------------===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-//
-// UNSUPPORTED: no-threads, no-exceptions
-
-// ASan seems to try to create threadsm which obviouly doesn't work in this test.
-// UNSUPPORTED: asan
-// UNSUPPORTED: hwasan
-
-// UNSUPPORTED: c++03
-
-// There is no way to limit the number of threads on windows
-// UNSUPPORTED: windows
-
-// AIX, FreeBSD, and macOS seem to limit the number of processes, not threads via RLIMIT_NPROC
-// XFAIL: target={{.+}}-aix{{.*}}
-// XFAIL: target={{.+}}-apple-{{.*}}
-// XFAIL: freebsd
-
-// This test makes sure that we fail gracefully in care the thread creation fails. This is only reliably possible on
-// systems that allow limiting the number of threads that can be created. See https://llvm.org/PR125428 for more details
-
-#include <cassert>
-#include <future>
-#include <system_error>
-
-#if __has_include(<sys/resource.h>)
-# include <sys/resource.h>
-# ifdef RLIMIT_NPROC
-void force_thread_creation_failure() {
- rlimit lim = {1, 1};
- assert(setrlimit(RLIMIT_NPROC, &lim) == 0);
-}
-# else
-# error "No known way to force only one thread being available"
-# endif
-#else
-# error "No known way to force only one thread being available"
-#endif
-
-int main(int, char**) {
- force_thread_creation_failure();
-
- try {
- std::future<int> fut = std::async(std::launch::async, [] { return 1; });
- assert(false);
- } catch (const std::system_error&) {
- }
-
- try {
- std::future<void> fut = std::async(std::launch::async, [] { return; });
- assert(false);
- } catch (const std::system_error&) {
- }
-
- return 0;
-}
More information about the libcxx-commits
mailing list