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 7071e9c..143b975 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 14ed732..64adff1 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 8ca0809..6411be7 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);
 }