This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
On 17 Mar 2017 12:09, Mike Frysinger wrote:
> When glibc is built with -fstack-check, trying to use posix_spawn can
> lead to segfaults due to gcc internally probing stack memory too far.
> The new spawn API will allocate a minimum of 1 page, but the stack
> checking logic might probe a couple of pages. When it tries to walk
> them, everything falls apart.
>
> The gcc internal docs [1] state the default interval checking is one
> page. Which means we need two pages (the current one, and the next
> probed). No target currently defines it larger.
>
> Further, it mentions that the default minimum stack size needed to
> recover from an overflow is 4/8KiB for sjlj or 8/12KiB for others.
> But some Linux targets (like mips and ppc) go up to 16KiB (and some
> non-Linux targets go up to 24KiB).
>
> Let's create each child with a minimum of 32KiB slack space to support
> them all, and give us future breathing room.
>
> No test is added as existing ones crash. Even a simple call is
> enough to trigger the problem:
> char *argv[] = { "/bin/ls", NULL };
> posix_spawn(NULL, "/bin/ls", NULL, NULL, argv, NULL);
ignoring the style change, what do people think of the technical change
here ?
-mike
Attachment:
signature.asc
Description: Digital signature
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |