mirror of
https://github.com/brl/mutter.git
synced 2025-01-27 03:49:03 +00:00
profiler: Free ThreadInfo list on MetaProfiler finalize
This avoids use-after-free when handle_start() is called following handle_stop() during the lifetime of the MetaProfiler. This happens on repeated profiling sessions using Sysprof. Fixes: e16d68372 ("profiler: Add API to register profiler threads") Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3076>
This commit is contained in:
parent
bc04fcb89d
commit
f49b2a3c7d
@ -193,7 +193,6 @@ handle_stop (MetaDBusSysprof3Profiler *dbus_profiler,
|
||||
|
||||
cogl_set_tracing_disabled_on_thread (thread_info->main_context);
|
||||
}
|
||||
g_list_free_full (profiler->threads, (GDestroyNotify) thread_info_free);
|
||||
g_mutex_unlock (&profiler->mutex);
|
||||
|
||||
cogl_stop_tracing ();
|
||||
@ -260,6 +259,7 @@ meta_profiler_finalize (GObject *object)
|
||||
g_clear_object (&self->cancellable);
|
||||
g_clear_object (&self->connection);
|
||||
g_mutex_clear (&self->mutex);
|
||||
g_list_free_full (self->threads, (GDestroyNotify) thread_info_free);
|
||||
|
||||
G_OBJECT_CLASS (meta_profiler_parent_class)->finalize (object);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user