http://llvm.org/bugs/show_bug.cgi?id=20766

            Bug ID: 20766
           Summary: LLDB asserts like mad on "Only storage fields have
                    tail padding!"
           Product: lldb
           Version: unspecified
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: All Bugs
          Assignee: lldb-dev@cs.uiuc.edu
          Reporter: chandl...@gmail.com
                CC: david.majne...@gmail.com, tfi...@google.com
    Classification: Unclassified

I see the following assert-failure crash on LLDB *extremely* frequently:

Process 6948 stopped
* thread #1: tid = 6948, 0x00000000017dfd39 llc`(anonymous
namespace)::DAGCombiner::visitEXTRACT_VECTOR_ELT(this=0x00007fffffffc4d8,
N=0x0000000002a13f88) + 873 at DAGCombiner.cpp:9999, name = 'llc', stop reason
= breakpoint 2.1
    frame #0: 0x00000000017dfd39 llc`(anonymous
namespace)::DAGCombiner::visitEXTRACT_VECTOR_ELT(this=0x00007fffffffc4d8,
N=0x0000000002a13f88) + 873 at DAGCombiner.cpp:9999
   9996   if (NVT.bitsLT(LVT) && !TLI.isTruncateFree(LVT, NVT))
   9997     return SDValue();
   9998
-> 9999   if (InVec.getOpcode() == ISD::BITCAST) {
   10000            // Don't duplicate a load with other uses.
   10001            if (!InVec.hasOneUse())
   10002              return SDValue();
(lldb) p N->dump(&DAG)
lldb: ../tools/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp:526: void (anonymous
namespace)::CGRecordLowering::clipTailPadding(): Assertion `Prior->Kind ==
MemberInfo::Field && !Prior->FD && "Only storage fields have tail padding!"'
failed.
zsh: abort (core dumped)  lldb -- ./bin/llc -o - shuffle.ll
-x86-experimental-vector-shuffle-lowering


However, I can't produce folks a nice reproduction recipe, even by checking out
all of LLVM, building the 'llc' binary, breaking exactly where I have in this
example, and printing just as I have. You can try doing it at head, and you'll
find that *sometimes* it reproduces, but not always.

I believe that what is actually happening here is that we're getting slightly
different merge resolutions of debug information or some such, and that drives
slightly different calls through to Clang to build up the CGRecordLayout, and
only some of them end in this assertion.

However, this is now the most frequent problem I hit trying to debug things
with LLDB by about a factor of 5 or 10. (Which really is a compliment -- almost
everything works these days on Linux!)


Let me know if this just won't reproduce for folks and I'll try to extract some
recipe that fairly reliably triggers it.

-- 
You are receiving this mail because:
You are the assignee for the bug.
_______________________________________________
lldb-dev mailing list
lldb-dev@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev

Reply via email to