[Spice-commits] 2 commits - server/main-dispatcher.c server/reds.c server/smartcard-channel-client.c server/spicevmc.c

Frediano Ziglio fziglio at kemper.freedesktop.org
Tue Mar 14 09:20:58 UTC 2017


 server/main-dispatcher.c          |    1 +
 server/reds.c                     |    2 ++
 server/smartcard-channel-client.c |    6 ------
 server/spicevmc.c                 |    1 +
 4 files changed, 4 insertions(+), 6 deletions(-)

New commits:
commit 4b1c95beee124032f386b3b99663adb7c7a5d8f8
Author: Christophe Fergeau <cfergeau at redhat.com>
Date:   Mon Mar 13 19:09:09 2017 +0100

    Add missing chainups to parent class
    
    A few dispose/finalize implementations were not chaining up to their
    parent classes, causing memory leaks.
    
    This fixes leaks like the following:
    
    ==16240== Memcheck, a memory error detector
    ==16240== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al.
    ==16240== Using Valgrind-3.12.0 and LibVEX; rerun with -h for copyright info
    ==16240== Command: ./test-leaks
    ==16240==
    ==16240==
    ==16240== HEAP SUMMARY:
    ==16240==     in use at exit: 245,490 bytes in 3,638 blocks
    ==16240==   total heap usage: 5,418 allocs, 1,780 frees, 17,676,968 bytes allocated
    ==16240==
    ==16240== 16 bytes in 1 blocks are definitely lost in loss record 203 of 771
    ==16240==    at 0x4C2DADE: malloc (vg_replace_malloc.c:298)
    ==16240==    by 0x4C2FC91: realloc (vg_replace_malloc.c:785)
    ==16240==    by 0x52864E: dispatcher_register_handler (dispatcher.c:374)
    ==16240==    by 0x5293E0: main_dispatcher_constructed (main-dispatcher.c:315)
    ==16240==    by 0x7F873DB: g_object_new_internal (gobject.c:1823)
    ==16240==    by 0x7F87EE4: g_object_new_valist (gobject.c:2042)
    ==16240==    by 0x7F86E90: g_object_new (gobject.c:1626)
    ==16240==    by 0x5292A5: main_dispatcher_new (main-dispatcher.c:295)
    ==16240==    by 0x429A0A: do_spice_init (reds.c:3416)
    ==16240==    by 0x42A3F5: spice_server_init (reds.c:3663)
    ==16240==    by 0x4095B1: server_leaks (test-leaks.c:45)
    ==16240==    by 0x844C60A: test_case_run (gtestutils.c:2161)
    ==16240==    by 0x844C9CA: g_test_run_suite_internal (gtestutils.c:2244)
    ==16240==    by 0x844CA73: g_test_run_suite_internal (gtestutils.c:2256)
    ==16240==    by 0x844CC8A: g_test_run_suite (gtestutils.c:2332)
    ==16240==    by 0x844B92C: g_test_run (gtestutils.c:1599)
    ==16240==    by 0x409A0B: main (test-leaks.c:126)
    ==16240==
    ==16240== 16 bytes in 1 blocks are definitely lost in loss record 204 of 771
    ==16240==    at 0x4C2DADE: malloc (vg_replace_malloc.c:298)
    ==16240==    by 0x4C2FC91: realloc (vg_replace_malloc.c:785)
    ==16240==    by 0x52864E: dispatcher_register_handler (dispatcher.c:374)
    ==16240==    by 0x5293E0: main_dispatcher_constructed (main-dispatcher.c:315)
    ==16240==    by 0x7F873DB: g_object_new_internal (gobject.c:1823)
    ==16240==    by 0x7F87EE4: g_object_new_valist (gobject.c:2042)
    ==16240==    by 0x7F86E90: g_object_new (gobject.c:1626)
    ==16240==    by 0x5292A5: main_dispatcher_new (main-dispatcher.c:295)
    ==16240==    by 0x429A0A: do_spice_init (reds.c:3416)
    ==16240==    by 0x42A3F5: spice_server_init (reds.c:3663)
    ==16240==    by 0x40BFD4: test_new (test-display-base.c:902)
    ==16240==    by 0x40979D: vmc_leaks (test-leaks.c:92)
    ==16240==    by 0x844C60A: test_case_run (gtestutils.c:2161)
    ==16240==    by 0x844C9CA: g_test_run_suite_internal (gtestutils.c:2244)
    ==16240==    by 0x844CA73: g_test_run_suite_internal (gtestutils.c:2256)
    ==16240==    by 0x844CC8A: g_test_run_suite (gtestutils.c:2332)
    ==16240==    by 0x844B92C: g_test_run (gtestutils.c:1599)
    ==16240==    by 0x409A0B: main (test-leaks.c:126)
    ==16240==
    ==16240== 96 bytes in 1 blocks are definitely lost in loss record 638 of 771
    ==16240==    at 0x4C2FA50: calloc (vg_replace_malloc.c:711)
    ==16240==    by 0x8427D3C: g_malloc0 (gmem.c:124)
    ==16240==    by 0x842801F: g_malloc0_n (gmem.c:355)
    ==16240==    by 0x527B44: dispatcher_constructed (dispatcher.c:141)
    ==16240==    by 0x529321: main_dispatcher_constructed (main-dispatcher.c:307)
    ==16240==    by 0x7F873DB: g_object_new_internal (gobject.c:1823)
    ==16240==    by 0x7F87EE4: g_object_new_valist (gobject.c:2042)
    ==16240==    by 0x7F86E90: g_object_new (gobject.c:1626)
    ==16240==    by 0x5292A5: main_dispatcher_new (main-dispatcher.c:295)
    ==16240==    by 0x429A0A: do_spice_init (reds.c:3416)
    ==16240==    by 0x42A3F5: spice_server_init (reds.c:3663)
    ==16240==    by 0x4095B1: server_leaks (test-leaks.c:45)
    ==16240==    by 0x844C60A: test_case_run (gtestutils.c:2161)
    ==16240==    by 0x844C9CA: g_test_run_suite_internal (gtestutils.c:2244)
    ==16240==    by 0x844CA73: g_test_run_suite_internal (gtestutils.c:2256)
    ==16240==    by 0x844CC8A: g_test_run_suite (gtestutils.c:2332)
    ==16240==    by 0x844B92C: g_test_run (gtestutils.c:1599)
    ==16240==    by 0x409A0B: main (test-leaks.c:126)
    ==16240==
    ==16240== 96 bytes in 1 blocks are definitely lost in loss record 639 of 771
    ==16240==    at 0x4C2FA50: calloc (vg_replace_malloc.c:711)
    ==16240==    by 0x8427D3C: g_malloc0 (gmem.c:124)
    ==16240==    by 0x842801F: g_malloc0_n (gmem.c:355)
    ==16240==    by 0x527B44: dispatcher_constructed (dispatcher.c:141)
    ==16240==    by 0x529321: main_dispatcher_constructed (main-dispatcher.c:307)
    ==16240==    by 0x7F873DB: g_object_new_internal (gobject.c:1823)
    ==16240==    by 0x7F87EE4: g_object_new_valist (gobject.c:2042)
    ==16240==    by 0x7F86E90: g_object_new (gobject.c:1626)
    ==16240==    by 0x5292A5: main_dispatcher_new (main-dispatcher.c:295)
    ==16240==    by 0x429A0A: do_spice_init (reds.c:3416)
    ==16240==    by 0x42A3F5: spice_server_init (reds.c:3663)
    ==16240==    by 0x40BFD4: test_new (test-display-base.c:902)
    ==16240==    by 0x40979D: vmc_leaks (test-leaks.c:92)
    ==16240==    by 0x844C60A: test_case_run (gtestutils.c:2161)
    ==16240==    by 0x844C9CA: g_test_run_suite_internal (gtestutils.c:2244)
    ==16240==    by 0x844CA73: g_test_run_suite_internal (gtestutils.c:2256)
    ==16240==    by 0x844CC8A: g_test_run_suite (gtestutils.c:2332)
    ==16240==    by 0x844B92C: g_test_run (gtestutils.c:1599)
    ==16240==    by 0x409A0B: main (test-leaks.c:126)
    ==16240==
    ==16240== LEAK SUMMARY:
    ==16240==    definitely lost: 224 bytes in 4 blocks
    ==16240==    indirectly lost: 0 bytes in 0 blocks
    ==16240==      possibly lost: 0 bytes in 0 blocks
    ==16240==    still reachable: 207,718 bytes in 3,312 blocks
    ==16240==                       of which reachable via heuristic:
    ==16240==                         newarray           : 1,536 bytes in 16 blocks
    ==16240==         suppressed: 34,548 bytes in 302 blocks
    ==16240== Reachable blocks (those to which a pointer was found) are not shown.
    ==16240== To see them, rerun with: --leak-check=full --show-leak-kinds=all
    ==16240==
    ==16240== For counts of detected and suppressed errors, rerun with: -v
    ==16240== ERROR SUMMARY: 4 errors from 4 contexts (suppressed: 20 from 20)
    FAIL test-leaks (exit status: 1)
    
    Acked-by: Frediano Ziglio <fziglio at redhat.com>

diff --git a/server/main-dispatcher.c b/server/main-dispatcher.c
index 51d6004..019bf4d 100644
--- a/server/main-dispatcher.c
+++ b/server/main-dispatcher.c
@@ -332,4 +332,5 @@ static void main_dispatcher_finalize(GObject *object)
 
     self->priv->core->watch_remove(self->priv->core, self->priv->watch);
     self->priv->watch = NULL;
+    G_OBJECT_CLASS(main_dispatcher_parent_class)->finalize(object);
 }
diff --git a/server/reds.c b/server/reds.c
index a165a9b..c730daa 100644
--- a/server/reds.c
+++ b/server/reds.c
@@ -4525,6 +4525,8 @@ red_char_device_vdi_port_finalize(GObject *object)
 
    free(dev->priv->mig_data);
    /* FIXME: need to free the RedVDIReadBuf allocated previously */
+
+    G_OBJECT_CLASS(red_char_device_vdi_port_parent_class)->finalize(object);
 }
 
 static void
diff --git a/server/spicevmc.c b/server/spicevmc.c
index 615e317..623e34f 100644
--- a/server/spicevmc.c
+++ b/server/spicevmc.c
@@ -914,6 +914,7 @@ red_char_device_spicevmc_dispose(GObject *object)
         red_channel_destroy(channel);
         self->channel = NULL;
     }
+    G_OBJECT_CLASS(red_char_device_spicevmc_parent_class)->dispose(object);
 }
 
 enum {
commit efbc6b2fe21b26bc04f93bfe05ee26a87375f49b
Author: Christophe Fergeau <cfergeau at redhat.com>
Date:   Mon Mar 13 19:09:08 2017 +0100

    smartcard: Remove unneeded 'dispose' implementation
    
    Acked-by: Frediano Ziglio <fziglio at redhat.com>

diff --git a/server/smartcard-channel-client.c b/server/smartcard-channel-client.c
index bfd05bf..05ad49b 100644
--- a/server/smartcard-channel-client.c
+++ b/server/smartcard-channel-client.c
@@ -73,11 +73,6 @@ static void smart_card_channel_client_set_property(GObject *object,
     }
 }
 
-static void smart_card_channel_client_dispose(GObject *object)
-{
-    G_OBJECT_CLASS(smart_card_channel_client_parent_class)->dispose(object);
-}
-
 static void smart_card_channel_client_finalize(GObject *object)
 {
     SmartCardChannelClient *self = SMARTCARD_CHANNEL_CLIENT(object);
@@ -100,7 +95,6 @@ static void smart_card_channel_client_class_init(SmartCardChannelClientClass *kl
 
     object_class->get_property = smart_card_channel_client_get_property;
     object_class->set_property = smart_card_channel_client_set_property;
-    object_class->dispose = smart_card_channel_client_dispose;
     object_class->finalize = smart_card_channel_client_finalize;
 }
 


More information about the Spice-commits mailing list