From: Joel Brobecker Date: Tue, 2 Oct 2012 15:05:42 +0000 (+0000) Subject: gdb_bfd_unref failed assertion on AIX. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=8f0ee2eb7cf9df1a173b72f1542a9b555d7b5cb8;p=binutils-gdb.git 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. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 20631b52d3c..0333167456b 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2012-10-02 Joel Brobecker + + * rs6000-nat.c (add_vmap): Set "last" to "next" after having + unref'ed it. + 2012-10-01 Andrew Burgess * target.c (simple_search_memory): Include access length in diff --git a/gdb/rs6000-nat.c b/gdb/rs6000-nat.c index 3eb2cd70993..2d2df5bce2d 100644 --- a/gdb/rs6000-nat.c +++ b/gdb/rs6000-nat.c @@ -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)