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
```



  • bug#79595: guil... Robert Clausecker
    • bug#79595:... Robert Kirkman
      • bug#79... Bug reports for GUILE, GNU's Ubiquitous Extension Language
        • bu... Bug reports for GUILE, GNU's Ubiquitous Extension Language

Reply via email to