aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorJoel Brobecker <brobecker@gnat.com>2012-10-02 15:05:42 +0000
committerJoel Brobecker <brobecker@gnat.com>2012-10-02 15:05:42 +0000
commit8f0ee2eb7cf9df1a173b72f1542a9b555d7b5cb8 (patch)
tree0c0f339cb57aeaa6d9bee6b2df6e545dbac1a5c5 /gdb
parent547c8182c5cb80c3c3eebf854fd77542bf401e6e (diff)
downloadgdb-8f0ee2eb7cf9df1a173b72f1542a9b555d7b5cb8.zip
gdb-8f0ee2eb7cf9df1a173b72f1542a9b555d7b5cb8.tar.gz
gdb-8f0ee2eb7cf9df1a173b72f1542a9b555d7b5cb8.tar.bz2
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.
Diffstat (limited to 'gdb')
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/rs6000-nat.c1
2 files changed, 6 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 20631b5..0333167 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -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
diff --git a/gdb/rs6000-nat.c b/gdb/rs6000-nat.c
index 3eb2cd7..2d2df5b 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)