Pádraig Brady wrote:
> > For a discussion of the predefines of SPARC, see
> > maint-tools/platforms/predefines.txt in
> > https://gitweb.git.savannah.gnu.org/gitweb/?p=gnulib/maint-tools.git
>
> Cool, so __sparc__ is always defined.
No, __sparc__ is not always defined. __sparc is always defined.
> 100% for me. Repro was in other mail with proposed patch:
>
> # cfarm202
> $ ./configure gl_cv_func_posix_spawnp_secure_exec=no --quiet
> $ make -j $(nproc)
> $ make TESTS=tests/install/basic-1.sh SUBDIRS=. check
I reproduce it. Smaller reproducer:
$ cd src
$ mkdir subdir
$ ./ginstall -s -c -m 555 dd subdir
It crashes if and only if $PATH is long enough:
$ export
PATH='/home/haible/foo:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/sbin:/usr/sbin'
$ ./ginstall -s -c -m 555 dd subdir
$ export
PATH='/home/haible/foooooooooooooooooooo:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/sbin:/usr/sbin'
$ ./ginstall -s -c -m 555 dd subdir
Segmentation fault
The total size of other environment variables is irrelevant.
So, this hints at this part of gnulib/lib/spawni.c as being the cause:
path = getenv ("PATH");
if (path == NULL)
...
len = strlen (file) + 1;
pathlen = strlen (path);
name = alloca (pathlen + len + 1);
Will continue investigating tomorrow...
Bruno