Am Dienstag, dem 20.10.2026 um 10:58 +0200 schrieb Thomas Neumann via Gcc: > Hi, > > I would like to use -fsplit-stack for some recursion heavy C++ code, but > I noticed that it currently has severe issues, which prevents practical > usage, but which are fixable: 1) currently a stack switch costs about > 167ns due to signal blocking, which is prohibitive in hot loops 2) the > stack computation for signal handlers is wrong, which leads to crashes > on machines with AVX-512 support, and 3) a signaler handler with split > stack causes a crash if the signal happens during exception unwinding. > > I have prototype fixes for all three (x86-64 only for now). By making > __morestack re-entrant safe we can avoid signal blocking, bringing stack > switch cost to about 5ns, which fixes the hot loop problem. The other > two are largely classical bug fixes. > > Before working on this more, are you actually interested in reviving > this functionality? I got the impression that the code is hardly used at > all (except for go, which uses a separate signal stack and thus avoids > some of these problems). But I think it would be useful to make it work, > as it makes recursive functions much more practical.
Only speaking for myself and I will not be able to help, but I would definitely be interested in using this in C and I think others would too. > > Thomas > > PS: I noticed that alloca/VLA with split stack is broken, too, because > the memory allocated by __morestack_allocate_stack_space is not freed > properly. I don't care about this too much, and fixing it requires > compiler changes, thus I did not try to fix it. But perhaps it should be > addressed, too. VLAs would be important for me. What about longjmp / setjmp? Martin
