Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 06 Apr 2021 19:20:53 +0000
From:      bugzilla-noreply@freebsd.org
To:        toolchain@FreeBSD.org
Subject:   [Bug 248745] /usr/bin/lldb: Dumps core when attempting to print variable with `p`, `fr v` works
Message-ID:  <bug-248745-29464-CSKXGO2NJO@https.bugs.freebsd.org/bugzilla/>
In-Reply-To: <bug-248745-29464@https.bugs.freebsd.org/bugzilla/>
References:  <bug-248745-29464@https.bugs.freebsd.org/bugzilla/>

next in thread | previous in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D248745

--- Comment #9 from commit-hook@FreeBSD.org ---
A commit in branch releng/12.2 references this bug:

URL:
https://cgit.FreeBSD.org/src/commit/?id=3Df1d1353d2d7b84434cb7d6bb003d6f560=
bfc83e3

commit f1d1353d2d7b84434cb7d6bb003d6f560bfc83e3
Author:     Dimitry Andric <dim@FreeBSD.org>
AuthorDate: 2020-10-31 18:42:03 +0000
Commit:     Mark Johnston <markj@FreeBSD.org>
CommitDate: 2021-04-06 19:01:24 +0000

    MFC r364480:

    Merge commit 1ce07cd614be from llvm git (by me):

      Instantiate Error in Target::GetEntryPointAddress() only when
      necessary

      When Target::GetEntryPointAddress() calls
      exe_module->GetObjectFile()->GetEntryPointAddress(), and the returned
      entry_addr is valid, it can immediately be returned.

      However, just before that, an llvm::Error value has been setup, but
      in this case it is not consumed before returning, like is done
      further below in the function.

      In https://bugs.freebsd.org/248745 we got a bug report for this,
      where a very simple test case aborts and dumps core:

      * thread #1, name =3D 'testcase', stop reason =3D breakpoint 1.1
          frame #0: 0x00000000002018d4 testcase`main(argc=3D1,
argv=3D0x00007fffffffea18) at testcase.c:3:5
         1    int main(int argc, char *argv[])
         2    {
      -> 3        return 0;
         4    }
      (lldb) p argc
      Program aborted due to an unhandled Error:
      Error value was Success. (Note: Success values must still be checked
prior to being destroyed).

      Thread 1 received signal SIGABRT, Aborted.
      thr_kill () at thr_kill.S:3
      3       thr_kill.S: No such file or directory.
      (gdb) bt
      #0  thr_kill () at thr_kill.S:3
      #1  0x00000008049a0004 in __raise (s=3D6) at
/usr/src/lib/libc/gen/raise.c:52
      #2  0x0000000804916229 in abort () at /usr/src/lib/libc/stdlib/abort.=
c:67
      #3  0x000000000451b5f5 in fatalUncheckedError () at
/usr/src/contrib/llvm-project/llvm/lib/Support/Error.cpp:112
      #4  0x00000000019cf008 in GetEntryPointAddress () at
/usr/src/contrib/llvm-project/llvm/include/llvm/Support/Error.h:267
      #5  0x0000000001bccbd8 in ConstructorSetup () at
/usr/src/contrib/llvm-project/lldb/source/Target/ThreadPlanCallFunction.cpp=
:67
      #6  0x0000000001bcd2c0 in ThreadPlanCallFunction () at
/usr/src/contrib/llvm-project/lldb/source/Target/ThreadPlanCallFunction.cpp=
:114
      #7  0x00000000020076d4 in InferiorCallMmap () at
/usr/src/contrib/llvm-project/lldb/source/Plugins/Process/Utility/InferiorC=
allPOSIX.cpp:97
      #8  0x0000000001f4be33 in DoAllocateMemory () at
/usr/src/contrib/llvm-project/lldb/source/Plugins/Process/FreeBSD/ProcessFr=
eeBSD.cpp:604
      #9  0x0000000001fe51b9 in AllocatePage () at
/usr/src/contrib/llvm-project/lldb/source/Target/Memory.cpp:347
      #10 0x0000000001fe5385 in AllocateMemory () at
/usr/src/contrib/llvm-project/lldb/source/Target/Memory.cpp:383
      #11 0x0000000001974da2 in AllocateMemory () at
/usr/src/contrib/llvm-project/lldb/source/Target/Process.cpp:2301
      #12 CanJIT () at
/usr/src/contrib/llvm-project/lldb/source/Target/Process.cpp:2331
      #13 0x0000000001a1bf3d in Evaluate () at
/usr/src/contrib/llvm-project/lldb/source/Expression/UserExpression.cpp:190
      #14 0x00000000019ce7a2 in EvaluateExpression () at
/usr/src/contrib/llvm-project/lldb/source/Target/Target.cpp:2372
      #15 0x0000000001ad784c in EvaluateExpression () at
/usr/src/contrib/llvm-project/lldb/source/Commands/CommandObjectExpression.=
cpp:414
      #16 0x0000000001ad86ae in DoExecute () at
/usr/src/contrib/llvm-project/lldb/source/Commands/CommandObjectExpression.=
cpp:646
      #17 0x0000000001a5e3ed in Execute () at
/usr/src/contrib/llvm-project/lldb/source/Interpreter/CommandObject.cpp:1003
      #18 0x0000000001a6c4a3 in HandleCommand () at
/usr/src/contrib/llvm-project/lldb/source/Interpreter/CommandInterpreter.cp=
p:1762
      #19 0x0000000001a6f98c in IOHandlerInputComplete () at
/usr/src/contrib/llvm-project/lldb/source/Interpreter/CommandInterpreter.cp=
p:2760
      #20 0x0000000001a90b08 in Run () at
/usr/src/contrib/llvm-project/lldb/source/Core/IOHandler.cpp:548
      #21 0x00000000019a6c6a in ExecuteIOHandlers () at
/usr/src/contrib/llvm-project/lldb/source/Core/Debugger.cpp:903
      #22 0x0000000001a70337 in RunCommandInterpreter () at
/usr/src/contrib/llvm-project/lldb/source/Interpreter/CommandInterpreter.cp=
p:2946
      #23 0x0000000001d9d812 in RunCommandInterpreter () at
/usr/src/contrib/llvm-project/lldb/source/API/SBDebugger.cpp:1169
      #24 0x0000000001918be8 in MainLoop () at
/usr/src/contrib/llvm-project/lldb/tools/driver/Driver.cpp:675
      #25 0x000000000191a114 in main () at
/usr/src/contrib/llvm-project/lldb/tools/driver/Driver.cpp:890

      Fix the incorrect error catch by only instantiating an Error object
      if it is necessary.

      Reviewed By: JDevlieghere

      Differential Revision: https://reviews.llvm.org/D86355

    This should fix lldb aborting as described in the scenario above.

    Reported by:    dmgk
    PR:             248745
    Approved by:    so
    Security:       FreeBSD-EN-21:07.lldb

    (cherry picked from commit eb41eed03c084bd6eefe91992b0f704caa0fb58b)

 contrib/llvm-project/lldb/source/Target/Target.cpp | 31 +++++++++++-------=
----
 1 file changed, 15 insertions(+), 16 deletions(-)

--=20
You are receiving this mail because:
You are on the CC list for the bug.=



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-248745-29464-CSKXGO2NJO>