gdb_bfd_unref failed assertion on AIX.

Trying to run any program on AIX triggers a failed assertion:

    (gdb) run
    Starting program: /[...]/simple_main
    /[...]/gdb_bfd.c:288: internal-error: gdb_bfd_unref: Assertion `gdata->refc >= 1' failed.
    A problem internal to GDB has been detected,
    further debugging may prove unreliable.
    Quit this debugging session? (y or n)

What happens is that we have a loop where we forgot to update
the value of "last", resulting in the loop unref'ing the same
BFD over and over again. We bomb the second time around, when
triggering an assertion on the ref counter.

gdb/ChangeLog:

        * rs6000-nat.c (add_vmap): Set "last" to "next" after having
        unref'ed it.
This commit is contained in:
Joel Brobecker 2012-10-02 15:05:42 +00:00
parent 547c8182c5
commit 8f0ee2eb7c
2 changed files with 6 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2012-10-02 Joel Brobecker <brobecker@adacore.com>
* rs6000-nat.c (add_vmap): Set "last" to "next" after having
unref'ed it.
2012-10-01 Andrew Burgess <aburgess@broadcom.com>
* target.c (simple_search_memory): Include access length in

View File

@ -771,6 +771,7 @@ add_vmap (LdInfo *ldi)
next = gdb_bfd_openr_next_archived_file (abfd, last);
gdb_bfd_unref (last);
last = next;
}
if (!last)