unofficial mirror of guile-devel@gnu.org 
 help / color / mirror / Atom feed
From: Jean Abou Samra <jean@abou-samra.fr>
To: Maxime Devos <maximedevos@telenet.be>
Cc: guile-devel@gnu.org
Subject: Re: “Too many root sets” when calling compile frequently
Date: Sat, 20 Aug 2022 13:08:25 +0200	[thread overview]
Message-ID: <B1F5DF42-5823-430C-84B5-357B3392A06E@abou-samra.fr> (raw)
In-Reply-To: <86a5dfb7-f763-21b7-1856-a257fa42b906@telenet.be>



> Le 19 août 2022 à 12:19, Maxime Devos <maximedevos@telenet.be> a écrit :
> 
> 
>> On 19-08-2022 00:18, Jean Abou Samra wrote:
>> Hi,
>> 
>> Calling the Guile compiler often causes this BDWGC error: “Too
>> many root sets”.
>> 
>> scheme@(guile-user)> (define-syntax-rule (repeat n expr expr* ...) (do ((i 0 (1+ i))) ((eqv? i n)) expr expr* ...))
>> scheme@(guile-user)> (use-modules (system base compile))
>> scheme@(guile-user)> (repeat 10000 (compile 5))
>> Too many root sets
>> Abandon (core dumped)
>> 
>> Any idea what is going on here? Should I report it as a bug?
>> Is there a workaround?
>> 
>> Thanks,
>> Jean
> 
> IIRC, Guile used to support garbage collection of compiled code, but that support has been removed.
> 
> I cannot find that in the Git history or NEWS, so maybe that's incorrect.
> 
> If that is correct, maybe with sufficient tests and care, support for unloading compiled code can be restored, removing the call to GC_add_roots.


Thanks for your reply. I didn’t dig into the history yet, but I might do it later. For now, I have a question. What is the actual purpose of the GC_add_roots call? Is it just to give eternal protection to the objects pointed to by pointers in the memory section? In that case, wouldn’t it also work to create a bytevector from the root section and use scm_permanent_object on it? Or is this a subtlety where Guile registers its ELF bytecode as if it were a dynamic library (also ELF)?

It would be great if Guile supported garbage collection of loaded bytecode, but for my use case in LilyPond, it is actually not strictly  necessary. It should suffice not to error out on the nth call.

Jean






  reply	other threads:[~2022-08-20 11:08 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-18 22:18 “Too many root sets” when calling compile frequently Jean Abou Samra
2022-08-18 22:33 ` Jean Abou Samra
2022-08-19  7:22   ` Jean Abou Samra
2022-08-19 10:19 ` Maxime Devos
2022-08-20 11:08   ` Jean Abou Samra [this message]
2022-08-20 13: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=B1F5DF42-5823-430C-84B5-357B3392A06E@abou-samra.fr \
    --to=jean@abou-samra.fr \
    --cc=guile-devel@gnu.org \
    --cc=maximedevos@telenet.be \
    /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).