Hi Ken,
On Jan 23 08:48, Ken Brown wrote:
On 1/14/2015 4:19 PM, Ken Brown wrote:
It is. There's a configure option "--ignore-absence-of-libsigsegv". But there
are more serious problems, affecting both the 32-bit and 64-bit versions. (So
even just rebuilding clisp for 32-bit Cygwin will take some work.) The problem
is that lisp.exe, which is built and used in the course of trying to build
clisp.exe, crashes with a SEGV shortly after it's started.
My reason for looking at this was that clisp is needed for building xindy, an
optional component of TeX Live. I did successfully build clisp in the 32-bit
case four years ago, but I can't any more. My guess (untested) is that this is
because the location of the heap has changed since then, and maybe the source
code makes unwarranted assumptions about memory layout.
My guess is correct. lisp.exe uses bit 31 (counting from the LSB) as a
marker during garbage collection, and this is incompatible with Cygwin's use
of high memory for the heap. I think I know how to fix this (by defining
LINUX_NOEXEC_HEAPCODES in the Cygwin build), but I haven't finished testing
it yet.
Given that by default *all* addresses used for 64 bit Cygwin processes
are beyond the 2GB border, it's kind of tricky to use bit 31 for anything.
But even then, the same code would fail on 32 bit Windows as well, if
it's running under WOW64 or a 32 bit kernel started with the /3GB flag
(or it's successor). In both cases Cygwin would happily use the
addresses beyond 0x80000000 for the heap.
So, from that I conclude that using bit 31 for any dubious reason is
inherently broken. I hope that the LINUX_NOEXEC_HEAPCODES stuff works,
and if so, it should be used for the 32 bit build as well.
I'd like to know Reini's intentions before investing any more time in this.
BTW, I am *not* qualified to take over as clisp maintainer. I've never used
clisp, and I know nothing about it other than the tiny bit I've learned from
debugging the crash I mentioned above.
Well, it seems you're now stuck with it.
<slashdot>
I, for one, welcome our new clisp overlord!
</slashdot>