Hi Dave and Jonas, On Mon, Jun 8, 2020 at 4:38 AM Jonas Hahnfeld via Discussions on LilyPond development <[email protected]> wrote: > Am Montag, den 08.06.2020, 10:24 +0200 schrieb Dave Plater: > > Hi, I maintain Lilypond for openSUSE and also created guile1 for > > lilypond using guile-1.8.8 > > I have a problem, guile-1.8.8 doesn't build with gcc 10: > > [...] > > > > Causes a: > > 15388 Segmentation fault | > > GUILE="/home/abuild/rpmbuild/BUILD/guile-1.8.8/pre-inst-guile" > > ../scripts/snarf-check-and-output-texi > guile-procedures.texi > > > > This is beyond my capabilities, the above command resists gdb --args > > so I'm unable to see where the segfault happens. Something in gcc10 is > > exposing a problem in guile-1.8.8
Dave, thank you so much for bringing up this issue in the mailing list. I have just started to look at this same issue yesterday for Debian: #966353 - FTBFS: guile segfaults when run to collect docs - Debian Bug report logs https://bugs.debian.org/966353 and had no idea where to start except to use gcc-9 instead, until I came upon this thread. :-) > Yep, GCC 10 "breaks" the configure check to find the stack direction. > This makes Guile believe the stack grows up, which is of course plain > wrong. I was able to workaround this issue by disabling optimizations > for the configure check, see attached diff. > > (For the technically interested: GCC 10 succeeds in rewriting a > particular tail call into jumps. This avoids stack frames from the > recursive call which the check relies on. Funnily enough, a comment > says: "If the code could be inlined, that might cause the test to give > an incorrect answer." - indeed.) Jonas, thank you so much! This is most insightful, as otherwise I wouldn't even know where to start looking! It turns out the fix was applied to Guile-2.0 in 2011, and was backported to Guile-1.8 (but not released as tarball) in 2012. Here is what I will be using for the Debian changelog: Patch Guile-1.8 to the latest branch_release-1-8 branch found in Guile git repository on Savannah, see patches 1801 to 1825. In particular, 1812-Fix-stack-growth-direction-check.patch, originally written for Autoconf by Paul Eggert for Autoconf and pulled into Guile-2.0 in 2011, fixed a build error with -O3 back then, and fixes FTBFS with gcc-10 nowadays, due to a bug in find_stack_direction() code in configure.in. See http://lists.gnu.org/archive/html/bug-autoconf/2011-06/msg00035.html for the whole story. (Closes: #966353) Relevant commits: * https://git.savannah.gnu.org/cgit/guile.git/commit/configure.ac?id=62bc107 * https://git.savannah.gnu.org/cgit/guile.git/commit/configure.ac?id=236f901 * https://git.savannah.gnu.org/cgit/autoconf.git/commit/?id=6cd9f12 Cheers, Anthony
