[lldb-dev] [Bug 30485] New: lldb assertion "Architecture or OS not supported" when loading Ubuntu core dump

via lldb-dev lldb-dev at lists.llvm.org
Thu Sep 22 02:40:28 PDT 2016


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

            Bug ID: 30485
           Summary: lldb assertion "Architecture or OS not supported" when
                    loading Ubuntu core dump
           Product: lldb
           Version: 3.9
          Hardware: PC
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: P
         Component: All Bugs
          Assignee: lldb-dev at lists.llvm.org
          Reporter: richard_chamberlain at uk.ibm.com
                CC: llvm-bugs at lists.llvm.org
    Classification: Unclassified

Error and log messages:

elf-core::CreateRegisterContextForFrame:: Architecture(27) or OS(0) not
supported
lldb:
/home/rchamberlain/lldb/llvm/tools/lldb/source/Plugins/Process/elf-core/ThreadElfCore.cpp:146:
virtual lldb::RegisterContextSP
 ThreadElfCore::CreateRegisterContextForFrame(lldb_private::StackFrame*):
Assertion `false && "Architecture or OS not supported"' failed.

Problen seen on lldb trunk version 4.0.0
(http://llvm.org/svn/llvm-project/lldb/trunk revision 281963 clang revision
281963 llvm revision 281963). Also fails on lldb 3.9.0.

The core dump was produced by an Ubuntu 14.04 instance (OS version: Linux
3.19.0-33-generic #38~14.04.1-Ubuntu SMP Fri Nov 6 18:17:28 UTC 2015) running
in IBM Bluemix/Cloud Foundry. Core dumps from Ubuntu running 'on the metal'
work fine. The difference seems to be that the library paths in the ELF notes
section that lldb uses to identify the core dump as Linux have an additional
prefix in the failing case. So the check for a path that starts with
/lib/x86_64-linux-gnu does not work for these core dumps. Relevant lldb code is
here:

Plugins/ObjectFile/ELF/ObjectFileELF.cpp
ObjectFileELF::RefineModuleDetailsFromNote()

      llvm::StringRef path(cstr);
      if (path.startswith("/lib/x86_64-linux-gnu") ||
          path.startswith("/lib/i386-linux-gnu")) {
        arch_spec.GetTriple().setOS(llvm::Triple::OSType::Linux);

Notes section in core dump:

~/test$ readelf -n core-node-6-100-1470315046
Displaying notes found at file offset 0x000023b0 with length 0x00003d14:
  Owner                 Data size    Description
  CORE                 0x00000150    NT_PRSTATUS (prstatus structure)
  CORE                 0x00000088    NT_PRPSINFO (prpsinfo structure)
  CORE                 0x00000080    NT_SIGINFO (siginfo_t data)
  CORE                 0x00000130    NT_AUXV (auxiliary vector)
  CORE                 0x000017db    NT_FILE (mapped files)
    Page size: 4096
                 Start                 End         Page Offset
    0x0000000000400000  0x00000000017bc000  0x0000000000000000
        /warden/depot/19p5hmkqpps/tmp/rootfs/home/vcap/app/vendor/node/bin/node
    0x00000000019bc000  0x00000000019d5000  0x00000000000013bc
    ....
        /packages/rootfs_cflinuxfs2/..../lib/x86_64-linux-gnu/libc-2.19.so
    0x00007fbe4a139000  0x00007fbe4a339000  0x00000000000001ba
       
/packages/rootfs_cflinuxfs2/..../rootfs/lib/x86_64-linux-gnu/libc-2.19.so
    0x00007fbe4a339000  0x00007fbe4a33d000  0x00000000000001ba
       
/packages/rootfs_cflinuxfs2/..../rootfs/lib/x86_64-linux-gnu/libc-2.19.so
    0x00007fbe4a33d000  0x00007fbe4a33f000  0x00000000000001be
    ....

Suggested fix would be to widen the test slightly, e.g.
path.find("/lib/x86_64-linux-gnu") rather than
path.startswith("/lib/x86_64-linux-gnu")

This solution was already hinted at by Ted Woodward here:
http://lists.llvm.org/pipermail/lldb-dev/2016-August/010974.html

Offending core dump(s) available on request.

-- 
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/20160922/ca117983/attachment.html>


More information about the lldb-dev mailing list