[lldb-dev] [Bug 20766] New: LLDB asserts like mad on "Only storage fields have tail padding!"

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Wed Aug 27 03:08:19 PDT 2014


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 at cs.uiuc.edu
          Reporter: chandlerc at gmail.com
                CC: david.majnemer at gmail.com, tfiala at 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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20140827/07f2f998/attachment.html>


More information about the lldb-dev mailing list