Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LLDB crashed with Assertion failed in function GetMaxU64 of file lldb/source/Utility/DataExtractor.cpp #115166

Open
iamanonymouscs opened this issue Nov 6, 2024 · 1 comment
Labels
crash Prefer [crash-on-valid] or [crash-on-invalid] lldb

Comments

@iamanonymouscs
Copy link

$ clang --version
clang version 16.0.0 (https://mirror.nju.edu.cn/git/llvm-project.git 08d094a)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/local/llvm-08d094a/bin

$ lldb --version
lldb version 16.0.0 (https://mirror.nju.edu.cn/git/llvm-project.git revision 08d094a)
clang revision 08d094a
llvm revision 08d094a

$ cat small.c

#define NITER 4
#define NVARS 20
#define MULTI(X) \
  X( 0), X( 1), X( 2), X( 3), X( 4), X( 5), X( 6), X( 7), X( 8), X( 9), \
  X(10), X(11), X(12), X(13), X(14), X(15), X(16), X(17), X(18), X(19)

#define DECLAREI(INDEX) inc##INDEX = incs[INDEX]
#define DECLAREF(INDEX) *ptr##INDEX = ptrs[INDEX], result##INDEX = 0
#define LOOP(INDEX) result##INDEX += *ptr##INDEX, ptr##INDEX += inc##INDEX
#define COPYOUT(INDEX) results[INDEX] = result##INDEX

float *ptrs[NVARS];
float results[NVARS];
int incs[NVARS];

void __attribute__((noinline))
foo (int n)
{
  int MULTI (DECLAREI);
  float MULTI (DECLAREF);
  while (n--)
    MULTI (LOOP);
  MULTI (COPYOUT);
}

float input[NITER * NVARS];

int
main (void)
{
  int i;

  for (i = 0; i < NVARS; i++)
    ptrs[i] = input + i, incs[i] = i;
  for (i = 0; i < NITER * NVARS; i++)
    input[i] = i;
  foo (NITER);
  for (i = 0; i < NVARS; i++)
    if (results[i] != i * NITER * (NITER + 1) / 2)
      return 1;
  return 0;
}

$ cat script.py

# cat script.py
import pickle

def fstep(debugger, command, result, internal_dict):
    args = command.split()
    step = args[0] if args else 'step'
    target = debugger.GetSelectedTarget()

    process = target.GetProcess()
    thread = process.GetSelectedThread()
    target_name = target.GetExecutable().GetFilename()

    enter_flag = False
    while process.is_alive:
        frame = thread.GetSelectedFrame()

        if frame.IsValid():
            module = frame.GetModule()
            if module.IsValid():
                module_name = module.GetFileSpec().GetFilename()
                if target_name != module_name:
                    if not enter_flag:
                        enter_flag = True
                        if step == 'step':
                            thread.StepOver()
                        else:
                            thread.StepInstruction(False)
                    else:
                        enter_flag = False
                        thread.StepOut()
                    continue

            line_entry = frame.GetLineEntry()
            if line_entry.IsValid() and line_entry.GetFileSpec().IsValid():
                file = line_entry.file.fullpath
                line = line_entry.line
                column = line_entry.column
                address = hex(frame.GetPC())

                varvalue = {f"({var.type}){var.name}": var.value for var in frame.GetVariables(True, True, True, True)}

            if step == 'step':
                thread.StepOver()
            else:
                thread.StepInstruction(False)
        else:
            break

$ clang -Og -g small.c

$ lldb a.out

(lldb) target create "a.out"
Current executable set to '/home/devil/a.out' (x86_64).
(lldb) command script import script.py
(lldb) command script add -f script.fstep fstep
(lldb) b main
Breakpoint 1: where = a.out`main + 32 at small.c:34:5, address = 0x00000000000016f0
(lldb) run
Process 26967 launched: '/home/devil/a.out' (x86_64)
Process 26967 stopped
* thread #1, name = 'a.out', stop reason = breakpoint 1.1
    frame #0: 0x00005555555556f0 a.out`main at small.c:34:5
   31     int i;
   32  
   33     for (i = 0; i < NVARS; i++)
-> 34       ptrs[i] = input + i, incs[i] = i;
   35     for (i = 0; i < NITER * NVARS; i++)
   36       input[i] = i;
   37     foo (NITER);
(lldb) fstep stepi
Assertion failed: (byte_size > 0 && byte_size <= 8 && "GetMaxU64 invalid byte_size!"), function GetMaxU64, file /home/overhead/llvm-project/lldb/source/Utility/DataExtractor.cpp, line 526
backtrace leading to the failure:
 #0 0x00007f8c51f6b6f6 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/usr/local/llvm-08d094a/bin/../lib/liblldb.so.16+0x18c96f6)
 #1 0x00007f8c51a74f9c lldb_private::lldb_assert(bool, char const*, char const*, char const*, unsigned int) (/usr/local/llvm-08d094a/bin/../lib/liblldb.so.16+0x13d2f9c)
 #2 0x00007f8c51a6d6c4 lldb_private::DataExtractor::GetAddress(unsigned long*) const (/usr/local/llvm-08d094a/bin/../lib/liblldb.so.16+0x13cb6c4)
 #3 0x00007f8c51864578 DerefSizeExtractDataHelper(unsigned char*, unsigned long, lldb::ByteOrder, unsigned long) DWARFExpression.cpp:0:0
 #4 0x00007f8c5186b62b lldb_private::DWARFExpression::Evaluate(lldb_private::ExecutionContext*, lldb_private::RegisterContext*, std::shared_ptr<lldb_private::Module>, lldb_private::DataExtractor const&, DWARFUnit const*, lldb::RegisterKind, lldb_private::Value const*, lldb_private::Value const*, lldb_private::Value&, lldb_private::Status*) (/usr/local/llvm-08d094a/bin/../lib/liblldb.so.16+0x11c962b)
 #5 0x00007f8c518583bc lldb_private::DWARFExpressionList::Evaluate(lldb_private::ExecutionContext*, lldb_private::RegisterContext*, unsigned long, lldb_private::Value const*, lldb_private::Value const*, lldb_private::Value&, lldb_private::Status*) const (/usr/local/llvm-08d094a/bin/../lib/liblldb.so.16+0x11b63bc)
 #6 0x00007f8c5181261e lldb_private::ValueObjectVariable::UpdateValue() (/usr/local/llvm-08d094a/bin/../lib/liblldb.so.16+0x117061e)
 #7 0x00007f8c517f0b66 lldb_private::ValueObject::UpdateValueIfNeeded(bool) (.part.0) ValueObject.cpp:0:0
 #8 0x00007f8c517f4788 lldb_private::ValueObject::GetValueAsCString() (/usr/local/llvm-08d094a/bin/../lib/liblldb.so.16+0x1152788)
 #9 0x00007f8c516241d5 lldb::SBValue::GetValue() (/usr/local/llvm-08d094a/bin/../lib/liblldb.so.16+0xf821d5)
#10 0x00007f8c516e0cfe _wrap_SBValue_GetValue LLDBWrapPython.cpp:0:0
#11 0x00007f8c4fc5f68e (/lib/x86_64-linux-gnu/libpython3.10.so.1.0+0x12868e)
#12 0x00007f8c4fbb29c8 _PyEval_EvalFrameDefault (/lib/x86_64-linux-gnu/libpython3.10.so.1.0+0x7b9c8)
#13 0x00007f8c4fcf93af (/lib/x86_64-linux-gnu/libpython3.10.so.1.0+0x1c23af)
#14 0x00007f8c4fc1fde4 (/lib/x86_64-linux-gnu/libpython3.10.so.1.0+0xe8de4)
#15 0x00007f8c4fc678a5 _PyObject_GenericGetAttrWithDict (/lib/x86_64-linux-gnu/libpython3.10.so.1.0+0x1308a5)
#16 0x00007f8c4fc66f2b PyObject_GetAttr (/lib/x86_64-linux-gnu/libpython3.10.so.1.0+0x12ff2b)
#17 0x00007f8c4fbacb03 _PyEval_EvalFrameDefault (/lib/x86_64-linux-gnu/libpython3.10.so.1.0+0x75b03)
#18 0x00007f8c4fcf93af (/lib/x86_64-linux-gnu/libpython3.10.so.1.0+0x1c23af)
#19 0x00007f8c4fbaf63e _PyEval_EvalFrameDefault (/lib/x86_64-linux-gnu/libpython3.10.so.1.0+0x7863e)
#20 0x00007f8c4fcf93af (/lib/x86_64-linux-gnu/libpython3.10.so.1.0+0x1c23af)
#21 0x00007f8c51db9dc2 lldb_private::python::PythonCallable::operator()(std::initializer_list<lldb_private::python::PythonObject>) (/usr/local/llvm-08d094a/bin/../lib/liblldb.so.16+0x1717dc2)
#22 0x00007f8c51727e6c lldb_private::LLDBSwigPythonCallCommand(char const*, char const*, std::shared_ptr<lldb_private::Debugger>, char const*, lldb_private::CommandReturnObject&, std::shared_ptr<lldb_private::ExecutionContextRef>) (/usr/local/llvm-08d094a/bin/../lib/liblldb.so.16+0x1085e6c)
#23 0x00007f8c51dc7e84 lldb_private::ScriptInterpreterPythonImpl::RunScriptBasedCommand(char const*, llvm::StringRef, lldb_private::ScriptedCommandSynchronicity, lldb_private::CommandReturnObject&, lldb_private::Status&, lldb_private::ExecutionContext const&) (/usr/local/llvm-08d094a/bin/../lib/liblldb.so.16+0x1725e84)
#24 0x00007f8c53c5bd15 CommandObjectPythonFunction::DoExecute(llvm::StringRef, lldb_private::CommandReturnObject&) (/usr/local/llvm-08d094a/bin/../lib/liblldb.so.16+0x35b9d15)
#25 0x00007f8c518ad783 lldb_private::CommandObjectRaw::Execute(char const*, lldb_private::CommandReturnObject&) (/usr/local/llvm-08d094a/bin/../lib/liblldb.so.16+0x120b783)
#26 0x00007f8c518a9c60 lldb_private::CommandInterpreter::HandleCommand(char const*, lldb_private::LazyBool, lldb_private::CommandReturnObject&) (/usr/local/llvm-08d094a/bin/../lib/liblldb.so.16+0x1207c60)
#27 0x00007f8c518aa1c2 lldb_private::CommandInterpreter::IOHandlerInputComplete(lldb_private::IOHandler&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&) (/usr/local/llvm-08d094a/bin/../lib/liblldb.so.16+0x12081c2)
#28 0x00007f8c517aed0c lldb_private::IOHandlerEditline::Run() (/usr/local/llvm-08d094a/bin/../lib/liblldb.so.16+0x110cd0c)
#29 0x00007f8c51782a6a lldb_private::Debugger::RunIOHandlers() (/usr/local/llvm-08d094a/bin/../lib/liblldb.so.16+0x10e0a6a)
#30 0x00007f8c51899476 lldb_private::CommandInterpreter::RunCommandInterpreter(lldb_private::CommandInterpreterRunOptions&) (/usr/local/llvm-08d094a/bin/../lib/liblldb.so.16+0x11f7476)
#31 0x00007f8c514df326 lldb::SBDebugger::RunCommandInterpreter(bool, bool) (/usr/local/llvm-08d094a/bin/../lib/liblldb.so.16+0xe3d326)
#32 0x000055f1fa44486f Driver::MainLoop() (/usr/local/llvm-08d094a/bin/lldb+0xf86f)
#33 0x000055f1fa4432da main (/usr/local/llvm-08d094a/bin/lldb+0xe2da)
#34 0x00007f8c50137d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#35 0x00007f8c50137e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#36 0x000055f1fa4433d5 _start (/usr/local/llvm-08d094a/bin/lldb+0xe3d5)
please file a bug report against lldb reporting this failure log, and as many details as possible
*** stack smashing detected ***: terminated
LLDB diagnostics will be written to /tmp/diagnostics-8a3f09
Please include the directory content when filing a bug report
Aborted (core dumped)

I've written a Python script to register an fstep command for step-by-step debugging of a binary. While stepping through the program at the instruction level and retrieving the respective information, LLDB crashes. I’ve also uploaded the binary that was being debugged with LLDB, as shown below.

a.out.zip

@EugeneZelenko EugeneZelenko added lldb crash Prefer [crash-on-valid] or [crash-on-invalid] and removed new issue labels Nov 6, 2024
@llvmbot
Copy link
Collaborator

llvmbot commented Nov 6, 2024

@llvm/issue-subscribers-lldb

Author: Anonymous (iamanonymouscs)

`$ clang --version` clang version 16.0.0 (https://mirror.nju.edu.cn/git/llvm-project.git 08d094a) Target: x86_64-unknown-linux-gnu Thread model: posix InstalledDir: /usr/local/llvm-08d094a/bin

$ lldb --version
lldb version 16.0.0 (https://mirror.nju.edu.cn/git/llvm-project.git revision 08d094a)
clang revision 08d094a
llvm revision 08d094a

$ cat small.c

#define NITER 4
#define NVARS 20
#define MULTI(X) \
  X( 0), X( 1), X( 2), X( 3), X( 4), X( 5), X( 6), X( 7), X( 8), X( 9), \
  X(10), X(11), X(12), X(13), X(14), X(15), X(16), X(17), X(18), X(19)

#define DECLAREI(INDEX) inc##INDEX = incs[INDEX]
#define DECLAREF(INDEX) *ptr##INDEX = ptrs[INDEX], result##INDEX = 0
#define LOOP(INDEX) result##INDEX += *ptr##INDEX, ptr##INDEX += inc##INDEX
#define COPYOUT(INDEX) results[INDEX] = result##INDEX

float *ptrs[NVARS];
float results[NVARS];
int incs[NVARS];

void __attribute__((noinline))
foo (int n)
{
  int MULTI (DECLAREI);
  float MULTI (DECLAREF);
  while (n--)
    MULTI (LOOP);
  MULTI (COPYOUT);
}

float input[NITER * NVARS];

int
main (void)
{
  int i;

  for (i = 0; i &lt; NVARS; i++)
    ptrs[i] = input + i, incs[i] = i;
  for (i = 0; i &lt; NITER * NVARS; i++)
    input[i] = i;
  foo (NITER);
  for (i = 0; i &lt; NVARS; i++)
    if (results[i] != i * NITER * (NITER + 1) / 2)
      return 1;
  return 0;
}

$ cat script.py

# cat script.py
import pickle

def fstep(debugger, command, result, internal_dict):
    args = command.split()
    step = args[0] if args else 'step'
    target = debugger.GetSelectedTarget()

    process = target.GetProcess()
    thread = process.GetSelectedThread()
    target_name = target.GetExecutable().GetFilename()

    enter_flag = False
    while process.is_alive:
        frame = thread.GetSelectedFrame()

        if frame.IsValid():
            module = frame.GetModule()
            if module.IsValid():
                module_name = module.GetFileSpec().GetFilename()
                if target_name != module_name:
                    if not enter_flag:
                        enter_flag = True
                        if step == 'step':
                            thread.StepOver()
                        else:
                            thread.StepInstruction(False)
                    else:
                        enter_flag = False
                        thread.StepOut()
                    continue

            line_entry = frame.GetLineEntry()
            if line_entry.IsValid() and line_entry.GetFileSpec().IsValid():
                file = line_entry.file.fullpath
                line = line_entry.line
                column = line_entry.column
                address = hex(frame.GetPC())

                varvalue = {f"({var.type}){var.name}": var.value for var in frame.GetVariables(True, True, True, True)}

            if step == 'step':
                thread.StepOver()
            else:
                thread.StepInstruction(False)
        else:
            break

$ clang -Og -g small.c

$ lldb a.out

(lldb) target create "a.out"
Current executable set to '/home/devil/a.out' (x86_64).
(lldb) command script import script.py
(lldb) command script add -f script.fstep fstep
(lldb) b main
Breakpoint 1: where = a.out`main + 32 at small.c:34:5, address = 0x00000000000016f0
(lldb) run
Process 26967 launched: '/home/devil/a.out' (x86_64)
Process 26967 stopped
* thread #<!-- -->1, name = 'a.out', stop reason = breakpoint 1.1
    frame #<!-- -->0: 0x00005555555556f0 a.out`main at small.c:34:5
   31     int i;
   32  
   33     for (i = 0; i &lt; NVARS; i++)
-&gt; 34       ptrs[i] = input + i, incs[i] = i;
   35     for (i = 0; i &lt; NITER * NVARS; i++)
   36       input[i] = i;
   37     foo (NITER);
(lldb) fstep stepi
Assertion failed: (byte_size &gt; 0 &amp;&amp; byte_size &lt;= 8 &amp;&amp; "GetMaxU64 invalid byte_size!"), function GetMaxU64, file /home/overhead/llvm-project/lldb/source/Utility/DataExtractor.cpp, line 526
backtrace leading to the failure:
 #<!-- -->0 0x00007f8c51f6b6f6 llvm::sys::PrintStackTrace(llvm::raw_ostream&amp;, int) (/usr/local/llvm-08d094a/bin/../lib/liblldb.so.16+0x18c96f6)
 #<!-- -->1 0x00007f8c51a74f9c lldb_private::lldb_assert(bool, char const*, char const*, char const*, unsigned int) (/usr/local/llvm-08d094a/bin/../lib/liblldb.so.16+0x13d2f9c)
 #<!-- -->2 0x00007f8c51a6d6c4 lldb_private::DataExtractor::GetAddress(unsigned long*) const (/usr/local/llvm-08d094a/bin/../lib/liblldb.so.16+0x13cb6c4)
 #<!-- -->3 0x00007f8c51864578 DerefSizeExtractDataHelper(unsigned char*, unsigned long, lldb::ByteOrder, unsigned long) DWARFExpression.cpp:0:0
 #<!-- -->4 0x00007f8c5186b62b lldb_private::DWARFExpression::Evaluate(lldb_private::ExecutionContext*, lldb_private::RegisterContext*, std::shared_ptr&lt;lldb_private::Module&gt;, lldb_private::DataExtractor const&amp;, DWARFUnit const*, lldb::RegisterKind, lldb_private::Value const*, lldb_private::Value const*, lldb_private::Value&amp;, lldb_private::Status*) (/usr/local/llvm-08d094a/bin/../lib/liblldb.so.16+0x11c962b)
 #<!-- -->5 0x00007f8c518583bc lldb_private::DWARFExpressionList::Evaluate(lldb_private::ExecutionContext*, lldb_private::RegisterContext*, unsigned long, lldb_private::Value const*, lldb_private::Value const*, lldb_private::Value&amp;, lldb_private::Status*) const (/usr/local/llvm-08d094a/bin/../lib/liblldb.so.16+0x11b63bc)
 #<!-- -->6 0x00007f8c5181261e lldb_private::ValueObjectVariable::UpdateValue() (/usr/local/llvm-08d094a/bin/../lib/liblldb.so.16+0x117061e)
 #<!-- -->7 0x00007f8c517f0b66 lldb_private::ValueObject::UpdateValueIfNeeded(bool) (.part.0) ValueObject.cpp:0:0
 #<!-- -->8 0x00007f8c517f4788 lldb_private::ValueObject::GetValueAsCString() (/usr/local/llvm-08d094a/bin/../lib/liblldb.so.16+0x1152788)
 #<!-- -->9 0x00007f8c516241d5 lldb::SBValue::GetValue() (/usr/local/llvm-08d094a/bin/../lib/liblldb.so.16+0xf821d5)
#<!-- -->10 0x00007f8c516e0cfe _wrap_SBValue_GetValue LLDBWrapPython.cpp:0:0
#<!-- -->11 0x00007f8c4fc5f68e (/lib/x86_64-linux-gnu/libpython3.10.so.1.0+0x12868e)
#<!-- -->12 0x00007f8c4fbb29c8 _PyEval_EvalFrameDefault (/lib/x86_64-linux-gnu/libpython3.10.so.1.0+0x7b9c8)
#<!-- -->13 0x00007f8c4fcf93af (/lib/x86_64-linux-gnu/libpython3.10.so.1.0+0x1c23af)
#<!-- -->14 0x00007f8c4fc1fde4 (/lib/x86_64-linux-gnu/libpython3.10.so.1.0+0xe8de4)
#<!-- -->15 0x00007f8c4fc678a5 _PyObject_GenericGetAttrWithDict (/lib/x86_64-linux-gnu/libpython3.10.so.1.0+0x1308a5)
#<!-- -->16 0x00007f8c4fc66f2b PyObject_GetAttr (/lib/x86_64-linux-gnu/libpython3.10.so.1.0+0x12ff2b)
#<!-- -->17 0x00007f8c4fbacb03 _PyEval_EvalFrameDefault (/lib/x86_64-linux-gnu/libpython3.10.so.1.0+0x75b03)
#<!-- -->18 0x00007f8c4fcf93af (/lib/x86_64-linux-gnu/libpython3.10.so.1.0+0x1c23af)
#<!-- -->19 0x00007f8c4fbaf63e _PyEval_EvalFrameDefault (/lib/x86_64-linux-gnu/libpython3.10.so.1.0+0x7863e)
#<!-- -->20 0x00007f8c4fcf93af (/lib/x86_64-linux-gnu/libpython3.10.so.1.0+0x1c23af)
#<!-- -->21 0x00007f8c51db9dc2 lldb_private::python::PythonCallable::operator()(std::initializer_list&lt;lldb_private::python::PythonObject&gt;) (/usr/local/llvm-08d094a/bin/../lib/liblldb.so.16+0x1717dc2)
#<!-- -->22 0x00007f8c51727e6c lldb_private::LLDBSwigPythonCallCommand(char const*, char const*, std::shared_ptr&lt;lldb_private::Debugger&gt;, char const*, lldb_private::CommandReturnObject&amp;, std::shared_ptr&lt;lldb_private::ExecutionContextRef&gt;) (/usr/local/llvm-08d094a/bin/../lib/liblldb.so.16+0x1085e6c)
#<!-- -->23 0x00007f8c51dc7e84 lldb_private::ScriptInterpreterPythonImpl::RunScriptBasedCommand(char const*, llvm::StringRef, lldb_private::ScriptedCommandSynchronicity, lldb_private::CommandReturnObject&amp;, lldb_private::Status&amp;, lldb_private::ExecutionContext const&amp;) (/usr/local/llvm-08d094a/bin/../lib/liblldb.so.16+0x1725e84)
#<!-- -->24 0x00007f8c53c5bd15 CommandObjectPythonFunction::DoExecute(llvm::StringRef, lldb_private::CommandReturnObject&amp;) (/usr/local/llvm-08d094a/bin/../lib/liblldb.so.16+0x35b9d15)
#<!-- -->25 0x00007f8c518ad783 lldb_private::CommandObjectRaw::Execute(char const*, lldb_private::CommandReturnObject&amp;) (/usr/local/llvm-08d094a/bin/../lib/liblldb.so.16+0x120b783)
#<!-- -->26 0x00007f8c518a9c60 lldb_private::CommandInterpreter::HandleCommand(char const*, lldb_private::LazyBool, lldb_private::CommandReturnObject&amp;) (/usr/local/llvm-08d094a/bin/../lib/liblldb.so.16+0x1207c60)
#<!-- -->27 0x00007f8c518aa1c2 lldb_private::CommandInterpreter::IOHandlerInputComplete(lldb_private::IOHandler&amp;, std::__cxx11::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;&amp;) (/usr/local/llvm-08d094a/bin/../lib/liblldb.so.16+0x12081c2)
#<!-- -->28 0x00007f8c517aed0c lldb_private::IOHandlerEditline::Run() (/usr/local/llvm-08d094a/bin/../lib/liblldb.so.16+0x110cd0c)
#<!-- -->29 0x00007f8c51782a6a lldb_private::Debugger::RunIOHandlers() (/usr/local/llvm-08d094a/bin/../lib/liblldb.so.16+0x10e0a6a)
#<!-- -->30 0x00007f8c51899476 lldb_private::CommandInterpreter::RunCommandInterpreter(lldb_private::CommandInterpreterRunOptions&amp;) (/usr/local/llvm-08d094a/bin/../lib/liblldb.so.16+0x11f7476)
#<!-- -->31 0x00007f8c514df326 lldb::SBDebugger::RunCommandInterpreter(bool, bool) (/usr/local/llvm-08d094a/bin/../lib/liblldb.so.16+0xe3d326)
#<!-- -->32 0x000055f1fa44486f Driver::MainLoop() (/usr/local/llvm-08d094a/bin/lldb+0xf86f)
#<!-- -->33 0x000055f1fa4432da main (/usr/local/llvm-08d094a/bin/lldb+0xe2da)
#<!-- -->34 0x00007f8c50137d90 (/lib/x86_64-linux-gnu/libc.so.6+0x29d90)
#<!-- -->35 0x00007f8c50137e40 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x29e40)
#<!-- -->36 0x000055f1fa4433d5 _start (/usr/local/llvm-08d094a/bin/lldb+0xe3d5)
please file a bug report against lldb reporting this failure log, and as many details as possible
*** stack smashing detected ***: terminated
LLDB diagnostics will be written to /tmp/diagnostics-8a3f09
Please include the directory content when filing a bug report
Aborted (core dumped)

I've written a Python script to register an fstep command for step-by-step debugging of a binary. While stepping through the program at the instruction level and retrieving the respective information, LLDB crashes. I’ve also uploaded the binary that was being debugged with LLDB, as shown below.

a.out.zip

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
crash Prefer [crash-on-valid] or [crash-on-invalid] lldb
Projects
None yet
Development

No branches or pull requests

3 participants