Re: [PATCH liburing] examples/ucontext-cp.c: cope with variable SIGSTKSZ
From: H.J. Lu <hidden>
Date: 2021-04-19 18:38:45
On Mon, Apr 19, 2021 at 7:35 AM Stefan Hajnoczi [off-list ref] wrote:
On Tue, Apr 13, 2021 at 04:03:19PM +0100, Stefan Hajnoczi wrote:quoted
The size of C arrays at file scope must be constant. The following compiler error occurs with recent upstream glibc (2.33.9000): CC ucontext-cp ucontext-cp.c:31:23: error: variably modified ‘stack_buf’ at file scope 31 | unsigned char stack_buf[SIGSTKSZ]; | ^~~~~~~~~ make[1]: *** [Makefile:26: ucontext-cp] Error 1 The following glibc commit changed SIGSTKSZ from a constant value to a variable: commit 6c57d320484988e87e446e2e60ce42816bf51d53 Author: H.J. Lu [off-list ref] Date: Mon Feb 1 11:00:38 2021 -0800 sysconf: Add _SC_MINSIGSTKSZ/_SC_SIGSTKSZ [BZ #20305] ... +# define SIGSTKSZ sysconf (_SC_SIGSTKSZ) Allocate the stack buffer explicitly to avoid declaring an array at file scope. Cc: H.J. Lu <redacted> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com> --- Perhaps the glibc change needs to be revised before releasing glibc 2.34 since it might break applications. That's up to the glibc folks. It doesn't hurt for liburing to take a safer approach that copes with the SIGSTKSZ change in any case.glibc folks, please take a look. The commit referenced above broke compilation of liburing's tests. It's possible that applications will hit similar issues. Can you check whether the SIGSTKSZ change needs to be reverted/fixed before releasing glibc 2.34?
It won't be changed for glibc 2.34. -- H.J.