Bug 14839

Summary: nettle 3.8 is not reproducible (executable is a sparse file)
Product: [Build System, Metadata & Runtime] OE-Core Reporter: Alexandre Belloni <alexandre.belloni>
Component: coreAssignee: Unassigned <unassigned>
Status: RESOLVED WORKSFORME QA Contact:
Severity: normal    
Priority: Medium CC: alexandre.belloni, meta.mr.watcher, meta.watcher, randy.macleod, sundeep.kokkonda
Version: unspecified   
Target Milestone: 4.1   
Hardware: x86   
OS: Multiple   
Whiteboard: AB-INT
OS type for building Yocto: --- Type of Regression: ---
Verified: Documentation change: No (bug/feature does not impact docs)

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