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