This is the mail archive of the
mailing list for the Cygwin project.
TEST RELEASE: Cygwin 2.1.0-0.3
- From: Corinna Vinschen <corinna-cygwin at cygwin dot com>
- To: cygwin-announce at cygwin dot com
- Date: Wed, 1 Jul 2015 16:10:48 +0200
- Subject: TEST RELEASE: Cygwin 2.1.0-0.3
- Authentication-results: sourceware.org; auth=none
- Reply-to: The Cygwin Mailing List <cygwin at cygwin dot com>
Hi Cygwin friends and users,
I released a third TEST version of Cygwin. The version number is
This test release is mostly for interested *developers*.
The important news which needs some testing is the implementation of
sigaltstack(2) and the underlying implementation of running a signal
handler on the alternate signal stack.
Two changes compared to the previous test release:
- The ss_flags returned by sigaltstack were not safe against the
application longjmp'ing from the signal handler.
- An old problem which just didn't show up without sigaltstack support:
Forking after recovering from a stack overflow crashed the child
process due to the way the stack is set up in the child.
- The alternate signal stack installed via sigaltstack is only valid for
the current thread. Each thread must call its own sigaltstack. On
pthread_create, the alternate signal stack setting of the calling
thread is *not* propagated to the newly created thread. This follows
current Linux semantics.
- The alternate signal stack is a minimal stack. Certain datastructures
used by Cygwin (_cygtls area) and Windows (on 32 bit: exception
records) are not copied over to the alternate signal stack. The stack
settings in the Thread Environment Block (TEB) are not reflecting the
current alternate stack while running the signal handler. The TEB
will still point to the original thread stack. This seems to work
nicely in my testing, but there may be Windows functions which stop
working in this scenario.
- The volatile registers and the original stack registers are stored at
the base of the alternate stack. If you screw this up while running
the signal handler, your thread is doomed on return to the caller.
I'd be grateful if curious developers would give this new sigaltstack
implementation a whirl and report back if it's working for them as
desired/expected. And if not, simple reproducers in plain C are most
welcome in this case. Discussing aspects of this implementation may be
best handled on the cygwin-developers mailing list or the
#cygwin-developers IRC channel on Freenode.
All changes in this release so far:
- First cut of an implementation to allow signal handlers running on an
alternate signal stack.
- New API sigaltstack, plus definitions for SA_ONSTACK, SS_ONSTACK, SS_DISABLE,
- New API: sethostname.
- Enable non-SA_RESTART behaviour on threads other than main thread.
- Try to handle concurrent close on socket more gracefully
- Fix fork failing after the parent recovered from a stack overflow.
To install 32-bit Cygwin use https://cygwin.com/setup-x86.exe
To install 64 bit Cygwin use https://cygwin.com/setup-x86_64.exe
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Maintainer cygwin AT cygwin DOT com