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

Thomas Neumann thomas.neumann@in.tum.de
Tue May 2 14:32:05 GMT 2023


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:
	* unwind-dw2-fde.c: Free sort array in atomic fast path.
---
  libgcc/unwind-dw2-fde.c | 6 ++++++
  1 file changed, 6 insertions(+)

diff --git a/libgcc/unwind-dw2-fde.c b/libgcc/unwind-dw2-fde.c
index 7b74c391ced..4d2737ff9f7 100644
--- a/libgcc/unwind-dw2-fde.c
+++ b/libgcc/unwind-dw2-fde.c
@@ -240,6 +240,12 @@ __deregister_frame_info_bases (const void *begin)

    // And remove
    ob = btree_remove (&registered_frames, range[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);
-- 
2.39.2



More information about the Gcc-patches mailing list