• Paul Eggert's avatar
    Better heuristic for C stack overflow · a5522abb
    Paul Eggert authored
    Improve the heuristic for distinguishing stack overflows from
    other SIGSEGV causes (Bug#21004).  Corinna Vinschen explained that
    the getrlimit method wasn't portable to Cygwin; see:
    https://www.cygwin.com/ml/cygwin/2015-07/msg00092.html
    Corinna suggested pthread_getattr_np but this also has problems.
    Instead, replace the low-level system stuff with a simple
    heuristic based on known good stack addresses.
    * src/eval.c, src/lisp.h (near_C_stack_top): New function.
    * src/sysdep.c: Don't include <sys/resource.h>.
    (stack_direction): Remove.  All uses removed.
    (stack_overflow): New function.
    (handle_sigsegv): Use it instead of incorrect getrlimit heuristic.
    Make SEGV fatal in non-main threads.
    a5522abb
sysdep.c 98.7 KB