瀏覽代碼

Revert "LibPthread: Partially implement pthread_cleanup_(push pop)"

This reverts commit 5d51e26caff61516d6fcf612c2e9ba72a82b699f.
The threadlocal Vector was somehow misaligned, causing UBSAN to be sad
about calling a misaligned method (either the dtor or .is_empty()) on
it.
For now, let's revert this and avoid the CI flake.
Fixes #12957.
Ali Mohammad Pur 3 年之前
父節點
當前提交
7eafa58af8
共有 1 個文件被更改,包括 4 次插入15 次删除
  1. 4 15
      Userland/Libraries/LibPthread/pthread.cpp

+ 4 - 15
Userland/Libraries/LibPthread/pthread.cpp

@@ -9,7 +9,6 @@
 #include <AK/Debug.h>
 #include <AK/Format.h>
 #include <AK/StdLibExtras.h>
-#include <AK/Vector.h>
 #include <Kernel/API/Syscall.h>
 #include <LibSystem/syscall.h>
 #include <bits/pthread_integration.h>
@@ -38,12 +37,6 @@ static constexpr size_t highest_reasonable_stack_size = 8 * MiB; // That's the d
 __thread void* s_stack_location;
 __thread size_t s_stack_size;
 
-struct CleanupHandler {
-    void (*function)(void*) { nullptr };
-    void* argument { nullptr };
-};
-thread_local Vector<CleanupHandler> s_cleanup_handlers {};
-
 #define __RETURN_PTHREAD_ERROR(rc) \
     return ((rc) < 0 ? -(rc) : 0)
 
@@ -146,23 +139,19 @@ int pthread_create(pthread_t* thread, pthread_attr_t* attributes, void* (*start_
 // https://pubs.opengroup.org/onlinepubs/009695399/functions/pthread_exit.html
 void pthread_exit(void* value_ptr)
 {
-    while (!s_cleanup_handlers.is_empty())
-        pthread_cleanup_pop(1);
     exit_thread(value_ptr, s_stack_location, s_stack_size);
 }
 
 // https://pubs.opengroup.org/onlinepubs/009695399/functions/pthread_cleanup_push.html
-void pthread_cleanup_push(void (*routine)(void*), void* arg)
+void pthread_cleanup_push([[maybe_unused]] void (*routine)(void*), [[maybe_unused]] void* arg)
 {
-    s_cleanup_handlers.empend(routine, arg);
+    TODO();
 }
 
 // https://pubs.opengroup.org/onlinepubs/009695399/functions/pthread_cleanup_pop.html
-void pthread_cleanup_pop(int execute)
+void pthread_cleanup_pop([[maybe_unused]] int execute)
 {
-    auto entry = s_cleanup_handlers.take_last();
-    if (execute != 0)
-        entry.function(entry.argument);
+    TODO();
 }
 
 // https://pubs.opengroup.org/onlinepubs/009695399/functions/pthread_join.html