Corinna Vinschen
2013-03-19 09:46:22 UTC
Hi guys,
at long last, it looks like we found the real bug which was the reason
for the random crashes.
There's a function sigdelayed, written in assembler, which is called
when a thread got a signal. Due to the way the function is called,
it turned out that it was missing two crucial features:
- It can be called with any stack alignment, but on x86_64 it's important
that the stack is always 16 byte aligned when calling functions. So
sigdelayed had to make sure to align the stack before trundling along.
- sigdelayed only saved and restored the CPU registers which are
callee-saved in the Microsoft ABI, plus the registers used for the
return value of a function. Given how sigdelayed is called, this
was insufficient. The original, interrupted function needs the CPU
in its original state when sigdelayed returns to it, so sigdelayed
has to save and restore *all* registers.
So, here we go with a new 64 bit Cygwin version 1.7.18-9. You'll
find the packages under ftp://cygwin.com/pub/cygwin/64bit/release.
Please give it a try.
Thanks,
Corinna
at long last, it looks like we found the real bug which was the reason
for the random crashes.
There's a function sigdelayed, written in assembler, which is called
when a thread got a signal. Due to the way the function is called,
it turned out that it was missing two crucial features:
- It can be called with any stack alignment, but on x86_64 it's important
that the stack is always 16 byte aligned when calling functions. So
sigdelayed had to make sure to align the stack before trundling along.
- sigdelayed only saved and restored the CPU registers which are
callee-saved in the Microsoft ABI, plus the registers used for the
return value of a function. Given how sigdelayed is called, this
was insufficient. The original, interrupted function needs the CPU
in its original state when sigdelayed returns to it, so sigdelayed
has to save and restore *all* registers.
So, here we go with a new 64 bit Cygwin version 1.7.18-9. You'll
find the packages under ftp://cygwin.com/pub/cygwin/64bit/release.
Please give it a try.
Thanks,
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Maintainer cygwin AT cygwin DOT com
Red Hat
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Maintainer cygwin AT cygwin DOT com
Red Hat