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

Reply via email to