Is this related to Data Execution Prevention or perhaps some anti-virus checker? saveChild could well be copying some executable code and then returning into the copied version. The data segments are all created with execute permission but it's possible that something doesn't like this.

Regards,
David

On 17/02/2011 20:37, Rob Arthan wrote:
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.


_______________________________________________ polyml mailing list
polyml@inf.ed.ac.uk
http://lists.inf.ed.ac.uk/mailman/listinfo/polyml
_______________________________________________
polyml mailing list
polyml@inf.ed.ac.uk
http://lists.inf.ed.ac.uk/mailman/listinfo/polyml

Reply via email to