[lld] r228955 - PECOFF: Don't parse files in .drectve asynchronously.

Rui Ueyama ruiu at google.com
Thu Feb 12 12:33:40 PST 2015


Author: ruiu
Date: Thu Feb 12 14:33:40 2015
New Revision: 228955

URL: http://llvm.org/viewvc/llvm-project?rev=228955&view=rev
Log:
PECOFF: Don't parse files in .drectve asynchronously.

Looks like there's a race condition around here that caused LLD to crash
on Windows. Currently we are parsing libraries specified by .drectve section
asynchronously, and something is wrong in that process. Disable the feature
for now to make buildbots happy.

Modified:
    lld/trunk/lib/Driver/WinLinkDriver.cpp

Modified: lld/trunk/lib/Driver/WinLinkDriver.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/Driver/WinLinkDriver.cpp?rev=228955&r1=228954&r2=228955&view=diff
==============================================================================
--- lld/trunk/lib/Driver/WinLinkDriver.cpp (original)
+++ lld/trunk/lib/Driver/WinLinkDriver.cpp Thu Feb 12 14:33:40 2015
@@ -1348,10 +1348,8 @@ bool WinLinkDriver::parse(int argc, cons
 
   // Add the input files to the linking context.
   for (std::unique_ptr<File> &file : files) {
-    if (isReadingDirectiveSection) {
-      File *f = file.get();
-      ctx.getTaskGroup().spawn([f] { f->parse(); });
-    }
+    if (isReadingDirectiveSection)
+      file.get()->parse();
     ctx.getNodes().push_back(llvm::make_unique<FileNode>(std::move(file)));
   }
 
@@ -1364,10 +1362,8 @@ bool WinLinkDriver::parse(int argc, cons
   // Add the library files to the library group.
   for (std::unique_ptr<File> &file : libraries) {
     if (!hasLibrary(ctx, file.get())) {
-      if (isReadingDirectiveSection) {
-        File *f = file.get();
-        ctx.getTaskGroup().spawn([f] { f->parse(); });
-      }
+      if (isReadingDirectiveSection)
+        file.get()->parse();
       ctx.addLibraryFile(llvm::make_unique<FileNode>(std::move(file)));
     }
   }





More information about the llvm-commits mailing list