[m-rev.] Failure to build Mercury rotd-2025-08-20 and rotd-2025-08-21
Volker Wysk
post at volker-wysk.de
Tue Aug 26 15:20:11 AEST 2025
Good morning.
I've tracked the problem to the call of compiler/mercury_compile, by mmake,
which calls gmake, which calls mercury_compile. I get an immediate crash
when calling it without any arguments:
*** Mercury runtime: caught segmentation violation ***
cause: address not mapped to object
PC at signal: 20319159 (1360bb7)
address involved: 0xcbdca60
This may have been caused by a stack overflow, due to unbounded recursion.
exiting from signal handler
Speicherzugriffsfehler (Speicherabzug geschrieben)
This happens in "make" as well as in "make install", when building the
documentation. Before that, the compiler seems to be built und installed
successfully. "mmc" doesn't crash when called.
I've done "export MERCURY_OPTIONS="--detstack-size 100000 --nondetstack-size
100000"", but this doesn't seem to be related to the problem.
Can you reproduce that? Do you need more information?
Cheers,
Volker
Am Montag, dem 25.08.2025 um 19:12 +0200 schrieb Volker Wysk:
> Am Montag, dem 25.08.2025 um 18:13 +0200 schrieb Zoltan Somogyi:
> >
> >
> > On Mon, 25 Aug 2025 17:44:12 +0200, Volker Wysk <post at volker-wysk.de>
> > wrote:
> > > PS: I've deleted and unpacked the sources again, applied the patch,
> > > called
> > > configure (where $ROTD = "mercury-srcdist-rotd-2025-08-21"):
> > >
> > > ./configure --host=i686-pc-linux-gnu \
> > > --enable-mm-grades \
> > > --disable-java-grade \
> > > --disable-csharp-grade \
> > > --prefix=/usr/local/lib/$ROTD \
> > > 2>&1 | tee /usr/local/sw/mercury/configure.log
> > >
> > > and then called:
> > >
> > > time make 2>&1| tee /usr/local/sw/mercury/make.log
> > >
> > > Cheers,
> > > V.W.
> > >
> > >
> > > Am Montag, dem 25.08.2025 um 17:38 +0200 schrieb Volker Wysk:
> > > > Hi
> > > >
> > > > I've been happy too soon. The first pass of the compiler finishes
> > > > without
> > > > problems now. But in the "make" stage of the second pass, the
> > > > compiler
> > > > crashes with "*** Mercury runtime: caught segmentation violation
> > > > ***".
> >
> > Sorry, I do not fully understand this report.
> >
> > First, what do you call the "first pass" and "second pass"?
>
> With the first pass I mean the bootstrapping of the compiler and the
> second
> one uses that to generate a faster compiler.
>
> > Second, in the file you attached, that report about a SIGSEGV in the
> > Mercury
> > runtime comes immediately after an invocation of the standard Unix
> > utility sed, NOT of the Mercury compiler. In general, if you want people
> > to understand your bug reports, don't make their jobs harder by
> > including
> > logs from a make that uses -j, because this obscures the connection
> > between error messages and the programs that generate them.
>
> Okay, I'll remember that.
>
> I've started from scratch again, without any "-j..." option. But not
> including the bootstrapping (which seemed to work). I've called the "make"
> stage like this:
>
> ulimit -s unlimited
> time make GRADE=asm_fast.gc.stseg 2>&1| tee /usr/local/sw/mercury/make.log
>
> (hope I've gotten that right).
>
> But now I've gotten lots of other errors. Do I have to do the
> bootstrapping
> (first pass) again?
>
> It's getting late here in central Europe. I'll look after it tomorrow.
>
>
> > The context of the following error messages from make suggests
> > that the SIGSEGV came from the Mercury compiler invocation that
> > now generates part of the Mercury user guide (the file called
> > doc/ug_invocation.texi). The code in the compiler that generates
> > that file does do some deep recursion, so a too-small stack size limit
> > may explain the crash. You can increase the limit, or switch to using
> > asm_fast.gc.stseg.
> >
> > By the way, my bootstrap check succeeded, so I don't think I can
> > reproduce this issue.
>
> Cheers,
> Volker
More information about the reviews
mailing list