Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 932749 - estrip: missing error handling
Summary: estrip: missing error handling
Status: CONFIRMED
Alias: None
Product: Portage Development
Classification: Unclassified
Component: Core (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Portage team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-05-25 19:31 UTC by Sam James
Modified: 2024-06-02 18:24 UTC (History)
1 user (show)

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


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Sam James archtester Gentoo Infrastructure gentoo-dev Security 2024-05-25 19:31:44 UTC
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.
Comment 1 Sam James archtester Gentoo Infrastructure gentoo-dev Security 2024-05-25 19:32:35 UTC
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)
```
Comment 2 Zac Medico gentoo-dev 2024-06-02 18:24:37 UTC
There was no dwz return code check in the patch from bug 906368:

https://gitweb.gentoo.org/proj/portage.git/commit/?id=749d231d57fb64d3f2e909dfbba26ca7c1ab9d0e