unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
From: Han-Wen Nienhuys <hanwenn@gmail.com>
To: Guile Devel <guile-devel@gnu.org>
Cc: lilypond-devel <lilypond-devel@gnu.org>
Subject: Java finalization & smobs?
Date: Fri, 10 Dec 2021 15:59:13 +0100	[thread overview]
Message-ID: <CAOw_e7afsHz82kyje1tT+=wDk6BnQDO_e6J-E9w-25aa0ozPJA@mail.gmail.com> (raw)

Hi Guile devs,

We are debugging a GC issue in LilyPond when used with Guile 2.2, and
could use some help.

The issue and associated Merge Request are here:

https://gitlab.com/lilypond/lilypond/-/issues/6218
https://gitlab.com/lilypond/lilypond/-/merge_requests/1035

We are using smobs with custom mark and free functions for
interfacing with our C++ code. We are seeing that sometimes mark
functions are called on smobs which have their dependencies already
collected, leading to crashes.

We can change our mark routines to avoid the crash, but it's unclear
to us if this behavior is intended or not, and we worry that this will
come back to bite us in the future.

On the one hand, the docs for smobs state "must assume .. all SCM
values that it references have already been freed and are thus
invalid", which suggests that smob freeing happens in random order,
which is consistent with what we see. On the other hand, Guile sets up
BDWGC with GC_java_finalization=1, which should keep GC dependencies
of an object alive until the object itself is finalized, and I think
we have observed the mark calls that make this happen.

which of the two is it?

(I am seeing the problem on Fedora 35, with Guile 2.2.7 and libgc 8.0.4)

--
Han-Wen Nienhuys - hanwenn@gmail.com - http://www.xs4all.nl/~hanwen



             reply	other threads:[~2021-12-10 14:59 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-10 14:59 Han-Wen Nienhuys [this message]
2021-12-10 18:00 ` Java finalization & smobs? Maxime Devos
2021-12-10 18:02 ` Maxime Devos
2021-12-10 18:10 ` Maxime Devos

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='CAOw_e7afsHz82kyje1tT+=wDk6BnQDO_e6J-E9w-25aa0ozPJA@mail.gmail.com' \
    --to=hanwenn@gmail.com \
    --cc=guile-devel@gnu.org \
    --cc=lilypond-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).