unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
From: ludovic.courtes@laas.fr (Ludovic Courtès)
Cc: guile-devel@gnu.org
Subject: Re: [PATCH] Marking weak alist vectors
Date: Wed, 07 Dec 2005 11:33:41 +0100	[thread overview]
Message-ID: <8764q1tcvu.fsf@laas.fr> (raw)
In-Reply-To: <87vey13hn2.fsf@zagadka.de> (Marius Vollmer's message of "Wed, 07 Dec 2005 01:55:29 +0200")

Marius Vollmer <mvo@zagadka.de> writes:

> C code can observe the GC doing its thing (via the smob free
> functions).  In order not to overconstrain the implementation of the
> GC (which is pretty constrained already anyway), we have the
> additional rule that there is no guarantee about the order in which
> objects are swept during the sweep phase.

Relaxing such constraints may work for Scheme objects that are entirely
under Guile's control, but it certainly isn't acceptable when SMOBs come
into play: SMOBs _will_ from time to time be victims of this, resulting
in double-frees and the likes.

SMOBs shouldn't ever have the impression that a value attached to a weak
key is freed _before_ that weak key.  From the SMOB programmer viewpoint
that is really an error, no matter if it's "before but during the same
phase" or not.

> Why do you need this guarantee?

For a concrete example, you may want to look at `test-weaks.c' which I
posted when this discussion started, i.e. a long time ago.  ;-)

For a more general example where this is an issue:
http://lists.nongnu.org/archive/html/g-wrap-dev/2005-09/msg00006.html
(see at the bottom).

> (If you really need this feature, I will start talking you into using
> guardians to enforce some order on finalization.)

I hadn't look into this so far, and indeed, that looks interesting!
That's a nice reflexive approach to GC.

I don't think it solves my very problem though.

>> In any case, if a value P is attached as a property of some object O,
>> then O should be "collected" _before_ P.
>
> Why? Isn't it enough to say 'P is not collected before O is unreachable'?

If user-definable objects (SMOBs) didn't exist, that would be perfectly
fine.  But the mere existence of SMOBs prevents such optimizations.

Why would we like to retain such sloppy semantics which are problematic
to the C (SMOB) programmer?

Thanks,
Ludovic.


_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-devel


  reply	other threads:[~2005-12-07 10:33 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-11-08 17:22 [PATCH] Marking weak alist vectors Ludovic Courtès
2005-11-08 23:51 ` Marius Vollmer
2005-11-09  9:03   ` Ludovic Courtès
2005-12-06 23:55     ` Marius Vollmer
2005-12-07 10:33       ` Ludovic Courtès [this message]
2005-12-13 23:45         ` Marius Vollmer
2005-12-14  9:30           ` Ludovic Courtès
2005-11-09 10:28 ` Han-Wen Nienhuys
2005-11-09 16:28   ` Ludovic Courtès
2005-11-09 18:36     ` Han-Wen Nienhuys
2005-11-09 21:11     ` Kevin Ryde
2005-11-09 22:45       ` Marius Vollmer
2005-11-10 12:11         ` Han-Wen Nienhuys
2005-11-10  9:47       ` [PATCH] Reference leak in `iprin1 ()' Ludovic Courtès
2005-11-12  9:23         ` Neil Jerram
2005-11-14  9:58           ` Ludovic Courtès
2005-11-16 21:18             ` Neil Jerram
2005-11-17  9:54               ` Ludovic Courtès
2005-11-17 18:52                 ` Neil Jerram
2005-11-23 10:19     ` [PATCH] Marking weak alist vectors, #2 Ludovic Courtès
2005-11-24  0:59       ` Han-Wen Nienhuys
2005-11-24  9:01         ` Ludovic Courtès
2005-11-26  0:49       ` Kevin Ryde
2006-01-09 14:51       ` [PATCH] Marking weak alist vectors, epilogue Ludovic Courtès
2006-01-09 19:29         ` Neil Jerram
2006-01-10  8:21           ` Ludovic Courtès
2006-01-10  9:33             ` Neil Jerram
2006-01-10 15:43               ` Ludovic Courtès
2005-11-17 13:21 ` [PATCH] Fixing `gc-live-object-stats' Ludovic Courtès
2005-11-17 14:12   ` Han-Wen Nienhuys
2005-11-30  8:54   ` Ludovic Courtès
2005-11-30 23:45     ` Han-Wen Nienhuys
2005-12-03 19:31       ` Neil Jerram
2005-12-05  8:50         ` Ludovic Courtès
2005-12-06 19:14           ` Neil Jerram

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/guile/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8764q1tcvu.fsf@laas.fr \
    --to=ludovic.courtes@laas.fr \
    --cc=guile-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).