[PATCH] Destroy allocated values when exiting GDB
Pedro Alves
palves@redhat.com
Mon Apr 1 14:08:00 GMT 2019
On 03/29/2019 09:43 PM, Sergio Durigan Junior wrote:
>
> diff --git a/gdb/top.c b/gdb/top.c
> index b10b0649e9..ffbe8e517f 100644
> --- a/gdb/top.c
> +++ b/gdb/top.c
> @@ -1672,6 +1672,9 @@ quit_force (int *exit_arg, int from_tty)
> }
> END_CATCH
>
> + /* Destroy any values currently allocated. */
> + finalize_values ();
I think that someone reading this without context may not realize
why we need to do that. How about extending the comment, like:
/* Destroy any values currently allocated now instead of leaving it
to global destructors, because that may be too late. For
example, the destructors of xmethod values call into the Python
runtime, which is finalized via a final cleanup. */
> diff --git a/gdb/value.h b/gdb/value.h
> index d3905cc354..7853950ca3 100644
> --- a/gdb/value.h
> +++ b/gdb/value.h
> @@ -1189,4 +1189,8 @@ extern struct value *call_xmethod (struct value *method,
> extern int value_union_variant (struct type *union_type,
> const gdb_byte *contents);
>
> +/* Destroy the values currently allocated. This is mostly called when
> + GDB is exiting (e.g., on quit_force). */
s/mostly//
> +extern void finalize_values ();
> +
> #endif /* !defined (VALUE_H) */
LGTM with those changes.
Thanks,
Pedro Alves
More information about the Gdb-patches
mailing list