Hello, I have been troubleshooting this error for a while now, and I have collected some further information.
Here is a summary of some of the information I have collected: - I have determined that this error does not require FreeBSD to reproduce, and is actually also reproducible under certain controlled conditions on multiple operating systems that are not FreeBSD, including but not limited to GNU/Linux - Indeed, in certain real-world situations, it's possible to encounter this error without using FreeBSD at any point, indicating that this error is affecting more environments generally than just FreeBSD alone (I first experienced this error in a non-FreeBSD environment, and since I found this report of the same error on FreeBSD when looking for my issue in the Guile mailing list, I am commenting on the same issue rather than opening a separate issue, since I believe that the issue affects multiple operating systems and I believe I am experiencing the same issue on a different operating system) - However, just compiling Guile 3.0.10 on any normal 32-bit GNU/Linux installation is not sufficient to consistently reproduce the error - To reproduce the error consistently on GNU/Linux, it is necessary to perform a contrived and obscure series of setup steps and build settings that could be described as "cross-compiling Guile 3.0.10 from 64-bit x86 GNU/Linux to 32-bit x86 GNU/Linux" - Due to the inherent difficulty, danger and unreliability of modifying one's preexisting GNU/Linux installation to be capable of consistently reproducing the error, I have carefully written a Dockerfile for 64-bit x86 Linux PCs that have Docker installed, which can consistently reproduce the same exact error described in this issue if it is placed in an empty folder and the command 'docker build .' is used in that folder on any 64-bit x86 Linux PC that has Docker installed. - In the process of troubleshooting this issue, I have also confirmed that, as implied by the original report, Guile 3.0.9 was not affected by the issue, and I have bisected the exact commit which introduced the error to this commit which was created in between the release of Guile 3.0.9 and the release of Guile 3.0.10: https://cgit.git.savannah.gnu.org/cgit/guile.git/commit/?id=d579848cb5d65440af5afd9c8968628665554c22 - I have also confirmed that using the source code of Guile 3.0.10, but locally reverting that commit in it via the command 'patch -p1 -R < d579848c.patch' or an equivalent way of reverting individual commits does work to work around the error and prevent it from occurring successfully in all of the situations where I know the issue to be reproducible, including within the Dockerfile I am providing below, and because of that, even though I don't personally use FreeBSD, I assume that users of 32-bit FreeBSD wanting to build Guile 3.0.10 would be able to as well, if desired, by locally reverting that commit. - However, despite it being possible to reproduce the error on GNU/Linux under certain conditions, I have already tested every single relevant patch for Guile 3.0.10 that I found in Debian sid's current guile 3.0.10 package, here, https://sources.debian.org/src/guile-3.0/3.0.10%2Breally3.0.10-6/debian/patches , and I have determined that none of the currently-available Debian patches for Guile located there are capable of preventing this error from occurring under its reproduction conditions. The only patch I have personally been able to find or create so far that is capable of completely preventing the error is reverting Guile upstream commit d579848cb5d65440af5afd9c8968628665554c22. Here is the Dockerfile I have created to help to document and provide a consistent reproduction environment for this issue to users of 64-bit x86 GNU/Linux who have Docker installed, but who might not have 32-bit FreeBSD or other affected alternative operating systems conveniently available to them: ``` FROM --platform=linux/amd64 debian:trixie ADD https://mirrors.kernel.org/gnu/guile/guile-3.0.10.tar.gz /tmp/guile.tar.gz ADD https://cgit.git.savannah.gnu.org/cgit/guile.git/patch/?id=d579848cb5d65440af5afd9c8968628665554c22 /tmp/d579848c.patch WORKDIR /root ENV CFLAGS=-m32 ENV PKG_CONFIG_PATH=/usr/lib/i386-linux-gnu/pkgconfig RUN dpkg --add-architecture i386 RUN apt update RUN apt install -y build-essential \ gcc-multilib \ pkg-config \ libffi-dev:i386 \ libgc-dev:i386 \ libgmp-dev:i386 \ libreadline-dev:i386 \ libncurses-dev:i386 \ libunistring-dev:i386 RUN tar xf /tmp/guile.tar.gz --strip-components=1 # before d579848c, this worked, and it still works if that commit is reverted RUN patch -p1 -R < /tmp/d579848c.patch RUN ./configure --host=i386-linux-gnu # successful RUN make RUN make distclean # if d579848c is reapplied and another build performed, it will fail! RUN patch -p1 < /tmp/d579848c.patch RUN ./configure --host=i386-linux-gnu # build will fail here! RUN make ```
