GNU bug report logs - #49367
Bootstrap binaries affected by spawni.c bug in glibc <= 2.26

Previous Next

Package: guix;

Reported by: Ludovic Courtès <ludo <at> gnu.org>

Date: Sat, 3 Jul 2021 21:27:01 UTC

Severity: important

Done: Ludovic Courtès <ludo <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Ludovic Courtès <ludo <at> gnu.org>
Subject: bug#49367: closed (Re: bug#49367: Bootstrap binaries affected by
 spawni.c bug in glibc <= 2.26)
Date: Sat, 03 Jul 2021 22:12:02 +0000
[Message part 1 (text/plain, inline)]
Your bug report

#49367: Bootstrap binaries affected by spawni.c bug in glibc <= 2.26

which was filed against the guix package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to 49367 <at> debbugs.gnu.org.

-- 
49367: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=49367
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Ludovic Courtès <ludo <at> gnu.org>
To: 49367-done <at> debbugs.gnu.org
Subject: Re: bug#49367: Bootstrap binaries affected by spawni.c bug in glibc
 <= 2.26
Date: Sun, 04 Jul 2021 00:11:05 +0200
Hi,

Ludovic Courtès <ludo <at> gnu.org> skribis:

> While building ‘findutils-boot0’ & co. for AArch64 on ci.guix, where
> some of the aarch64-linux nodes are emulated, I hit failures like this
> one a few times:
>
> starting phase `build'
> make: ../sysdeps/unix/sysv/linux/spawni.c:360: __spawnix: Assertion `ec >= 0' failed.
> qemu: uncaught target signal 6 (Aborted) - core dumped
> error: in phase 'build': uncaught exception:
> srfi-34 #<condition &invoke-error [program: "make" arguments: ("-j" "24") exit-status: #f term-signal: 6 stop-signal: #f] 149e880> 
> phase `build' failed after 0.1 seconds
> command "make" "-j" "24" failed with signal 6
> builder for `/gnu/store/rkkgavlyvf06sfdnxlfqb11bljf989y1-findutils-boot0-4.8.0.drv' failed with exit code 1

[...]

>   2. Build ‘make-boot0’ with ‘--disable-posix-spawn’.  Best solution in
>      my view.

Done in f436723ce7da2f5e752f5f4b6f0d568a7bea4403!

Note that this problem is already present in current ‘master’.  Note
also that on x86 we ‘make-boot0’ is built against glibc-mesboot0-2.16,
which is much older and isn’t affected by the ‘posix_spawn’ bug, AFAICS.

Ludo’.

[Message part 3 (message/rfc822, inline)]
From: Ludovic Courtès <ludo <at> gnu.org>
To: bug-guix <at> gnu.org
Subject: Bootstrap binaries affected by spawni.c bug in glibc <= 2.26
Date: Sat, 03 Jul 2021 23:26:37 +0200
While building ‘findutils-boot0’ & co. for AArch64 on ci.guix, where
some of the aarch64-linux nodes are emulated, I hit failures like this
one a few times:

--8<---------------cut here---------------start------------->8---
starting phase `build'
make: ../sysdeps/unix/sysv/linux/spawni.c:360: __spawnix: Assertion `ec >= 0' failed.
qemu: uncaught target signal 6 (Aborted) - core dumped
error: in phase 'build': uncaught exception:
srfi-34 #<condition &invoke-error [program: "make" arguments: ("-j" "24") exit-status: #f term-signal: 6 stop-signal: #f] 149e880> 
phase `build' failed after 0.1 seconds
command "make" "-j" "24" failed with signal 6
builder for `/gnu/store/rkkgavlyvf06sfdnxlfqb11bljf989y1-findutils-boot0-4.8.0.drv' failed with exit code 1
--8<---------------cut here---------------end--------------->8---

These are traces of a ‘posix_spawn’ bug that was present in glibc 2.26,
a race condition that would manifest primarily on qemu-binfmt builds:

  https://issues.guix.gnu.org/30394

The thread above mentioned that Bison was one of the very few
‘posix_spawn’ users, so it wasn’t much of a problem.

However, it turns out that (1) we’re using Make 4.3, which uses
‘posix_spawn’ by default, and (2) our bootstrap glibc for AArch64 is
affected:

--8<---------------cut here---------------start------------->8---
$ guix gc --references /gnu/store/rkkgavlyvf06sfdnxlfqb11bljf989y1-findutils-boot0-4.8.0.drv |grep make-boot0
/gnu/store/yir8j4h6prfmz18kyrsch2g7qng87g04-make-boot0-4.3.drv
$ ls $(guix build $(guix gc --references /gnu/store/rkkgavlyvf06sfdnxlfqb11bljf989y1-findutils-boot0-4.8.0.drv |grep glibc-bootstrap))/lib/libc-*.so
/gnu/store/js119fgv6n713c3lypjn7s4xv5bxf870-glibc-bootstrap-0/lib/libc-2.25.so
--8<---------------cut here---------------end--------------->8---

Possible solutions:

  0. Ignore the problem, “it’s almost only affects emulated builds
     anyway”.

  1. Update bootstrap glibc.  It’s late in the core-updates cycle, and
     it’s not something we do lightly anyway.

  2. Build ‘make-boot0’ with ‘--disable-posix-spawn’.  Best solution in
     my view.

Thoughts?

Ludo’.



This bug report was last modified 3 years and 317 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.