This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
[PATCH] record-btrace: fix assertion when enabling recording after re-run
- From: Markus Metzger <markus dot t dot metzger at intel dot com>
- To: jan dot kratochvil at redhat dot com
- Cc: gdb-patches at sourceware dot org, markus dot t dot metzger at gmail dot com, Christian Himpel <christian dot himpel at intel dot com>
- Date: Mon, 25 Mar 2013 10:42:00 +0100
- Subject: [PATCH] record-btrace: fix assertion when enabling recording after re-run
This fixes the following problem:
Reading symbols from /bin/true...(no debugging symbols found)...done.
(gdb) b _start
Function "_start" not defined.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 1 (_start) pending.
(gdb) r
Starting program: /bin/true
Breakpoint 1, 0x00000039a0400af0 in _start () from /lib64/ld-linux-x86-64.so.2
(gdb) rec b
(gdb) r
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: /bin/true
Breakpoint 1, 0x00000039a0400af0 in _start () from /lib64/ld-linux-x86-64.so.2
(gdb) rec b
gdb/record-btrace.c:154: internal-error: record_btrace_open:
Assertion `record_btrace_thread_observer == NULL' failed.
A problem internal to GDB has been detected,
further debugging may prove unreliable.
Quit this debugging session? (y or n)
CC: Christian Himpel <christian.himpel@intel.com>
2013-03-25 Markus Metzger <markus.t.metzger@intel.com>
* record-btrace.c (record_btrace_close): Call
record_btrace_auto_disable.
gdbserver/
* gdb.btrace/enable.exp: Add regression test.
---
gdb/record-btrace.c | 4 ++++
gdb/testsuite/gdb.btrace/enable.exp | 11 +++++++++++
2 files changed, 15 insertions(+), 0 deletions(-)
diff --git a/gdb/record-btrace.c b/gdb/record-btrace.c
index e85de5e..8fb413e 100644
--- a/gdb/record-btrace.c
+++ b/gdb/record-btrace.c
@@ -192,6 +192,10 @@ record_btrace_stop_recording (void)
static void
record_btrace_close (void)
{
+ /* Make sure automatic recording gets disabled even if we did not stop
+ recording before closing the record-btrace target. */
+ record_btrace_auto_disable ();
+
/* We already stopped recording. */
}
diff --git a/gdb/testsuite/gdb.btrace/enable.exp b/gdb/testsuite/gdb.btrace/enable.exp
index f3acbf8..2e23e41 100644
--- a/gdb/testsuite/gdb.btrace/enable.exp
+++ b/gdb/testsuite/gdb.btrace/enable.exp
@@ -82,3 +82,14 @@ if ![runto_main] {
if ![runto_main] {
return -1
}
+
+# make sure record-btrace can be enabled after re-run
+clean_restart $testfile
+if ![runto_main] {
+ return -1
+}
+gdb_test_no_output "record btrace"
+if ![runto_main] {
+ return -1
+}
+gdb_test_no_output "record btrace" "enable after re-run"
--
1.7.1