Issue 148838
Summary LLDB crashes evaluating a no_unique_address structure with tail padding
Labels lldb
Assignees
Reporter labath
    (Note you need to have assertions enabled for this to crash. With assertions disabled this seems to work, but presumably the assertion is there for a reason.)

```
$ cat a.cc
struct NoAddr {
private:
  int large_member;
 char small_member;
};

struct Padder {
  [[no_unique_address]] NoAddr no_addr;
  char member_in_padding;
};

Padder *padder;
$ clang++ a.cc -c -g -o a.o -fstandalone-debug
$ lldb a.o -o "expr -- *padder"
(lldb) target create "a.o"
Current executable set to '/tmp/a.o' (x86_64).
(lldb) expr -- *padder
lldb: clang/lib/CodeGen/CGRecordLayoutBuilder.cpp:960: void {anonymous}::CGRecordLow
ering::checkBitfieldClipping(bool) const: Assertion `M.Offset >= Tail && "Bitfield access unit is not clipped"' failed.
LLDB diagnostics will be written to /tmp/diagnostics-ef7e28
Please include the directory content when filing a bug report
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrac
e.
Stack dump:
0.	Program arguments: lldb a.o -o "expr -- *padder"
 #0 0x00005625ccf52ad0 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (lldb+0x65ad0)
 #1 0x00005625ccf500da SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
 #2 0x00007f2324e4ac50 (/lib64/libc.so.6+0x3cc50)
 #3 0x00007f2324f2024d syscall (/lib64/libc.so.6+0x11224d)
 #4 0x00007f2329fcf3e2 SignalHandler(int, siginfo_t*, void*) Signals.cpp:0:0
 #5 0x00007f2324e4ac50 (/lib64/libc.so.6+0x3cc50)
 #6 0x00007f2324ea11bc (/lib64/libc.so.6+0x931bc)
 #7 0x00007f2324e4aba6 raise (/lib64/libc.so.6+0x3cba6)
 #8 0x00007f2324e328fa abort (/lib64/libc.so.6+0x248fa)
 #9 0x00007f2324e3281e (/lib64/libc.so.6+0x2481e)
#10 0x00007f2324e42f16 (/lib64/libc.so.6+0x34f16)
#11 0x00007f232bc869bc (anonymous namespace)::CGRecordLowering::lower(bool) CGRecordLayoutBuilder.cpp:0:0
#12 0x00007f232bc86ef5 clang::CodeGen::CodeGenTypes::ComputeRecordLayout(clang::RecordDecl const*, llvm::
StructType*) CGRecordLayoutBuilder.cpp:0:0
#13 0x00007f232bc78e7f clang::CodeGen::CodeGenTypes::ConvertRecordDeclType(clang::RecordDecl const*) Code
GenTypes.cpp:0:0
#14 0x00007f232bc7c575 clang::CodeGen::CodeGenTypes::ConvertTypeForMem(clang::QualType) CodeGenTypes.cpp:
0:0
#15 0x00007f232bc9f89a EmitPointerWithAlignment(clang::Expr const*, clang::CodeGen::LValueBaseInfo*, clan
g::CodeGen::TBAAAccessInfo*, clang::CodeGen::KnownNonNull_t, clang::CodeGen::CodeGenFunction&) CGExpr.cpp
:0:0
...
```

A possible fix in #122197.
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to