Subject: Re: bug#74805: 30.0.92; Trying to build scratch/igc on Cygwin

From: Pip Cet <[email-masked]>
Date: Wed, 11 Dec 2024 23:47:31 +0000

"Ken Brown" <[email-masked]> writes:

> I've made a first attempt to port mps to Cygwin.  If anyone else is
> interested in seeing this or helping, you can find my work at
>
>    https://github.com/kbrow1i/mps-cygwin
>
> This is a fork of the mps git repo with two commits on top.
>
> With the current attempt, I can build the scratch/igc branch, but there
> are many test failures.  For example, when I run the process-tests, I

But the Emacs binary "works", to some extent? Is there anything in the
process-tests.log file which hints at what kind of problem it might be?

Does it work interactively, or crash right away?

> get 19 failures and 8 skipped tests.  But on the master branch I get no
> failures and only 3 skipped.

That sounds like a "minor" GC problem; a word size mismatch or alignment
problem would probably lead to a hard crash, so it's more likely to be a
problem in scanning the stack.

I'm a bit confused about the role of prmccyi6.c; it's included in the
cyi6gc.mk fragment, but it's not included by mps.c directly. How are you
building MPS?

I see that you have defined (in prmccyi6.c)

Addr MutatorContextSP(MutatorContext context)
{
  AVERT(MutatorContext, context);
  return (Addr)context->ucontext->uc_mcontext.rsp;   /* .sp */
}

using the MutatorContextStruct from prmcix.h, which uses an ucontext.
However, you also include prmcw3.c, which uses a different definition of
MutatorContextStruct. I don't think those two are compatible, so it's
possible that's the problem, depending on how you build mps.

> This probably means that my current attempt to port mps is no good, and
> I have to go back to the drawing board.  Before I do that, however, I'd
> like to check and see if test failures on scratch/igc are to be
> expected.  Are people testing other platforms seeing this too?

I see a few test failures on Windows, but nothing as catastrophic as
what you describe.

Do you have a usable debugger/gdb on your platform? That would
be one approach to diagnosing crashes (if the problem is indeed that
Emacs crashes).  Another approach would be to run the test suite
included in MPS.

Pip