Bug 1520805 - kexec-tools build Segmentation fault
Summary: kexec-tools build Segmentation fault
Alias: None
Product: Fedora
Classification: Fedora
Component: binutils
Version: 28
Hardware: Unspecified
OS: Unspecified
Target Milestone: ---
Assignee: Nick Clifton
QA Contact: Fedora Extras Quality Assurance
Depends On:
TreeView+ depends on / blocked
Reported: 2017-12-05 08:06 UTC by Dave Young
Modified: 2018-03-13 23:17 UTC (History)
6 users (show)

Fixed In Version: binutils-2.29-9.fc27 binutils-2.29.1-8.fc28 binutils-2.29-13.fc27
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Last Closed: 2018-03-13 23:17:55 UTC
Type: Bug

Attachments (Terms of Use)
purgatory.ro.sym (126.16 KB, application/octet-stream)
2017-12-05 08:43 UTC, Florian Weimer
no flags Details

Description Dave Young 2017-12-05 08:06:00 UTC
Description of problem:

with below CFLAGS, kexec-tools can not build:

segfault happened while strip the purgatory:

gcc -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches  -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fno-strict-aliasing -Wall -Wstrict-prototypes -fno-zero-initialized-in-bss -mcmodel=large -Os -fno-builtin -ffreestanding -fno-zero-initialized-in-bss -fno-PIC -fno-PIE -fno-stack-protector -mcmodel=large -Wl,--no-undefined -nostartfiles -nostdlib -nodefaultlibs -e purgatory_start -r -Wl,-Map=purgatory/purgatory.map -o purgatory/purgatory.ro.sym purgatory/purgatory.o purgatory/printf.o purgatory/string.o purgatory/arch/x86_64/entry64-32.o purgatory/arch/x86_64/entry64.o purgatory/arch/x86_64/setup-x86_64.o purgatory/arch/x86_64/stack.o purgatory/arch/x86_64/purgatory-x86_64.o purgatory/arch/i386/entry32-16.o purgatory/arch/i386/entry32-16-debug.o purgatory/arch/i386/crashdump_backup.o purgatory/arch/i386/console-x86.o purgatory/arch/i386/vga.o purgatory/arch/i386/pic.o purgatory/sha256.o
strip --strip-debug -o purgatory/purgatory.ro purgatory/purgatory.ro.sym
make: *** [purgatory/Makefile:69: purgatory/purgatory.ro] Segmentation fault (core dumped)

koji build link:

Version-Release number of selected component (if applicable):

How reproducible:

Steps to Reproduce:

Actual results:

Expected results:

Additional info:

Comment 1 Dave Young 2017-12-05 08:07:32 UTC
For any info about kexec-tools please let me know..

Comment 2 Florian Weimer 2017-12-05 08:42:50 UTC

(gdb) r
Starting program: /usr/bin/strip --strip-debug -o foo purgatory.ro.sym
Missing separate debuginfos, use: dnf debuginfo-install glibc-2.26.9000-28.fc28.x86_64

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff7ae3b36 in bfd_elf64_write_relocs (abfd=0x5555557960e0, 
    sec=0x555555797c50, data=0x7fffffffe2b4) at elfcode.h:962
962	      src_rela.r_info = ELF_R_INFO (n, ptr->howto->type);
(gdb) bt full
#0  0x00007ffff7ae3b36 in bfd_elf64_write_relocs (abfd=0x5555557960e0, 
    sec=0x555555797c50, data=0x7fffffffe2b4) at elfcode.h:962
        src_rela = {r_offset = 220, r_info = 4294967297, r_addend = 0}
        ptr = 0x555555794f28
        sym = 0x55555579b550
        n = <optimized out>
        failedp = 0x7fffffffe2b4
        rela_hdr = <optimized out>
        extsize = 24
        dst_rela = 0x5555557aa2c8 ""
        last_sym_idx = 1
        addr_offset = 0
        swap_out = 0x7ffff7ae2760 <bfd_elf64_swap_reloca_out>
        idx = 1
        last_sym = 0x55555579b550
        sec = 0x555555797c50
        data = 0x7fffffffe2b4
        abfd = 0x5555557960e0
        failedp = 0x7fffffffe2b4
#1  0x00007ffff7acf28c in bfd_map_over_sections (
    operation=0x7ffff7ae39d0 <bfd_elf64_write_relocs>, 
    user_storage=user_storage@entry=0x7fffffffe2b4) at section.c:1398
        sect = 0x555555797c50
        i = 8
        __PRETTY_FUNCTION__ = "bfd_map_over_sections"
#2  0x00007ffff7aeef7d in _bfd_elf_write_object_contents (
    abfd=0x5555557960e0) at elf.c:6308
        bed = 0x7ffff7dcf900 <elf64_bed>
        i_shdrp = 0x555555799690
        failed = 0
        count = <optimized out>
        num_sec = <optimized out>
        t = <optimized out>
#3  0x00007ffff7acc65a in bfd_close (abfd=0x5555557960e0) at opncls.c:731
No locals.
#4  0x0000555555561b06 in copy_file (
    input_filename=0x7fffffffe80b "purgatory.ro.sym", 
    output_filename=0x7fffffffe807 "foo", input_target=<optimized out>, 
    output_target=<optimized out>, input_arch=0x0) at objcopy.c:3366
        obfd = 0x5555557960e0
        ibfd = 0x55555578f210
        obj_matching = 0x0
        core_matching = 0x15323294
        size = <optimized out>
#5  0x000055555555ba56 in strip_main (argv=<optimized out>, 
    argc=<optimized out>) at objcopy.c:4284
        hold_status = 0
        statbuf = {st_dev = 140737354132056, st_ino = 0, st_nlink = 0, 
          st_mode = 0, st_uid = 0, st_gid = 4294967295, __pad0 = 0, 
          st_rdev = 0, st_size = 140737354113640, 
          st_blksize = 140737354131152, st_blocks = 0, st_atim = {
            tv_sec = 0, tv_nsec = 0}, st_mtim = {tv_sec = 0, 
            tv_nsec = 0}, st_ctim = {tv_sec = 0, tv_nsec = 0}, 
          __glibc_reserved = {15774463, 194, 140737488348294}}
        tmpname = 0x7fffffffe807 "foo"
        input_target = 0x0
        output_target = 0x0
        show_version = <optimized out>
        c = <optimized out>
        i = <optimized out>
        formats_info = <optimized out>
        output_file = 0x7fffffffe807 "foo"
#6  main (argc=<optimized out>, argv=<optimized out>) at objcopy.c:5391
No locals.

Comment 3 Florian Weimer 2017-12-05 08:43:50 UTC
Created attachment 1363064 [details]

ELF file reproducing the crash

Comment 4 Florian Weimer 2017-12-05 08:45:25 UTC
A segmentation fault in strip is a binutils bug, first and foremost.

Comment 5 Dave Young 2017-12-07 02:51:08 UTC
Nick, can you please have a look?

Comment 6 Nick Clifton 2017-12-07 14:35:05 UTC
Hi Dave,

> Nick, can you please have a look?

Looking at it now.  It is a generic bug - ie it also exists in the current FSF

I think that the problem is connected with strip removing the relocs for the 
notes generated by the annobin plugin.  But I am not sure, yet, why it is


Comment 7 Nick Clifton 2017-12-07 15:12:42 UTC
Hi Dave,

  The bug is in the note merging code in the strip/objcopy sources.  I am
  working on a fix, but in the meantime you can workaround the problem by
  adding the --no-merge-notes option to the strip command line.  IE:

  strip --strip-debug --no-merge-notes -o purgatory/purgatory.ro purgatory/purgatory.ro.sym


Comment 8 Dave Young 2017-12-08 01:00:31 UTC

Great, will go with the workaround now, thanks!


Comment 9 Nick Clifton 2017-12-08 10:12:51 UTC
    Hi Dave,

      Right - I have found the problem.  It was actually the reloc stripping code in objcopy/strip that was the problem.  I have created a patch and applied it to the FSF sources and rawhide/F27.  So please try either of these, and let me know if you have any further problems:



Comment 10 Dave Young 2017-12-20 07:02:36 UTC
Hi Nick,

binutils-2.29.1-9.fc28 works for me, but seems 2.29.1-7 does not work.


Comment 11 Nick Clifton 2017-12-20 08:24:44 UTC
Hi Dave,

  Ah yes - a snafu on my end - I updated the release number for the rawhide
  rpm but failed to actually check in the patch that fixes the problem.  Doh.

  It should now be really fixed in 2.29.1-8...


Comment 12 Fedora End Of Life 2018-02-20 15:32:09 UTC
This bug appears to have been reported against 'rawhide' during the Fedora 28 development cycle.
Changing version to '28'.

Comment 13 Fedora Update System 2018-03-08 14:21:05 UTC
binutils-2.29-13.fc27 has been submitted as an update to Fedora 27. https://bodhi.fedoraproject.org/updates/FEDORA-2018-1e994c659e

Comment 14 Fedora Update System 2018-03-08 16:24:28 UTC
binutils-2.29-13.fc27 has been pushed to the Fedora 27 testing repository. If problems still persist, please make note of it in this bug report.
See https://fedoraproject.org/wiki/QA:Updates_Testing for
instructions on how to install test updates.
You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2018-1e994c659e

Comment 15 Fedora Update System 2018-03-13 23:17:55 UTC
binutils-2.29-13.fc27 has been pushed to the Fedora 27 stable repository. If problems still persist, please make note of it in this bug report.

Note You need to log in before you can comment on or make changes to this bug.