On 3/30/2019 5:03 PM, David Matthews wrote:
On 30/03/2019 01:07, Eliot Moss wrote:
The failure I get with -j4 is a SIGSEGV and ti comes pretty early.
I wonder if it has something to do with page mapping or GC? It
only happens when multiple polyml instances are requested at the
same time, I believe. Michael Norrish suspects fork/exec, but
I suspect page mapping -- but I don't know enough about how the
system is constructed ...
The problem with Cygwin is that it adds an extra layer between the application and the operating
system that makes it very difficult to be sure what exactly is happening. It's not at all clear
what Windows calls are being made as a result of calling a "Unix" library function. Some calls, and
mmap is among them, have fairly clear Windows equivalents. It's unlikely to be a problem there.
fork is notorious because there is no direct equivalent in Windows. The nearest is CreateProcess
which combines both fork and exec. Poly/ML uses CreateProcess in native Windows but Unix.execute is
implemented using fork and exec.
It seems odd that there is a problem with multiple Poly/ML processes since I would expect them to be
independent. Are the processes created in a poly executable or is there a top level Makefile? Have
you tried building with --disable-shared ? Shared libraries complicate fork in Cygwin so it may be
worth trying building with a static library.
Following up:
I just built from master with --disable-shared. polyml builds fine in that
setup
under Cygwin, so the build problem is fixed. The failure with signal 11 when
doing
Holmake is still there, even if I build Hol4 again.
Any ideas on what to test next?
Regards - Eliot
_______________________________________________
polyml mailing list
polyml@inf.ed.ac.uk
http://lists.inf.ed.ac.uk/mailman/listinfo/polyml