This is a report on an elusive problem with Poly/ML on Cygwin on Vista that may be of use to others (and perhaps someone else can pin the problem down more closely or suggest a better solution?).
An executable pp-ml.exe written in Poly/ML using PolyML.export and gcc on Cygwin on Vista sometimes fails with a segmentation fault and a stack dump like this:
Exception: STATUS_ACCESS_VIOLATION at eip=610E384A eax=1A75CE64 ebx=01186388 ecx=75F9A620 edx=77715CA4 esi=011863E0 edi=1AD5CE64 ebp=1AD5CD98 esp=1AD5CD60 program=C:\cygwin\home\rda\bld\pp\OpenProofPower-2.9.1w2\src\pp-ml.exe, pid 2968, thread unknown (0x218) cs=001B ds=0023 es=0023 fs=003B gs=0000 ss=0023 Stack trace: Frame Function Args 1AD5CD98 610E384A (01186388, 1AD5CDD4, 610E3810, 01186388) End of stack trace
The failure is probably happening in a call of PolyML.SaveState.saveChild and seems to be highly erratic: pp-ml job is just to load a state, compile a file of ML source and then save the resulting state; it has already been used to do that scores of times before it failed. It has not been known to fail on Windows XP. It appears to be happening because gcc creates binaries that are not flagged as "Terminal Server Aware". The following command fixes the problem:
peflags --tsaware=true pp-ml.exe
There may be gcc options to set the flag, but I couldn't find them.
Regards,
Rob.