Eric Blake wrote:
> I can open a defect against POSIX if we decide that is needed, but want
> some consensus first on whether it is glibc's change that went too far,
> or POSIX's requirements that are too restrictive for what glibc wants to do.
Thanks for opening the discussion, Eric.
Here are a couple of questions, to understand the motivation and the possible
alternative solutions to the problem:
1) As far as I understand, the issue occurs with certain x86 or x86_64
processors.
1.1) What has been the value of MINSIGSTKSZ on x86 and x86_64 so far?
1.2) What value of MINSIGSTKSZ is needed for AVX-512F support?
1.3) Will the trend to larger MINSIGSTKSZ values continue for Intel
processors?
2) Regarding the change of the macro MINSIGSTKSZ:
Would it possible to just change the value of MINSIGSTKSZ to a larger
constant?
If there is a fear regarding ABI compatibility between a library and a
program: How likely is it that a library offers an interface that takes
a char[MINSIGSTKSZ] as argument, or that defines a variable of type
char[MINSIGSTKSZ]?
3) Regarding the change of the macro SIGSTKSZ:
Likewise, would it be possible to just change the value of SIGSTKSZ to a
larger constant?
4) Since SIGSTKSZ has other uses than MINSIGSTKSZ, has it been considered
to make MINSIGSTKSZ non-constant but keep SIGSTKSZ constant?
5) POSIX:2018 [1] defines SIGSTKSZ as the stack size for "the usual case".
So, it should be composed of MINSIGSTKSZ for the initial stack frame,
plus a certain amount of stack, depending on CPU, ABI, and compiler,
for doing what a "usual" signal handler would do.
What is the reason, then, for the computation
SIGSTKSZ >= 4 * MINSIGSTKSZ
in [2]? Shouldn't it be something like
SIGSTKSZ >= MINSIGSTKSZ + (64 KB on SPARC and powerpc, 8 KB on other
processors)
?
Bruno
[1] https://pubs.opengroup.org/onlinepubs/9699919799/functions/sigaltstack.html
[2]
https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/sysconf-sigstksz.h