[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: sigsegv, c-stack: Avoid compilation error with glibc >= 2.34
From: |
Paul Eggert |
Subject: |
Re: sigsegv, c-stack: Avoid compilation error with glibc >= 2.34 |
Date: |
Sun, 23 May 2021 19:40:25 -0700 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.8.1 |
On 5/23/21 5:14 AM, Bruno Haible wrote:
I agree that these handlers are _usually_ small and don't have nested
functions. But a restriction is a restriction, and should be documented
as such. Find attached a proposed patch.
Thanks, that looks good except please change "create nested functions"
to "create and then use nested functions", as it's OK to for a
stack-overflow handler to create a nested function without using it.
Should a similar restriction be documented for libsigsegv, or is that
library immune to this problem?
No, "gcc -fno-trampolines" doesn't get rid of the need to have an executable
stack. In the attached sample code gcc-closure.c, GCC 11.1 produces identical
code with "gcc -fno-trampolines" than with "gcc -ftrampolines".
Ouch, I didn't know that -fno-trampolines doesn't work for C or C++. The
GCC manual implies otherwise. I filed a GCC doc bug report here:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100735
I think we should get clarity first, regarding which
of the three approaches (static allocation, malloc, alloca) is preferrable.
I'll try to write documentation for it.
If I understand you correctly, all three approaches will work if
stack-overflow handlers don't create and use nested functions, and
alloca will work even if nested functions are used.
The main problem is: what size to allocate for the alternate stack? If I
understand recent glibc discussions correctly, the "right" size might
vary dynamically even within a thread, which makes any approach
problematic if it doesn't want to allocate an alternate stack large
enough to be future-proof. This is where I hope Florian Weimer's
proposed approach will rescue us somehow.
- sigsegv, c-stack: Avoid compilation error with glibc >= 2.34, Bruno Haible, 2021/05/16
- Re: sigsegv, c-stack: Avoid compilation error with glibc >= 2.34, Paul Eggert, 2021/05/16
- Re: sigsegv, c-stack: Avoid compilation error with glibc >= 2.34, Bruno Haible, 2021/05/18
- Re: sigsegv, c-stack: Avoid compilation error with glibc >= 2.34, Paul Eggert, 2021/05/21
- Re: sigsegv, c-stack: Avoid compilation error with glibc >= 2.34, Bruno Haible, 2021/05/22
- Re: sigsegv, c-stack: Avoid compilation error with glibc >= 2.34, Paul Eggert, 2021/05/23
- Re: sigsegv, c-stack: Avoid compilation error with glibc >= 2.34, Bruno Haible, 2021/05/23
- Re: sigsegv, c-stack: Avoid compilation error with glibc >= 2.34,
Paul Eggert <=
- Re: sigsegv, c-stack: Avoid compilation error with glibc >= 2.34, Bruno Haible, 2021/05/24
- Re: sigsegv.h interface, Bruno Haible, 2021/05/22
- Re: sigsegv.h interface, Paul Eggert, 2021/05/23