Ludovic Courtès writes: Hey Ludo, > > Janneke Nieuwenhuizen <jann...@gnu.org> skribis: > >> So, the problem is that our patch doesrn't disable the warnings after all. >> The guile-launcher has >> >> guile-launcher.c: >> >> #if defined __GNU__ >> /* XXX: On 32-bit GNU/Hurd (i586-gnu), libgc emits "Repeated allocation" >> warnings that are annoying and interfere with communications between >> 'guix-daemon' and 'guix authenticate': >> <https://issues.guix.gnu.org/73181>. Silence them. */ >> std::cerr << "silencing libgc warnings" << std::endl; >> GC_set_warn_proc (no_warnings); >> #endif >> .. >> scm_boot_guile (argc, argv, inner_main, 0); >> >> >> and then guile's gc.c just undoes that > > D’oh! Good catch!
Yeah :-/ > You’ll hate me for suggesting that :-) You know better than that :) > but what if in ‘guile-launcher.c’ > we moved the ‘GC_set_warn_proc’ call to ‘inner_main’? I believe in that > case it would have the desired effect, right? Ah, I cannot believe I missed that -- I read "inner_main" and thought it would call guile's inner main. > That would avoid patching Guile wholesale. > > Anyhow, kudos for the tricky and probably lengthy debugging session! Yeah, so I'm proposing the attached patch -- tested and works for me -- well, apart from having to set overload-threshold. I asked on #hurd and hopefully one of Damien's patch series <https://lists.gnu.org/archive/html/bug-hurd/2024-12/msg00100.html> <https://lists.gnu.org/archive/html/bug-hurd/2024-12/msg00114.html> will take care of that; I'll try that some time soon. Greetings, Janneke
>From 832ef198f7e423e0fdff7fe7c5558ff13d1f20c1 Mon Sep 17 00:00:00 2001 Message-ID: <832ef198f7e423e0fdff7fe7c5558ff13d1f20c1.1733834506.git.jann...@gnu.org> From: Janneke Nieuwenhuizen <jann...@gnu.org> Date: Tue, 10 Dec 2024 10:16:05 +0100 Subject: [PATCH] guile: Silence GC warnings on the Hurd, part II. This is a follow-up to commit b0416b8503e38746717a2d1167f9d1410634981e guile: Silence GC warnings on the Hurd. This should work around <https://issues.guix.gnu.org/73181>, resurrecting offloading to the Hurd. * gnu/packages/aux-files/guile-launcher.c: (main)[__GNU__]: Move code to silence warnings to... (inner_main)[__GNU__]: ...here. Change-Id: I408201f7f4072c9a33837e6020ac63270b33702e --- gnu/packages/aux-files/guile-launcher.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/gnu/packages/aux-files/guile-launcher.c b/gnu/packages/aux-files/guile-launcher.c index bc7fa21b63..c205477f64 100644 --- a/gnu/packages/aux-files/guile-launcher.c +++ b/gnu/packages/aux-files/guile-launcher.c @@ -43,6 +43,14 @@ static const char *load_path, *load_compiled_path; static void inner_main (void *unused, int argc, char **argv) { +#if defined __GNU__ + /* XXX: On 32-bit GNU/Hurd (i586-gnu), libgc emits "Repeated allocation" + warnings that are annoying and interfere with communications between + 'guix-daemon' and 'guix authenticate': + <https://issues.guix.gnu.org/73181>. Silence them. */ + GC_set_warn_proc (no_warnings); +#endif + if (load_path != NULL) { setenv ("GUILE_LOAD_PATH", load_path, 1); @@ -82,14 +90,6 @@ main (int argc, char **argv) which is always preferable over the C locale. */ setlocale (LC_ALL, "en_US.utf8"); -#if defined __GNU__ - /* XXX: On 32-bit GNU/Hurd (i586-gnu), libgc emits "Repeated allocation" - warnings that are annoying and interfere with communications between - 'guix-daemon' and 'guix authenticate': - <https://issues.guix.gnu.org/73181>. Silence them. */ - GC_set_warn_proc (no_warnings); -#endif - const char *str; str = getenv ("GUILE_LOAD_PATH"); load_path = str != NULL ? strdup (str) : NULL; base-commit: 93e1586116f39a30ba1fcb67bd839a43533dfaf4 -- 2.46.0
-- Janneke Nieuwenhuizen <jann...@gnu.org> | GNU LilyPond https://LilyPond.org Freelance IT https://www.JoyOfSource.com | Avatar® https://AvatarAcademy.com