This is the mail archive of the gdb-prs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug remote/21852] Remote run without specifying a local binary crashes GDB


https://sourceware.org/bugzilla/show_bug.cgi?id=21852

--- Comment #4 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Sergio Durigan Junior
<sergiodj@sourceware.org>:

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=87215ad1651ca3094d813eae06233fd7259b37e5

commit 87215ad1651ca3094d813eae06233fd7259b37e5
Author: Sergio Durigan Junior <sergiodj@redhat.com>
Date:   Tue Aug 22 08:52:44 2017 -0400

    Fix PR remote/21852: Remote run without specifying a local binary crashes
GDB

    There is an assertion that is triggering when we start GDB and
    instruct it to debug a remote inferior, but don't provide a local
    binary, like:

      ./gdb -nx -q --data-directory=data-directory -ex "tar ext :1234" \
        -ex "set remote exec-file /bin/ls" -ex r

    In this case, when calling exec_file_locate_attach to locate the
    inferior, GDB is incorrectly resetting the breakpoints without a
    thread/inferior even running, which causes an assertion to be
    triggered:

      binutils-gdb/gdb/thread.c:1609: internal-error:
scoped_restore_current_thread::scoped_restore_current_thread(): Assertion `tp
!= NULL' failed.
      A problem internal to GDB has been detected,
      further debugging may prove unreliable.
      Quit this debugging session? (y or n)

    This happens because add_current_inferior_and_thread (on remote.c) is
    breaking an invariant: making inferior_ptid point to a non-existing
    thread and then calling common code, which in this case is
    breakpoint_re_set.  The fix is to make sure that inferior_ptid points
    to null_ptid if there is no thread present.

    A testcase is provided.  Regtested on buildbot.

    gdb/ChangeLog:
    2017-08-23  Pedro Alves  <palves@redhat.com>

        PR remote/21852
        * remote.c (add_current_inferior_and_thread): Set inferior_ptid
        to null_ptid and switch to thread without reading the registers
        after adding the inferior.

    gdb/testsuite/ChangeLog:
    2017-08-23  Sergio Durigan Junior  <sergiodj@redhat.com>

        PR remote/21852
        * gdb.server/normal.c: New file, copied from gdb.base.
        * gdb.server/run-without-local-binary.exp: New file.

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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]