[lldb-dev] lldb crash while debugging wxWidgets application that was built with g++

Ed Maste emaste at freebsd.org
Mon May 5 12:15:40 PDT 2014


On 8 April 2014 17:49, Greg Clayton <gclayton at apple.com> wrote:
>
> The whole premise of the GCC changes were that the definition would be available elsewhere, but in this case that isn't the case.

I've run into the same issue on FreeBSD, while trying to debug a clang
built with the system clang-3.4.

* thread #1: tid = 104525, 0x000000081191ff6e
libclangCodeGen.so`clang::CodeGen::CGDebugInfo::CreateType(this=0x0000000815c0a000,
BT=0x0000000815c3d400) + 30 at CGDebugInfo.cpp:391, stop reason =
breakpoint 1.1
    frame #0: 0x000000081191ff6e
libclangCodeGen.so`clang::CodeGen::CGDebugInfo::CreateType(this=0x0000000815c0a000,
BT=0x0000000815c3d400) + 30 at CGDebugInfo.cpp:391
   388  /// CreateType - Get the Basic type from the cache or create a new
   389  /// one if necessary.
   390  llvm::DIType CGDebugInfo::CreateType(const BuiltinType *BT) {
-> 391    unsigned Encoding = 0;
   392    StringRef BTName;
   393    switch (BT->getKind()) {
   394  #define BUILTIN_TYPE(Id, SingletonId)
(lldb) p BT
Assertion failed: (D && "Cannot get layout of forward declarations!"),
function getASTRecordLayout, file
../tools/clang/lib/AST/RecordLayoutBuilder.cpp, line 2783.


In my case the there is a definition available elsewhere:

(lldb) image lookup --type BuiltinType
Best match found in /tank/emaste/ctsrd/llvm/Build/lib/libclangCodeGen.so:
id = {0x0088df97}, name = "BuiltinType", qualified =
"clang::BuiltinType", byte-size = 24, decl = Type.h:1842, clang_type =
"class BuiltinType : public clang::Type {
...

> Yes, by default on darwin clang doesn't use this debug info minimizing trick. On linux you will need to disable it if you have a clang that supports this optimization.

Do you know off-hand how it's disabled on Darwin?  It seems like we
probably want FreeBSD's clang to behave the same way, by default.



More information about the lldb-dev mailing list