Revert "[lld] Fix elf::unlinkAsync detached thread"
authorNick Desaulniers <ndesaulniers@google.com>
Thu, 14 Feb 2019 23:39:32 +0000 (23:39 +0000)
committerNick Desaulniers <ndesaulniers@google.com>
Thu, 14 Feb 2019 23:39:32 +0000 (23:39 +0000)
This reverts commit 2694810153cf992823eb45253d26b8567424438f.

llvm-svn: 354080

lld/ELF/Filesystem.cpp

index 5c8475f..957534a 100644 (file)
@@ -58,26 +58,9 @@ void elf::unlinkAsync(StringRef Path) {
   std::error_code EC = sys::fs::openFileForRead(Path, FD);
   sys::fs::remove(Path);
 
-  if (EC)
-    return;
-
   // close and therefore remove TempPath in background.
-  std::mutex M;
-  std::condition_variable CV;
-  bool Started = false;
-  std::thread([&, FD] {
-    {
-      std::lock_guard<std::mutex> L(M);
-      Started = true;
-      CV.notify_all();
-    }
-    ::close(FD);
-  }).detach();
-
-  // GLIBC 2.26 and earlier have race condition that crashes an entire process
-  // if the main thread calls exit(2) while other thread is starting up.
-  std::unique_lock<std::mutex> L(M);
-  CV.wait(L, [&] { return Started; });
+  if (!EC)
+    std::thread([=] { ::close(FD); }).detach();
 #endif
 }