From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 16059 invoked by alias); 14 Apr 2014 21:39:16 -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 16046 invoked by uid 89); 14 Apr 2014 21:39:15 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.8 required=5.0 tests=AWL,BAYES_00,FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 X-HELO: mail-pb0-f43.google.com Received: from mail-pb0-f43.google.com (HELO mail-pb0-f43.google.com) (209.85.160.43) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-SHA encrypted) ESMTPS; Mon, 14 Apr 2014 21:39:08 +0000 Received: by mail-pb0-f43.google.com with SMTP id um1so8760611pbc.2 for ; Mon, 14 Apr 2014 14:39:06 -0700 (PDT) X-Received: by 10.68.249.195 with SMTP id yw3mr5701271pbc.134.1397511546516; Mon, 14 Apr 2014 14:39:06 -0700 (PDT) Received: from sspiff.sspiff.org.gmail.com (173-13-178-53-sfba.hfc.comcastbusiness.net. [173.13.178.53]) by mx.google.com with ESMTPSA id oz7sm35835855pbc.41.2014.04.14.14.39.05 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 14 Apr 2014 14:39:05 -0700 (PDT) From: Doug Evans To: ludo@gnu.org (Ludovic =?utf-8?Q?Court=C3=A8s?=) Cc: gdb-patches@sourceware.org Subject: Re: [PATCH 9/9] Remove a useless Guile finalizer References: <1397060028-18158-1-git-send-email-wingo@igalia.com> <1397060028-18158-10-git-send-email-wingo@igalia.com> <87tx9wjejo.fsf@gnu.org> Date: Mon, 14 Apr 2014 21:39:00 -0000 In-Reply-To: <87tx9wjejo.fsf@gnu.org> ("Ludovic \=\?utf-8\?Q\?Court\=C3\=A8s\=22'\?\= \=\?utf-8\?Q\?s\?\= message of "Mon, 14 Apr 2014 14:12:11 +0200") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-IsSubscribed: yes X-SW-Source: 2014-04/txt/msg00283.txt.bz2 ludo@gnu.org (Ludovic Court=C3=A8s) writes: > Doug Evans skribis: > >> Andy Wingo writes: >> >>> * gdb/guile/scm-symtab.c (stscm_free_sal_smob): Remove useless free >>> function. (This was the only useless free function.) >>> --- >>> gdb/guile/scm-symtab.c | 14 -------------- >>> 1 file changed, 14 deletions(-) >>> >>> diff --git a/gdb/guile/scm-symtab.c b/gdb/guile/scm-symtab.c >>> index 8910973..876bf64 100644 >>> --- a/gdb/guile/scm-symtab.c >>> +++ b/gdb/guile/scm-symtab.c >>> @@ -386,19 +386,6 @@ gdbscm_symtab_static_block (SCM self) >>> =0C >>> /* Administrivia for sal (symtab-and-line) smobs. */ >>>=20=20 >>> -/* The smob "free" function for . */ >>> - >>> -static size_t >>> -stscm_free_sal_smob (SCM self) >>> -{ >>> - sal_smob *s_smob =3D (sal_smob *) SCM_SMOB_DATA (self); >>> - >>> - /* Not necessary, done to catch bugs. */ >>> - s_smob->symtab_scm =3D SCM_UNDEFINED; >>> - >>> - return 0; >>> -} >>> - >>> /* The smob "print" function for . */ >>>=20=20 >>> static int >>> @@ -692,7 +679,6 @@ gdbscm_initialize_symtabs (void) >>> scm_set_smob_print (symtab_smob_tag, stscm_print_symtab_smob); >>>=20=20 >>> sal_smob_tag =3D gdbscm_make_smob_type (sal_smob_name, sizeof (sal_s= mob)); >>> - scm_set_smob_free (sal_smob_tag, stscm_free_sal_smob); >>> scm_set_smob_print (sal_smob_tag, stscm_print_sal_smob); >>>=20=20 >>> gdbscm_define_functions (symtab_functions, 1); >> >> How useful is valgrind with Guile's GC? > > I think there=E2=80=99s a suppression file for libgc floating around, but= I > haven=E2=80=99t really used it myself. > >> And given that we have this hook, it seems a shame to just throw out >> such useful protections against use-after-free (I'm pretty sure early on >> I found one bug with them), especially given the subtleties with GC, >> and gdb's extensive need to have references to SCM objects from outside >> GC-controlled code. > > IMO it doesn=E2=80=99t help much to have finalizers (free functions) like= this. > For debugging, you could always use a guardian, which has the same effect. Ah. I probably didn't make myself clear. Sorry 'bout that. For smobs that are only ever accessed from Scheme then sure, no disagreement there. For smobs accessed from gdb ... that's the context in which my comments were made. Alas, any such object probably requires a free function anyway. >> If we're going to have a rule that such code is disallowed, >> there is more such code that needs to be removed besides the above >> (grep for "catch bugs"). >> >> But is this something we want? >> At this stage in gdb+guile's development, I like the protection, >> and the cost is within epsilon of zero (to me anyway). > > Again, I don=E2=80=99t think it provides any significant protection or de= bugging > aid. I'm going to keep my NULL'ing out of smob elements in free functions (I see I'm missing a few), but only for such smobs that can be accessed from outside Scheme. It's an open question, I guess, whether modifying the smob like this in a finalizer could confuse gc.