https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88063
--- Comment #14 from Tom de Vries <vries at gcc dot gnu.org> --- Author: vries Date: Fri Dec 28 03:43:26 2018 New Revision: 267443 URL: https://gcc.gnu.org/viewcvs?rev=267443&root=gcc&view=rev Log: [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 <i...@golang.org> Tom de Vries <tdevr...@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. Modified: trunk/libbacktrace/ChangeLog trunk/libbacktrace/dwarf.c