Fix resource leaks when pulseaudio is terminated 79/232379/2
authorJaechul Lee <jcsing.lee@samsung.com>
Mon, 4 May 2020 01:31:10 +0000 (10:31 +0900)
committerJaechul Lee <jcsing.lee@samsung.com>
Mon, 4 May 2020 03:18:56 +0000 (12:18 +0900)
This resource leak makes abort signal in core_free function and then
spends times to make unnecessary crash dump.

Change-Id: Iccc7cdce2e60985f73a819e83cf7f4887cfdaac9
Signed-off-by: Jaechul Lee <jcsing.lee@samsung.com>
src/module-sound-player.c
src/stream-manager-dbus.c
src/stream-manager.c

index 7071e9c2e4e859930b566097d956c149bfda619a..143b97581b4a6a970aee6a2537e1900b6918be55 100644 (file)
@@ -695,6 +695,8 @@ static void deinit_ipc(struct userdata *u) {
     if (u->dbus_conn) {
         if (!dbus_connection_unregister_object_path(pa_dbus_connection_get(u->dbus_conn), SOUND_PLAYER_OBJECT_PATH))
             pa_log_error("Failed to unregister object path");
+
+        pa_dbus_connection_unref(u->dbus_conn);
         u->dbus_conn = NULL;
     }
 #endif
index 14ed732d41954a252bee1530929d81d6138e0cd9..64adff19fd272758932c991085bbfb3387c21723 100644 (file)
@@ -2480,6 +2480,8 @@ void deinit_sm_dbus(pa_stream_manager *m) {
     if (m->dbus_conn) {
         if (!dbus_connection_unregister_object_path(pa_dbus_connection_get(m->dbus_conn), STREAM_MANAGER_OBJECT_PATH))
             pa_log_error("failed to unregister object path");
+
+        pa_dbus_connection_unref(m->dbus_conn);
         m->dbus_conn = NULL;
     }
 #endif
index 8ca080910d854931080bdcc5f04e501705cb4aac..6411be76f3fdae1f5d7cd6c7c5758b4aef2b6ecb 100644 (file)
@@ -3873,5 +3873,7 @@ void pa_stream_manager_unref(pa_stream_manager *m) {
         pa_hal_interface_unref(m->hal);
     }
 
+    pa_shared_remove(m->core, SHARED_STREAM_MANAGER);
+
     pa_xfree(m);
 }