gcc/libbacktrace
Ian Lance Taylor 40b8d3b253 [libbacktrace] Fix memory leak in loop in build_address_map
When failing in build_address_map, we free the unit that's currently being
handled in the loop, but the ones that already have been allocated are leaked.

Fix this by keeping track of allocated units in a vector, and releasing them
upon failure.

Also, now that we have a vector of allocated units, move the freeing upon
failure of the abbrevs associated with each unit to build_address_map, and
remove the now redundant call to free_unit_addrs_vector.

Bootstrapped and reg-tested on x86_64.

2018-12-28  Ian Lance Taylor  <iant@golang.org>
	    Tom de Vries  <tdevries@suse.de>

	PR libbacktrace/88063
	* dwarf.c (free_unit_addrs_vector): Remove.
	(build_address_map): Keep track of allocated units in vector.  Free
	allocated units and corresponding abbrevs upon failure.  Remove now
	redundant call to free_unit_addrs_vector.  Free addrs vector upon
	failure.  Free allocated unit vector.

Co-Authored-By: Tom de Vries <tdevries@suse.de>

From-SVN: r267443
2018-12-28 03:43:26 +00:00
..
ChangeLog [libbacktrace] Fix memory leak in loop in build_address_map 2018-12-28 03:43:26 +00:00
ChangeLog.jit Merger of dmalcolm/jit branch from git 2014-11-11 21:55:52 +00:00
Makefile.am [libbacktrace] Add allocfail.sh test-case 2018-12-12 13:50:51 +00:00
Makefile.in [libbacktrace] Add allocfail.sh test-case 2018-12-12 13:50:51 +00:00
README
aclocal.m4 Update GCC to autoconf 2.69, automake 1.15.1 (PR bootstrap/82856). 2018-10-31 17:03:16 +00:00
alloc.c [libbacktrace] Avoid realloc with size == 0 in backtrace_vector_release 2018-11-27 08:25:52 +00:00
allocfail.c [libbacktrace] Add allocfail.sh test-case 2018-12-12 13:50:51 +00:00
allocfail.sh [testsuite] Remove bashism from libbacktrace/allocfail.sh 2018-12-14 09:43:41 +00:00
atomic.c Update copyright years. 2018-01-03 11:03:58 +01:00
backtrace-supported.h.in Update copyright years. 2018-01-03 11:03:58 +01:00
backtrace.c backtrace.c: Revert last two changes. 2018-04-17 17:58:05 +00:00
backtrace.h re PR libbacktrace/87529 (libbacktrace API forces users to have memory leaks) 2018-10-05 14:09:07 +00:00
btest.c elf.c (elf_add): Close descriptor if we use a debugfile. 2018-01-31 23:23:21 +00:00
config.h.in Update GCC to autoconf 2.69, automake 1.15.1 (PR bootstrap/82856). 2018-10-31 17:03:16 +00:00
configure Update GCC to autoconf 2.69, automake 1.15.1 (PR bootstrap/82856). 2018-10-31 17:03:16 +00:00
configure.ac Update GCC to autoconf 2.69, automake 1.15.1 (PR bootstrap/82856). 2018-10-31 17:03:16 +00:00
dwarf.c [libbacktrace] Fix memory leak in loop in build_address_map 2018-12-28 03:43:26 +00:00
edtest.c Update copyright years. 2018-01-03 11:03:58 +01:00
edtest2.c Update copyright years. 2018-01-03 11:03:58 +01:00
elf.c re PR other/86198 (Libbacktrace does not properly work with ".note.gnu.build-id" section) 2018-06-21 08:42:53 +03:00
fileline.c Update copyright years. 2018-01-03 11:03:58 +01:00
filetype.awk configure.ac: Check for XCOFF32/XCOFF64. 2017-07-26 21:43:28 +00:00
instrumented_alloc.c [libbacktrace] Add allocfail.sh test-case 2018-12-12 13:50:51 +00:00
internal.h [libbacktrace] Factor out backtrace_vector_free 2018-11-30 08:43:50 +00:00
mmap.c [libbacktrace] Don't point to released memory in backtrace_vector_release 2018-11-27 08:26:04 +00:00
mmapio.c Update copyright years. 2018-01-03 11:03:58 +01:00
nounwind.c Update copyright years. 2018-01-03 11:03:58 +01:00
pecoff.c * pecoff.c (coff_add): Only release syms_view if it is valid. 2018-01-25 15:38:41 +00:00
posix.c Update copyright years. 2018-01-03 11:03:58 +01:00
print.c Update copyright years. 2018-01-03 11:03:58 +01:00
read.c Update copyright years. 2018-01-03 11:03:58 +01:00
simple.c Update copyright years. 2018-01-03 11:03:58 +01:00
sort.c Update copyright years. 2018-01-03 11:03:58 +01:00
state.c Update copyright years. 2018-01-03 11:03:58 +01:00
stest.c Update copyright years. 2018-01-03 11:03:58 +01:00
test_format.c [libbacktrace] Add tests for unused formats 2018-11-30 15:33:23 +00:00
testlib.c Update copyright years. 2018-01-03 11:03:58 +01:00
testlib.h Update copyright years. 2018-01-03 11:03:58 +01:00
ttest.c Update copyright years. 2018-01-03 11:03:58 +01:00
unittest.c [libbacktrace] Don't point to released memory in backtrace_vector_release 2018-11-27 08:26:04 +00:00
unknown.c Update copyright years. 2018-01-03 11:03:58 +01:00
xcoff.c xcoff.c (struct xcoff_line, [...]): Remove. 2018-08-01 21:55:05 +00:00
ztest.c elf.c (codes): Fix size to be 288. 2018-01-17 01:39:05 +00:00

README

The libbacktrace library
Initially written by Ian Lance Taylor <iant@google.com>

The libbacktrace library may be linked into a program or library and
used to produce symbolic backtraces.  Sample uses would be to print a
detailed backtrace when an error occurs or to gather detailed
profiling information.

The libbacktrace library is provided under a BSD license.  See the
source files for the exact license text.

The public functions are declared and documented in the header file
backtrace.h, which should be #include'd by a user of the library.

Building libbacktrace will generate a file backtrace-supported.h,
which a user of the library may use to determine whether backtraces
will work.  See the source file backtrace-supported.h.in for the
macros that it defines.

As of September 2012, libbacktrace only supports ELF executables with
DWARF debugging information.  The library is written to make it
straightforward to add support for other object file and debugging
formats.