release the sorted FDE array when deregistering a frame [PR109685]

The atomic fastpath bypasses the code that releases the sort
array which was lazily allocated during unwinding. We now
check after deregistering if there is an array to free.

libgcc/ChangeLog:
	PR libgcc/109685
	* unwind-dw2-fde.c: Free sort array in atomic fast path.
This commit is contained in:
Thomas Neumann 2023-05-02 16:21:09 +02:00
parent f5c82bff5e
commit 5cf60b6ba1

View file

@ -241,6 +241,12 @@ __deregister_frame_info_bases (const void *begin)
// And remove
ob = btree_remove (&registered_frames, range[0]);
bool empty_table = (range[1] - range[0]) == 0;
// Deallocate the sort array if any.
if (ob && ob->s.b.sorted)
{
free (ob->u.sort);
}
#else
init_object_mutex_once ();
__gthread_mutex_lock (&object_mutex);