From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 5280 invoked by alias); 1 Apr 2019 14:08:51 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 4774 invoked by uid 89); 1 Apr 2019 14:08:51 -0000 Authentication-Results: sourceware.org; auth=none X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 spammy=destroy, topc, top.c, realize X-HELO: mail-wm1-f67.google.com Received: from mail-wm1-f67.google.com (HELO mail-wm1-f67.google.com) (209.85.128.67) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 01 Apr 2019 14:08:49 +0000 Received: by mail-wm1-f67.google.com with SMTP id v14so11651049wmf.2 for ; Mon, 01 Apr 2019 07:08:49 -0700 (PDT) Return-Path: Received: from ?IPv6:2001:8a0:f913:f700:56ee:75ff:fe8d:232b? ([2001:8a0:f913:f700:56ee:75ff:fe8d:232b]) by smtp.gmail.com with ESMTPSA id b8sm10747250wrr.64.2019.04.01.07.08.46 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 01 Apr 2019 07:08:46 -0700 (PDT) Subject: Re: [PATCH] Destroy allocated values when exiting GDB To: Sergio Durigan Junior References: <20190320140846.13031-1-tromey@adacore.com> <87r2azkhmq.fsf@redhat.com> <87mulnkcab.fsf@redhat.com> <87a7hjj7aw.fsf@tromey.com> <87ef6uj408.fsf@tromey.com> <87mulia94w.fsf@redhat.com> <87sgv9bwyg.fsf@tromey.com> <87tvfpr55a.fsf@redhat.com> <87y351mhki.fsf@redhat.com> <87sgv81nld.fsf@tromey.com> <5a2d4016-9e4d-dc18-8c3a-2c9ecf214c94@redhat.com> <87lg0xwe3t.fsf_-_@redhat.com> Cc: Tom Tromey , Tom Tromey , gdb-patches@sourceware.org From: Pedro Alves Message-ID: <369707f4-be00-5234-cbc6-5a5d7b1c5204@redhat.com> Date: Mon, 01 Apr 2019 14:08:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: <87lg0xwe3t.fsf_-_@redhat.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-SW-Source: 2019-04/txt/msg00002.txt.bz2 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