bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug binutils/24955] New: libbfd terminating program on out of memory


From: amodra at gmail dot com
Subject: [Bug binutils/24955] New: libbfd terminating program on out of memory
Date: Mon, 02 Sep 2019 02:44:52 +0000

https://sourceware.org/bugzilla/show_bug.cgi?id=24955

            Bug ID: 24955
           Summary: libbfd terminating program on out of memory
           Product: binutils
           Version: 2.33 (HEAD)
            Status: NEW
          Severity: normal
          Priority: P2
         Component: binutils
          Assignee: unassigned at sourceware dot org
          Reporter: amodra at gmail dot com
  Target Milestone: ---

We used to have a policy that libbfd not terminate an app on error conditions
but I see rather a lot of calls to xstrdup and xmalloc.

Did the policy change?  My opinion FWIW is that it's fine for libbfd to
terminate on OOM for functions only called from ld, but rude to terminate on
anything else, particularly on opncls.c functions.  For example, you might be
upset if your gdb session terminated due to attempting to load new symbols.

$ find bfd -name \*.[ch] | xargs egrep 'x(strdup|malloc)'
bfd/elf32-arm.c:  sympp = (asymbol **) xmalloc (symsize);
bfd/elf32-arm.c:      xmalloc (sizeof (arm_unwind_table_edit));
bfd/elf32-tic6x.c:      xmalloc (sizeof (tic6x_unwind_table_edit));
bfd/vms-lib.c:  res->filename = xstrdup (name);
bfd/arc-got.h:  entry = (struct got_entry *) xmalloc (sizeof (struct
got_entry));
bfd/elf32-m68hc1x.c:          buf = xmalloc (strlen (msg) + strlen (name) +
10);
bfd/elf32-m68hc1x.c:              buf = xmalloc (strlen (msg) + 128);
bfd/elf32-m68hc1x.c:          buf = xmalloc (strlen (msg) + 128);
bfd/elf32-m68hc1x.c:          buf = xmalloc (strlen (msg) + 128);
bfd/elf32-m68hc1x.c:              buf = xmalloc (strlen (msg) + 128);
bfd/archive.c:      n_bfd->filename = xstrdup (filename);
bfd/pef.c:        unsigned char *buf = xmalloc (symbol->udata.i);
bfd/som.c:  char *tmp_space = xmalloc (tmp_space_size);
bfd/som.c:  char *tmp_space = xmalloc (tmp_space_size);
bfd/elflink.c:  sympp = (asymbol **) xmalloc (symsize);
bfd/opncls.c:  nbfd->filename = xstrdup (filename);
bfd/opncls.c:  nbfd->filename = xstrdup (filename);
bfd/opncls.c:  nbfd->filename = xstrdup (filename);
bfd/opncls.c:  nbfd->filename = xstrdup (filename);
bfd/opncls.c:  nbfd->filename = xstrdup (filename);
bfd/peXXigen.c:  buffer = xmalloc (size);
bfd/elfcode.h:  nbfd->filename = xstrdup ("<in-memory>");
bfd/pei-x86_64.c:  xdata_arr = (bfd_vma *) xmalloc (sizeof (bfd_vma) * ((stop /
onaline) + 1));
bfd/pei-x86_64.c:      char *xdata_name = xmalloc (len + 1);
bfd/mach-o.c:      abfd->filename = xstrdup (ap->printable_name);
bfd/mach-o.c:      char *name = xmalloc (namelen);
bfd/plugin.c:  plugin_list_iter = (struct plugin_list_entry *) xmalloc (sizeof
*plugin_list_iter);
bfd/syms.c:|         symbol_table = xmalloc (storage_needed);
bfd/elf32-nds32.c:  char *tmp = xmalloc (size);
bfd/elfxx-riscv.c:      char *subset = xstrdup (p);
bfd/elfxx-riscv.c:  riscv_subset_t *s = xmalloc (sizeof *s);
bfd/elfxx-riscv.c:  s->name = xstrdup (subset);
bfd/elfxx-riscv.c:  char *attr_str = xmalloc (arch_str_len);
bfd/elfxx-riscv.c:  char *buf = xmalloc (arch_str_len);
bfd/elf64-ppc.c:             calls xmalloc, which might cause the program to
crash

-- 
You are receiving this mail because:
You are on the CC list for the bug.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]