From 0ff4f5a7e9e473c9801508caaaaaf1eba4e9d786 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sami=20Ky=C3=B6stil=C3=A4?= Date: Mon, 11 Jul 2022 16:36:31 +1000 Subject: [PATCH] util: Shut down Perfetto before driver unload Shut down Perfetto before unloading the driver to fix a crash caused by an internal Perfetto thread that kept running after dlclose() took away its code. Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/4909 Reviewed-by: Rob Clark Reviewed-by: Chia-I Wu Reviewed-by: Yiwei Zhang Part-of: --- src/util/u_perfetto.cc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/util/u_perfetto.cc b/src/util/u_perfetto.cc index 8de46a03614..5158c9442e9 100644 --- a/src/util/u_perfetto.cc +++ b/src/util/u_perfetto.cc @@ -27,6 +27,12 @@ #include "u_perfetto.h" +static void +util_perfetto_fini(void) +{ + perfetto::Tracing::Shutdown(); +} + static void util_perfetto_init_once(void) { @@ -34,6 +40,7 @@ util_perfetto_init_once(void) perfetto::TracingInitArgs args; args.backends = perfetto::kSystemBackend; perfetto::Tracing::Initialize(args); + atexit(&util_perfetto_fini); } static once_flag perfetto_once_flag = ONCE_FLAG_INIT;