trace2: destroy context stored in thread-local storage
Each thread may have a specific context in the trace2 subsystem that we set up via thread-local storage. We do not set up a destructor for this data though, which means that the context data will leak. Plug this leak by installing a destructor. This leak is exposed by t7814, but plugging it alone does not make the whole test suite pass. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Patrick Steinhardt committed
Sep 26, 2024 at 13:46 UTC
64d9adafba5b3024414760838d9d81f68738e813
1 file changed
+9
-1
trace2/tr2_tls.c
+9
-1
@@ -152,11 +152,19 @@ uint64_t tr2tls_absolute_elapsed(uint64_t us)
152
return us - tr2tls_us_start_process;
153
}
154
155
+static void tr2tls_key_destructor(void *payload)
156
+{
157
+ struct tr2tls_thread_ctx *ctx = payload;
158
+ free((char *)ctx->thread_name);
159
+ free(ctx->array_us_start);
160
+ free(ctx);
161
+}
162
+
163
void tr2tls_init(void)
164
{
165
tr2tls_start_process_clock();
166
159
- pthread_key_create(&tr2tls_key, NULL);
167
+ pthread_key_create(&tr2tls_key, tr2tls_key_destructor);
168
init_recursive_mutex(&tr2tls_mutex);
169
170
tr2tls_thread_main =