4
0
mirror of git://sourceware.org/git/newlib-cygwin.git synced 2025-01-16 03:19:54 +08:00
Corinna Vinschen a54bc198b1 Implement correct RLIMIT_STACK handling
* miscfuncs.cc (struct pthread_wrapper_arg): Add member guardsize.
        (pthread_wrapper): Set thread stack guarantee according to guardsize.
        Tweak assembler code so that $rax/$eax is not required by GCC to
        prepare the wrapper_arg value.
        (CygwinCreateThread): Fix deadzone handling.  Drop setting a "POSIX"
        guardpage (aka page w/ PAGE_NOACCESS).  Always use Windows guard
        pages instead.  On post-XP systems (providing SetThreadStackGuarantee)
        always set up stack Windows like with reserved/commited areas and
        movable guard pages.  Only on XP set up stack fully commited if the
        guardpage size is not the default system guardpage size.
        Fill out pthread_wrapper_arg::guardsize.  Improve comments.
        * resource.cc: Implement RSTACK_LIMIT Linux-like.
        (DEFAULT_STACKSIZE): New macro.
        (DEFAULT_STACKGUARD): Ditto.
        (rlimit_stack_guard): New muto.
        (rlimit_stack): New global variable holding current RSTACK_LIMIT values.
        (__set_rlimit_stack): Set rlimit_stack under lock.
        (__get_rlimit_stack): Initialize rlimit_stack from executable header
        and return rlimit_stack values under lock.
        (get_rlimit_stack): Filtering function to return useful default
        stacksize from rlimit_stack.rlim_cur value.
        (getrlimit): Call __get_rlimit_stack in RLIMIT_STACK case.
        (setrlimit): Call __set_rlimit_stack in RLIMIT_STACK case.
        * thread.cc (pthread::create): Fetch default stacksize calling
        get_rlimit_stack.
        (pthread_attr::pthread_attr): Fetch default guardsize calling
        wincap.def_guard_page_size.
        (pthread_attr_getstacksize): Fetch default stacksize calling
        get_rlimit_stack.
        * thread.h (PTHREAD_DEFAULT_STACKSIZE): Remove.
        (PTHREAD_DEFAULT_GUARDSIZE): Remove.
        (get_rlimit_stack): Declare.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
2015-07-05 15:51:37 +02:00

36 lines
1.1 KiB
Plaintext

What's new:
-----------
- Handle pthread stacksizes as in GLibc: Default to RLIMIT_STACK resource.
Allow to set RLIMIT_STACK via setrlimit. Default RLIMIT_STACK to value
from executable header as described on
https://msdn.microsoft.com/en-us/library/windows/desktop/ms686774.aspx
Default stacksize to 2 Megs in case RLIMIT_STACK is set to RLIM_INFINITY.
- 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,
MINSIGSTKSZ, SIGSTKSZ.
- New API: sethostname.
What changed:
-------------
Bug Fixes
---------
- Enable non-SA_RESTART behaviour on threads other than main thread.
Addresses: https://cygwin.com/ml/cygwin/2015-06/msg00260.html
- Try to handle concurrent close on socket more gracefully
Addresses: https://cygwin.com/ml/cygwin/2015-06/msg00235.html
- Fix fork failing after the parent recovered from a stack overflow.
Addresses: https://cygwin.com/ml/cygwin/2015-06/msg00384.html
- Fix a crash on 64 bit XP/2003 when opening /proc/$PID/maps.