btrace: initiate teardown when closing record btrace target

The to_teardown_btrace target method is used to free btrace resources
during shutdown when target record has already been unpushed and we
can't reliably talk to a remote target to disable branch tracing.

Tracing resources are freed for each thread when the thread is removed;
both on the GDB side and on the gdbserver side.

In the remote case, the remote target that provides to_teardown_btrace
to free the GDB side resources has already been unpushed when threads
are destroyed.  This results in a complaint "You can't do this ..." and
in a few bytes of memory leaked for each thread.

Initiate btrace teardown in record_btrace_close, so the remote target is
still in place.

2014-01-27  Markus Metzger  <markus.t.metzger@intel.com>

	* record-btrace.c (record_btrace_close): Call btrace_teardown
	for all threads.
This commit is contained in:
Markus Metzger 2013-12-03 10:20:47 +01:00
parent 467d141bf5
commit 568e808b7d
2 changed files with 11 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2014-01-27 Markus Metzger <markus.t.metzger@intel.com>
* record-btrace.c (record_btrace_close): Call btrace_teardown
for all threads.
2014-01-27 Joel Brobecker <brobecker@adacore.com>
* ada-lang.c: Remove "#ifdef UI_OUT" condition for including

View File

@ -213,11 +213,16 @@ record_btrace_stop_recording (void)
static void
record_btrace_close (void)
{
struct thread_info *tp;
/* 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. */
/* We should have already stopped recording.
Tear down btrace in case we have not. */
ALL_THREADS (tp)
btrace_teardown (tp);
}
/* The to_info_record method of target record-btrace. */