When updating GCC earlier, I saw (CMP/FILES output from iwdevtools): ``` [...] >>> Merging sys-devel/gcc-15.0.9999 to / * CMP: =sys-devel/gcc-15.0.9999 with sys-devel/gcc-15.0.9999/image * FILES:+usr/libexec/gcc/x86_64-pc-linux-gnu/*/stUcybUD * FILES:+usr/x86_64-pc-linux-gnu/gcc-bin/*/strvgEQs * ------> FILES(+2) ABI(TIMEOUT) ``` It turns out these files are corrupted temporary files from incomplete stripping. Checking over the build log, I found: ``` [...] /usr/bin/dwz: "/var/tmp/portage/sys-devel/gcc-15.0.9999/image/usr/lib/gcc/x86_64-pc-linux-gnu/15/32/crtprec64.o" is not a shared library /usr/bin/dwz: "/var/tmp/portage/sys-devel/gcc-15.0.9999/image/usr/lib/gcc/x86_64-pc-linux-gnu/15/32/crtfastmath.o" is not a shared library /usr/lib/gcc/x86_64-pc-linux-gnu/15/32/libcaf_single.a /usr/lib/gcc/x86_64-pc-linux-gnu/15/32/libgcc_eh.a /usr/lib/portage/python3.12/estrip: line 282: 741860 Segmentation fault (core dumped) ${OBJCOPY} --add-gnu-debuglink="${dst}" "${src}" x86_64-pc-linux-gnu-strip: /var/tmp/portage/sys-devel/gcc-15.0.9999/image/usr/libexec/gcc/x86_64-pc-linux-gnu/15/lto1: file format not recognized /usr/lib/portage/python3.12/estrip: line 282: 741861 Segmentation fault (core dumped) ${OBJCOPY} --add-gnu-debuglink="${dst}" "${src}" installsources: rsyncing source files [...] ``` We don't seem to do any error handling for if e.g. objcopy fails.
For completeness, although it's not really relevant here (I think there's something weird going on with this too obviously): ``` Core was generated by `x86_64-pc-linux-gnu-objcopy --add-gnu-debuglink=/var/tmp/portage/sys-devel/gcc-'. Program terminated with signal SIGSEGV, Segmentation fault. #0 0x00007f6b9eadb4c0 in fread@plt () from /usr/lib64/binutils/x86_64-pc-linux-gnu/9999/libbfd-2.42.50.20240523.gentoo-sys-devel-binutils-mt.so (gdb) bt #0 0x00007f6b9eadb4c0 in fread@plt () from /usr/lib64/binutils/x86_64-pc-linux-gnu/9999/libbfd-2.42.50.20240523.gentoo-sys-devel-binutils-mt.so #1 0x00007f6b9eaf5221 in fread (__ptr=0x7ffdbb07ba60, __size=1, __n=8192, __stream=0x55635e0cdc40) at /usr/include/bits/stdio2.h:212 #2 bfd_fill_in_gnu_debuglink_section (abfd=abfd@entry=0x55635e011540, sect=sect@entry=0x55635e02aab8, filename=0x7ffdbb07feaf "/var/tmp/portage/sys-devel/gcc-15.0.9999/image/usr/lib/debug/usr/x86_64-pc-linux-gnu/gcc-bin/15/lto-dump.debug") at /usr/src/debug/sys-devel/binutils-9999/binutils/bfd/opncls.c:1772 #3 0x000055635cef8943 in copy_object (ibfd=ibfd@entry=0x55635e0103d0, obfd=obfd@entry=0x55635e011540, input_arch=input_arch@entry=0x0) at /usr/src/debug/sys-devel/binutils-9999/binutils/binutils/objcopy.c:3515 #4 0x000055635cf07c77 in copy_file (input_filename=0x7ffdbb07ff1e "/var/tmp/portage/sys-devel/gcc-15.0.9999/image/usr/x86_64-pc-linux-gnu/gcc-bin/15/lto-dump", output_filename=0x55635e010360 "/var/tmp/portage/sys-devel/gcc-15.0.9999/image/usr/x86_64-pc-linux-gnu/gcc-bin/15/strvgEQs", ofd=3, in_stat=<optimized out>, input_target=<optimized out>, output_target=<optimized out>, input_arch=0x0) at /usr/src/debug/sys-devel/binutils-9999/binutils/binutils/objcopy.c:3990 #5 0x000055635cf0b0ca in copy_main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/sys-devel/binutils-9999/binutils/binutils/objcopy.c:6178 #6 main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/sys-devel/binutils-9999/binutils/binutils/objcopy.c:6279 (gdb) ```
There was no dwz return code check in the patch from bug 906368: https://gitweb.gentoo.org/proj/portage.git/commit/?id=749d231d57fb64d3f2e909dfbba26ca7c1ab9d0e