https://bugs.llvm.org/show_bug.cgi?id=43250

            Bug ID: 43250
           Summary: lld crash on guid collision when using thinlto
           Product: lld
           Version: unspecified
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: enhancement
          Priority: P
         Component: All Bugs
          Assignee: [email protected]
          Reporter: [email protected]
                CC: [email protected], [email protected]

Created attachment 22479
  --> https://bugs.llvm.org/attachment.cgi?id=22479&action=edit
Full stacktrace

Happened upon a crash in lld when linking Chromium (see
https://crbug.com/1000691).

Two global symbols (one function and one variable) from different modules end
up with the same GUID.

When linking using thinlto this leads to a crash because code in
FunctionImportUtils.cpp treats any GlobalValue with a GlobalVarSummary attached
as a GlobalVariable but as both the symbols have the same GUID the global
function also has the GlobalVarSummary attached.

Assert:
ld.lld: chromium/src/third_party/llvm/llvm/include/llvm/Support/Casting.h:264:
typename cast_retty<X, Y *>::ret_type llvm::cast(Y *) [X =
llvm::GlobalVariable, Y = llvm::GlobalValue]: Assertion `isa<X>(Val) &&
"cast<Ty>() argument of incompatible type!"' failed.

Top of stacktrace (full stacktrace attached):
#4  0x000056267cb57788 in llvm::cast<llvm::GlobalVariable, llvm::GlobalValue>
(Val=<optimized out>)
    at chromium/src/third_party/llvm/llvm/include/llvm/Support/Casting.h:264
#5  llvm::FunctionImportGlobalProcessing::processGlobalForThinLTO
(this=0x7f7ec9d06720, GV=...)
    at
chromium/src/third_party/llvm/llvm/lib/Transforms/Utils/FunctionImportUtils.cpp:252
#6  0x000056267cb5792c in
llvm::FunctionImportGlobalProcessing::processGlobalsForThinLTO
(this=0x7f7ec9d06720)
    at
chromium/src/third_party/llvm/llvm/lib/Transforms/Utils/FunctionImportUtils.cpp:296
#7  0x000056267cb57bfd in llvm::FunctionImportGlobalProcessing::run
(this=0x7f7ec9d06720)
    at
chromium/src/third_party/llvm/llvm/lib/Transforms/Utils/FunctionImportUtils.cpp:312
#8  llvm::renameModuleForThinLTO (M=..., Index=..., GlobalsToImport=<optimized
out>)
    at
chromium/src/third_party/llvm/llvm/lib/Transforms/Utils/FunctionImportUtils.cpp:319

-- 
You are receiving this mail because:
You are on the CC list for the bug.
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to