Bug 14839 - nettle 3.8 is not reproducible (executable is a sparse file)
Summary: nettle 3.8 is not reproducible (executable is a sparse file)
Status: RESOLVED WORKSFORME
Alias: None
Product: OE-Core
Classification: Build System, Metadata & Runtime
Component: core (show other bugs)
Version: unspecified
Hardware: x86 Multiple
: Medium normal
Target Milestone: 4.1
Assignee: Unassigned
QA Contact:
URL:
Whiteboard: AB-INT
Depends on:
Blocks:
 
Reported: 2022-06-16 13:45 UTC by Alexandre Belloni
Modified: 2022-09-22 14:51 UTC (History)
5 users (show)

See Also:
OS type for building Yocto: ---
Type of Regression: ---
Verified:
Documentation change: No (bug/feature does not impact docs)


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Alexandre Belloni 2022-06-16 13:45:42 UTC
This is possibly not related to nettle:

https://autobuilder.yoctoproject.org/typhoon/#/builders/117/builds/985/steps/13/logs/stdio

reproducible debian9-ty-2

https://autobuilder.yocto.io/pub/repro-fail/oe-reproducible-20220609-5bq03hze/packages/diff-html/

From Richard:

"""
In poking around the build directory which I saved, somehow
/usr/lib/nettle/ptest/testsuite/ecc-sqrt-test ends up as a sparse file
filled with zeros, which then results in the .debug version not being
created.

pokybuild@debian9-ty-2:~/yocto-worker/reproducible/build/build-st/reproducibleB/tmp/work/core2-64-poky-linux/nettle/3.8-r0/packages-split/nettle-ptest/usr/lib/nettle/ptest/testsuite$ file ecc-sqrt-test
ecc-sqrt-test: data
pokybuild@debian9-ty-2:~/yocto-worker/reproducible/build/build-st/reproducibleB/tmp/work/core2-64-poky-linux/nettle/3.8-r0/packages-split/nettle-ptest/usr/lib/nettle/ptest/testsuite$ file ecc-add-test
ecc-add-test: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-x86-64.so.2, BuildID[sha1]=2f7e2d2fc004a51e52f70ba68dcd5a805d590b3e, for GNU/Linux 3.2.0, not stripped

pokybuild@debian9-ty-2:~/yocto-worker/reproducible/build/build-st/reproducibleB/tmp/work/core2-64-poky-linux/nettle/3.8-r0$ file package/usr/lib/nettle/ptest/testsuite/ecc-sqrt-test
package/usr/lib/nettle/ptest/testsuite/ecc-sqrt-test: data
pokybuild@debian9-ty-2:~/yocto-worker/reproducible/build/build-st/reproducibleB/tmp/work/core2-64-poky-linux/nettle/3.8-r0$ file image/usr/lib/nettle/ptest/testsuite/ecc-sqrt-test
image/usr/lib/nettle/ptest/testsuite/ecc-sqrt-test: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-x86-64.so.2, BuildID[sha1]=f5dff0233b77a0bfc20554295d1e1fac6a273b9d, for GNU/Linux 3.2.0,
not stripped

pokybuild@debian9-ty-2:~/yocto-worker/reproducible/build/build-st/reproducibleB/tmp/work/core2-64-poky-linux/nettle/3.8-r0$ ls -la image/usr/lib/nettle/ptest/testsuite/ecc-sqrt-test
-rwxr-xr-x 1 pokybuild pokybuild 321216 Jun  9 02:00 image/usr/lib/nettle/ptest/testsuite/ecc-sqrt-test
pokybuild@debian9-ty-2:~/yocto-worker/reproducible/build/build-st/reproducibleB/tmp/work/core2-64-poky-linux/nettle/3.8-r0$ ls -la package/usr/lib/nettle/ptest/testsuite/ecc-sqrt-test
-rwxr-xr-x 2 pokybuild pokybuild 321216 Jun  2 17:57 package/usr/lib/nettle/ptest/testsuite/ecc-sqrt-test

pokybuild@debian9-ty-2:~/yocto-worker/reproducible/build/build-st/reproducibleB/tmp/work/core2-64-poky-linux/nettle/3.8-r0$ du -h image/usr/lib/nettle/ptest/testsuite/ecc-sqrt-test
316K    image/usr/lib/nettle/ptest/testsuite/ecc-sqrt-test
pokybuild@debian9-ty-2:~/yocto-worker/reproducible/build/build-st/reproducibleB/tmp/work/core2-64-poky-linux/nettle/3.8-r0$ du -h package/usr/lib/nettle/ptest/testsuite/ecc-sqrt-test
0	package/usr/lib/nettle/ptest/testsuite/ecc-sqrt-test

so somewhere between the file being created in image/ (in do_install)
and the file in package/ in do_package, it is corrupted but has the
right size and is sparse.

This suggests our packaging code has broken somewhere along the way.

Nothing in the pseudo log or in the do_package log. I have the saved
build directory but not sure there is anything else to learn from it
:/.
"""
Comment 1 Randy MacLeod 2022-06-16 14:46:04 UTC
Our reproducible builds will fail if this happens so this appears to be a very rare error. If someone wants to review objdump and other tools that would be interesting. One could also use inotify or lttng to monitor the file in question.
Comment 2 Alexandre Belloni 2022-09-22 14:51:36 UTC
It didn't reproduce in a while and we suspect a rare race condition in binutils