Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 936119 - net-dns/nsd-4.10.0: simdzone/include/zone/export.h potentially not getting created if make(1) uses --shuffle mode
Summary: net-dns/nsd-4.10.0: simdzone/include/zone/export.h potentially not getting cr...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Joshua Kinard
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: parallel-make
  Show dependency tree
 
Reported: 2024-07-15 17:43 UTC by Toralf Förster
Modified: 2024-08-04 10:16 UTC (History)
2 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
emerge-info.txt (emerge-info.txt,18.29 KB, text/plain)
2024-07-15 17:43 UTC, Toralf Förster
Details
emerge-history.txt (emerge-history.txt,134.57 KB, text/plain)
2024-07-15 17:43 UTC, Toralf Förster
Details
environment (environment,87.03 KB, text/plain)
2024-07-15 17:43 UTC, Toralf Förster
Details
etc.clang.tar.xz (etc.clang.tar.xz,1016 bytes, application/x-xz)
2024-07-15 17:43 UTC, Toralf Förster
Details
etc.portage.tar.xz (etc.portage.tar.xz,39.16 KB, application/x-xz)
2024-07-15 17:43 UTC, Toralf Förster
Details
logs.tar.xz (logs.tar.xz,14.96 KB, application/x-xz)
2024-07-15 17:43 UTC, Toralf Förster
Details
net-dns:nsd-4.10.0:20240715-093408.log (net-dns:nsd-4.10.0:20240715-093408.log,20.30 KB, text/plain)
2024-07-15 17:44 UTC, Toralf Förster
Details
qlist-info.txt.xz (qlist-info.txt.xz,35.87 KB, application/x-xz)
2024-07-15 17:44 UTC, Toralf Förster
Details
temp.tar.xz (temp.tar.xz,21.42 KB, application/x-xz)
2024-07-15 17:44 UTC, Toralf Förster
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Toralf Förster gentoo-dev 2024-07-15 17:43:53 UTC
x86_64-pc-linux-gnu-gcc -I. -I./simdzone/include -O2 -pipe -march=native -fno-diagnostics-color -c region-allocator.c
x86_64-pc-linux-gnu-gcc -I. -I./simdzone/include -O2 -pipe -march=native -fno-diagnostics-color -c xfrd-disk.c
make -C simdzone
make[1]: Entering directory '/var/tmp/portage/net-dns/nsd-4.10.0/work/nsd-4.10.0/simdzone'
x86_64-pc-linux-gnu-gcc -MT src/fallback/parser.o -MMD -MP -MF src/fallback/parser.d -I./include -I./src -I. -O2 -pipe -march=native -fno-diagnostics-color -o src/fallback/parser.o -c ./src/fallback/parser.c
In file included from ./src/fallback/parser.c:9:
./include/zone.h:24:10: fatal error: zone/export.h: No such file or directory
   24 | #include "zone/export.h"
      |          ^~~~~~~~~~~~~~~

  -------------------------------------------------------------------

  This is an unstable amd64 chroot image at a tinderbox (==build bot)
  name: 23.0_no_multilib_systemd-20240712-235502

  UNMASKED:
  ~dev-libs/icu-75.1
  ~dev-libs/icu-layoutex-75.1
    Requested by sam
  ~dev-lang/perl-5.40.0
  ~virtual/perl-Archive-Tar-3.20.10_rc
  ~virtual/perl-CPAN-Meta-Requirements-2.143.0
  ~virtual/perl-Compress-Raw-Bzip2-2.212.0
  ~virtual/perl-DB_File-1.859.0
  ~virtual/perl-Data-Dumper-2.189.0
  ~virtual/perl-Devel-PPPort-3.720.0
  ~virtual/perl-Exporter-5.780.0
  ~virtual/perl-ExtUtils-CBuilder-0.280.240
  ~virtual/perl-ExtUtils-Manifest-1.750.0
  ~virtual/perl-File-Spec-3.900.0
  ~virtual/perl-HTTP-Tiny-0.88.0
  ~virtual/perl-IO-1.550.0
  ~virtual/perl-IO-Compress-2.212.0
  ~virtual/perl-IO-Socket-IP-0.420.0
  ~virtual/perl-IO-Zlib-1.150.0
  ~virtual/perl-Math-BigInt-2.3.2
  ~virtual/perl-Math-BigInt-FastCalc-0.501.800
  ~virtual/perl-Math-BigRat-2.3.2
  ~virtual/perl-Module-CoreList-5.202.406.90
  ~virtual/perl-Module-Metadata-1.0.38
  ~virtual/perl-Pod-Simple-3.450.0
  ~virtual/perl-Safe-2.460.0
  ~virtual/perl-Socket-2.38.0
  ~virtual/perl-Test-Harness-3.480.0
  ~virtual/perl-Test-Simple-1.302.199
  ~virtual/perl-Text-Tabs+Wrap-2024.1.0
  ~virtual/perl-Time-HiRes-1.977.700
  ~virtual/perl-Time-Local-1.350.0
  ~virtual/perl-autodie-2.370.0
  ~virtual/perl-bignum-0.670.0
  ~virtual/perl-podlators-5.10.200_rc
  ~virtual/perl-threads-2.400.0
  ~virtual/perl-threads-shared-1.690.0
  ~virtual/perl-version-0.993.0
    Requested by dilfridge and sam

  The attached etc.portage.tar.xz has all details.
  -------------------------------------------------------------------

GNUMAKEFLAGS="$GNUMAKEFLAGS --shuffle"
gcc-config -l:
 [1] x86_64-pc-linux-gnu-14 *
clang/llvm (if any):
clang version 18.1.8
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/lib/llvm/18/bin
Configuration file: /etc/clang/x86_64-pc-linux-gnu-clang.cfg
/usr/lib/llvm/18
18.1.8
Python 3.12.4
Available Ruby profiles:
  [1]   ruby31 (with Rubygems)
  [2]   ruby32 (with Rubygems)
  [3]   ruby33 (with Rubygems) *
Available Rust versions:
  [1]   rust-bin-1.79.0 *
The following VMs are available for generation-2:
1)	Eclipse Temurin JDK 17.0.11_p9 [openjdk-bin-17]
*)	Eclipse Temurin JDK 21.0.3_p9 [openjdk-bin-21]
3)	Eclipse Temurin JDK 8.412_p08 [openjdk-bin-8]
Available Java Virtual Machines:
  [1]   openjdk-bin-8 
  [2]   openjdk-bin-17 
  [3]   openjdk-bin-21  system-vm

php cli (if any):
go version go1.22.5 linux/amd64

  HEAD of ::gentoo
commit f67e1eed0bd81d732aaf91015af994a3e052e248
Author: Repository mirror & CI <repomirrorci@gentoo.org>
Date:   Mon Jul 15 09:19:12 2024 +0000

    2024-07-15 09:19:12 UTC

emerge -qpvO net-dns/nsd
[ebuild  N    ] net-dns/nsd-4.10.0  USE="default-znow ipv6 largefile lto mmap nsec3 pie radix-tree simdzone ssl systemd tfo -bind8-stats -debug -dnstap -libevent -memclean -minimal-responses -munin -packed -ratelimit -recvmmsg -year2038"
Comment 1 Toralf Förster gentoo-dev 2024-07-15 17:43:54 UTC
Created attachment 897717 [details]
emerge-info.txt
Comment 2 Toralf Förster gentoo-dev 2024-07-15 17:43:55 UTC
Created attachment 897718 [details]
emerge-history.txt
Comment 3 Toralf Förster gentoo-dev 2024-07-15 17:43:56 UTC
Created attachment 897719 [details]
environment
Comment 4 Toralf Förster gentoo-dev 2024-07-15 17:43:57 UTC
Created attachment 897720 [details]
etc.clang.tar.xz
Comment 5 Toralf Förster gentoo-dev 2024-07-15 17:43:58 UTC
Created attachment 897721 [details]
etc.portage.tar.xz
Comment 6 Toralf Förster gentoo-dev 2024-07-15 17:43:59 UTC
Created attachment 897722 [details]
logs.tar.xz
Comment 7 Toralf Förster gentoo-dev 2024-07-15 17:44:00 UTC
Created attachment 897723 [details]
net-dns:nsd-4.10.0:20240715-093408.log
Comment 8 Toralf Förster gentoo-dev 2024-07-15 17:44:01 UTC
Created attachment 897724 [details]
qlist-info.txt.xz
Comment 9 Toralf Förster gentoo-dev 2024-07-15 17:44:02 UTC
Created attachment 897725 [details]
temp.tar.xz
Comment 10 Joshua Kinard gentoo-dev 2024-07-16 15:38:23 UTC
It looks like this is being caused by the tinderbox having "GNUMAKEFLAGS" include the "--shuffle" flag to make(1), which causes it to randomize the order of prerequisites around.  That's causing the simdzone Makefile dependencies to be built out of their prescribed order, which leads to simdzone/include/zone/export.h not getting created by the Makefile before it's referenced during another portion of the build process.

Is this something the tinderbox does automatically to find weird build failure modes?  It does highlight the oddity of why is the simdzone subproject's build system seemingly doing a conditional generation of a one-line header file that might be better off just being a normal, preexisting file, but I also don't see any benefit to using --shuffle in this situation, either.

I'll lodge a bug upstream to see if simply carrying include/zone/export.h is an option they'll consider, but if we have any documentation on how the tinderbox works, it might be worth making sure that its use of --shuffle is cited as a sort of build fuzzer.  Cause it's not immediately apparent that make(1) was employing --shuffle and I was getting really confused why this particular build error was coming up, cause if simdzone's Makefile logic is processed in the normal, expected way, then it should always JustWork(TM).
Comment 11 Toralf Förster gentoo-dev 2024-07-16 17:10:00 UTC
The tinderbox intentionally use "--shuffle" since:

commit 4251952fe98d782deaa012ae7dd0827ee40d8c1f
Author: Toralf Förster <toralf.foerster@gmx.de>
Date:   Sun Aug 28 19:08:33 2022 +0200

    prepare for slyfgox make shuffle patch


In moment it is visible only in the attached emerge-info.txt. If this is not sufficient I can add it more prominent to comment0. But b/c such a request makes comment0 another 1 additional line bigger - maybe more devs might vote up for it?
Comment 12 Joshua Kinard gentoo-dev 2024-07-23 00:10:14 UTC
(In reply to Toralf Förster from comment #11)
> The tinderbox intentionally use "--shuffle" since:
> 
> commit 4251952fe98d782deaa012ae7dd0827ee40d8c1f
> Author: Toralf Förster <toralf.foerster@gmx.de>
> Date:   Sun Aug 28 19:08:33 2022 +0200
> 
>     prepare for slyfgox make shuffle patch
> 
> 
> In moment it is visible only in the attached emerge-info.txt. If this is not
> sufficient I can add it more prominent to comment0. But b/c such a request
> makes comment0 another 1 additional line bigger - maybe more devs might vote
> up for it?

Upstream has implemented a fix for this by changing the Makefile dependencies in the simdzone subproject's Makefile.in.  It'll be released as part of an upcoming nsd-4.10.1 release, so I will wait for that before pushing any changes to the tree.

As for making the actual failure mode more apparent, it might make sense to somehow flag failures that happen when --shuffle=<seed> is passed to make(1) via GNUMAKEFLAGS as an issue w/ make and parallelism, possibly even going as far as to auto-block Bug #351559 (parallel-make) on bug creation.  I think that would provide more benefit to an individual developer than a few extra lines of text output in one of the comments.  Another option to look at would be getting a "MAKE-PARALLELISM" keyword added to Bugzie, though I dunno people's thoughts on that.  Keywords feel like a really under-utilized feature of Buzilla.

It took me a good half-hour messing with the ebuild, trying different USE and FEATURE flags to reproduce the failure, and I was about to post an entirely different comment when I just happened to see the "shuffle=2635539989" bit in the error (I should've caught that first, TBH).  That sent me down another rabbit hole for a bit to figure out A) what it was (hadn't seen that flag to make before) and B) how to test it locally.  Once I got that right and reproduced the failure, then I submitted comment #10 and went on to work on an upstream bug.
Comment 13 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2024-07-23 04:38:29 UTC
(In reply to Toralf Förster from comment #11)
> The tinderbox intentionally use "--shuffle" since:
> 
> commit 4251952fe98d782deaa012ae7dd0827ee40d8c1f
> Author: Toralf Förster <toralf.foerster@gmx.de>
> Date:   Sun Aug 28 19:08:33 2022 +0200
> 
>     prepare for slyfgox make shuffle patch
> 
> 
> In moment it is visible only in the attached emerge-info.txt. If this is not
> sufficient I can add it more prominent to comment0. But b/c such a request
> makes comment0 another 1 additional line bigger - maybe more devs might vote
> up for it?

Maybe let's add a new section like "UNMASKED" for "SPECIAL CONFIG", and then in that, say "if this looks like a parallel build issue, block ..., and try use MAKEOPTS="--seed=..." if there is a seed in the emerge --info".
Comment 14 Toralf Förster gentoo-dev 2024-07-23 20:09:42 UTC
I can move this section 2 lines higher:


  The attached etc.portage.tar.xz has all details.
  -------------------------------------------------------------------

GNUMAKEFLAGS="$GNUMAKEFLAGS --shuffle"


but please note that the information ^^ is already in comment0.
Comment 15 Toralf Förster gentoo-dev 2024-07-25 18:20:36 UTC
Let see how https://github.com/toralf/tinderbox/commit/7843aad1e20c39820db8c0ab4e70351fe0e42eb7 works.
Comment 16 Larry the Git Cow gentoo-dev 2024-08-04 10:16:57 UTC
The bug has been closed via the following commit(s):

https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9bdd082a7cd14d3af5a7f0e5438e224d88e10fbb

commit 9bdd082a7cd14d3af5a7f0e5438e224d88e10fbb
Author:     Joshua Kinard <kumba@gentoo.org>
AuthorDate: 2024-08-04 10:13:04 +0000
Commit:     Joshua Kinard <kumba@gentoo.org>
CommitDate: 2024-08-04 10:15:21 +0000

    net-dns/nsd: Cleanups, add 4.10.1
    
    Clean out older ebuilds and files in FILESDIR and add
    a new ebuild for recently released 4.10.1, which includes
    fixes for parallelism in the simdzone Makefile and OpenRC
    init/conf files sent to upstream by @mjo.
    
    Closes: https://bugs.gentoo.org/936119
    Bug: https://bugs.gentoo.org/927552
    Co-authored-by: Michael Orlitzky <mjo@gentoo.org>
    Signed-off-by: Joshua Kinard <kumba@gentoo.org>

 net-dns/nsd/Manifest                               |   3 +-
 .../nsd/files/nsd-4.8.0-implausible-stats.patch    |  22 ----
 net-dns/nsd/files/nsd.initd-r1                     |  59 ----------
 net-dns/nsd/files/nsd.service                      |  14 ---
 net-dns/nsd/metadata.xml                           |   9 +-
 .../nsd/{nsd-4.10.0.ebuild => nsd-4.10.1.ebuild}   |  12 +-
 net-dns/nsd/nsd-4.8.0-r1.ebuild                    | 128 ---------------------
 net-dns/nsd/nsd-4.9.1.ebuild                       |   4 +-
 net-dns/nsd/nsd-9999.ebuild                        |  12 +-
 9 files changed, 20 insertions(+), 243 deletions(-)