From nobody Fri Apr 26 04:45:45 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) client-ip=209.132.183.28; envelope-from=libvir-list-bounces@redhat.com; helo=mx1.redhat.com; Authentication-Results: mx.zohomail.com; spf=pass (zoho.com: domain of redhat.com designates 209.132.183.28 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com; dmarc=pass(p=none dis=none) header.from=redhat.com Return-Path: Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) by mx.zohomail.com with SMTPS id 1538567299765961.7348319629311; Wed, 3 Oct 2018 04:48:19 -0700 (PDT) Received: from smtp.corp.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.26]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 451C45D676; Wed, 3 Oct 2018 11:48:17 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.20]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E93863001669; Wed, 3 Oct 2018 11:48:16 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 8464B180B5B7; Wed, 3 Oct 2018 11:48:16 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id w93BmEid009818 for ; Wed, 3 Oct 2018 07:48:14 -0400 Received: by smtp.corp.redhat.com (Postfix) id CA0E13094642; Wed, 3 Oct 2018 11:48:14 +0000 (UTC) Received: from dahmer.brq.redhat.com (unknown [10.43.2.94]) by smtp.corp.redhat.com (Postfix) with ESMTP id 02490308BDAA; Wed, 3 Oct 2018 11:48:08 +0000 (UTC) From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= To: libvir-list@redhat.com Date: Wed, 3 Oct 2018 13:48:06 +0200 Message-Id: <20181003114806.9963-1-fidencio@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.24 X-loop: libvir-list@redhat.com Cc: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= Subject: [libvirt] [glib PATCH] gconfig, gobject: Use G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.84 on 10.5.11.26 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Wed, 03 Oct 2018 11:48:18 +0000 (UTC) X-ZohoMail: RDMRC_0 RSF_0 Z_629925259 SPT_0 Commit 7190c5024d introduced the usage of new GObject define macros with private. However as the conversion hasn't been done for abstract types (G_DEFINE_ABSTRACT_TYPE) and the addition of the private classes for the abstract types has been removed as part of the commit, crashes can be seen in Apps consuming libvirt-glib, as this one from GNOME Boxes: Thread 1 "gnome-boxes" received signal SIGSEGV, Segmentation fault. 0x00007ffff7ef2b35 in g_type_check_instance_is_fundamentally_a () from /us= r/lib/x86_64-linux-gnu/libgobject-2.0.so.0 (gdb) bt #0 0x00007ffff7ef2b35 in g_type_check_instance_is_fundamentally_a () from= /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 #1 0x00007ffff7ed2e75 in g_object_unref () from /usr/lib/x86_64-linux-gnu= /libgobject-2.0.so.0 #2 0x00007ffff6ef094e in gvir_domain_device_set_property (object=3D0x5555= 56680950, prop_id=3D2, value=3D0x7fffffffcbe0, pspec=3D0x555556772540) at libvirt-gobject-domain-device.c:89 #3 0x00007ffff7ed3b19 in ?? () from /usr/lib/x86_64-linux-gnu/libgobject-= 2.0.so.0 #4 0x00007ffff7ed5624 in g_object_new_valist () from /usr/lib/x86_64-linu= x-gnu/libgobject-2.0.so.0 #5 0x00007ffff7ed5959 in g_object_new () from /usr/lib/x86_64-linux-gnu/l= ibgobject-2.0.so.0 #6 0x00005555555d8257 in boxes_libvirt_machine_get_domain_disk (self=3D0x= 5555560e6790, error=3D0x55555615a630) at /run/build/gnome-boxes/src/libvirt-machine.vala:547 #7 0x00005555555d0e7e in boxes_libvirt_machine_update_io_stat_co (_data_= =3D0x55555615a320) at /run/build/gnome-boxes/src/libvirt-machine.vala:280 #8 0x00005555555d09b2 in boxes_libvirt_machine_update_io_stat (self=3D0x5= 555560e6790, info=3D0x555555f25990, stat=3D0x555556736a90, _callback_=3D0x5555555d2992 = , _user_data_=3D0x555556736a50) at /run/build/gnome-boxes/src/libvirt-machine.vala:5 #9 0x00005555555d3120 in boxes_libvirt_machine_update_stats_co (_data_=3D= 0x555556736a50) at /run/build/gnome-boxes/src/libvirt-machine.vala:332 #10 0x00005555555d29dd in boxes_libvirt_machine_update_stats_ready (source= _object=3D0x5555567bb840, _res_=3D0x55555677ae00, _user_data_=3D0x555556736a50) at /run/build/gnome-boxes/src/libvirt-ma= chine.vala:328 #11 0x00007ffff72adc89 in ?? () from /usr/lib/x86_64-linux-gnu/libgio-2.0.= so.0 #12 0x00007ffff72adcc9 in ?? () from /usr/lib/x86_64-linux-gnu/libgio-2.0.= so.0 #13 0x00007ffff7dec948 in g_main_context_dispatch () from /usr/lib/x86_64-= linux-gnu/libglib-2.0.so.0 #14 0x00007ffff7decd38 in ?? () from /usr/lib/x86_64-linux-gnu/libglib-2.0= .so.0 #15 0x00007ffff7decdcc in g_main_context_iteration () from /usr/lib/x86_64= -linux-gnu/libglib-2.0.so.0 #16 0x00007ffff72c2dbd in g_application_run () from /usr/lib/x86_64-linux-= gnu/libgio-2.0.so.0 #17 0x00005555556004b6 in _vala_main (args=3D0x7fffffffd4f8, args_length1= =3D1) at /run/build/gnome-boxes/src/main.vala:84 #18 0x0000555555600517 in main (argc=3D1, argv=3D0x7fffffffd4f8) at /run/b= uild/gnome-boxes/src/main.vala:68 In order to solve the issue, let's just replace G_DEFINE_ABSTRACT_TYPE by G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE. Signed-off-by: Fabiano Fid=C3=AAncio --- libvirt-gconfig/libvirt-gconfig-domain-address.c | 2 +- libvirt-gconfig/libvirt-gconfig-domain-chardev-source.c | 2 +- libvirt-gconfig/libvirt-gconfig-domain-chardev.c | 2 +- libvirt-gconfig/libvirt-gconfig-domain-controller.c | 2 +- libvirt-gconfig/libvirt-gconfig-domain-graphics.c | 2 +- libvirt-gconfig/libvirt-gconfig-domain-hostdev.c | 2 +- libvirt-gconfig/libvirt-gconfig-domain-interface.c | 2 +- libvirt-gconfig/libvirt-gconfig-domain-smartcard.c | 2 +- libvirt-gconfig/libvirt-gconfig-domain-timer.c | 2 +- libvirt-gobject/libvirt-gobject-domain-device.c | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/libvirt-gconfig/libvirt-gconfig-domain-address.c b/libvirt-gco= nfig/libvirt-gconfig-domain-address.c index b070a1f..a9eefd8 100644 --- a/libvirt-gconfig/libvirt-gconfig-domain-address.c +++ b/libvirt-gconfig/libvirt-gconfig-domain-address.c @@ -33,7 +33,7 @@ struct _GVirConfigDomainAddressPrivate gboolean unused; }; =20 -G_DEFINE_ABSTRACT_TYPE(GVirConfigDomainAddress, gvir_config_domain_address= , GVIR_CONFIG_TYPE_OBJECT); +G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE(GVirConfigDomainAddress, gvir_config_d= omain_address, GVIR_CONFIG_TYPE_OBJECT); =20 =20 static void gvir_config_domain_address_class_init(GVirConfigDomainAddressC= lass *klass G_GNUC_UNUSED) diff --git a/libvirt-gconfig/libvirt-gconfig-domain-chardev-source.c b/libv= irt-gconfig/libvirt-gconfig-domain-chardev-source.c index 50d4030..fe22290 100644 --- a/libvirt-gconfig/libvirt-gconfig-domain-chardev-source.c +++ b/libvirt-gconfig/libvirt-gconfig-domain-chardev-source.c @@ -34,7 +34,7 @@ struct _GVirConfigDomainChardevSourcePrivate gboolean unused; }; =20 -G_DEFINE_ABSTRACT_TYPE(GVirConfigDomainChardevSource, gvir_config_domain_c= hardev_source, GVIR_CONFIG_TYPE_OBJECT); +G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE(GVirConfigDomainChardevSource, gvir_co= nfig_domain_chardev_source, GVIR_CONFIG_TYPE_OBJECT); =20 =20 static void gvir_config_domain_chardev_source_class_init(GVirConfigDomainC= hardevSourceClass *klass G_GNUC_UNUSED) diff --git a/libvirt-gconfig/libvirt-gconfig-domain-chardev.c b/libvirt-gco= nfig/libvirt-gconfig-domain-chardev.c index a5ebc9c..aa7e3e9 100644 --- a/libvirt-gconfig/libvirt-gconfig-domain-chardev.c +++ b/libvirt-gconfig/libvirt-gconfig-domain-chardev.c @@ -34,7 +34,7 @@ struct _GVirConfigDomainChardevPrivate gboolean unused; }; =20 -G_DEFINE_ABSTRACT_TYPE(GVirConfigDomainChardev, gvir_config_domain_chardev= , GVIR_CONFIG_TYPE_DOMAIN_DEVICE) +G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE(GVirConfigDomainChardev, gvir_config_d= omain_chardev, GVIR_CONFIG_TYPE_DOMAIN_DEVICE) =20 static void gvir_config_domain_chardev_class_init(GVirConfigDomainChardevC= lass *klass G_GNUC_UNUSED) { diff --git a/libvirt-gconfig/libvirt-gconfig-domain-controller.c b/libvirt-= gconfig/libvirt-gconfig-domain-controller.c index a2d40c3..0c880f8 100644 --- a/libvirt-gconfig/libvirt-gconfig-domain-controller.c +++ b/libvirt-gconfig/libvirt-gconfig-domain-controller.c @@ -33,7 +33,7 @@ struct _GVirConfigDomainControllerPrivate gboolean unused; }; =20 -G_DEFINE_ABSTRACT_TYPE(GVirConfigDomainController, gvir_config_domain_cont= roller, GVIR_CONFIG_TYPE_DOMAIN_DEVICE); +G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE(GVirConfigDomainController, gvir_confi= g_domain_controller, GVIR_CONFIG_TYPE_DOMAIN_DEVICE); =20 =20 static void gvir_config_domain_controller_class_init(GVirConfigDomainContr= ollerClass *klass G_GNUC_UNUSED) diff --git a/libvirt-gconfig/libvirt-gconfig-domain-graphics.c b/libvirt-gc= onfig/libvirt-gconfig-domain-graphics.c index e35976f..8c24adc 100644 --- a/libvirt-gconfig/libvirt-gconfig-domain-graphics.c +++ b/libvirt-gconfig/libvirt-gconfig-domain-graphics.c @@ -33,7 +33,7 @@ struct _GVirConfigDomainGraphicsPrivate gboolean unused; }; =20 -G_DEFINE_ABSTRACT_TYPE(GVirConfigDomainGraphics, gvir_config_domain_graphi= cs, GVIR_CONFIG_TYPE_DOMAIN_DEVICE); +G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE(GVirConfigDomainGraphics, gvir_config_= domain_graphics, GVIR_CONFIG_TYPE_DOMAIN_DEVICE); =20 =20 static void gvir_config_domain_graphics_class_init(GVirConfigDomainGraphic= sClass *klass G_GNUC_UNUSED) diff --git a/libvirt-gconfig/libvirt-gconfig-domain-hostdev.c b/libvirt-gco= nfig/libvirt-gconfig-domain-hostdev.c index ade2dc3..465490e 100644 --- a/libvirt-gconfig/libvirt-gconfig-domain-hostdev.c +++ b/libvirt-gconfig/libvirt-gconfig-domain-hostdev.c @@ -34,7 +34,7 @@ struct _GVirConfigDomainHostdevPrivate gboolean unused; }; =20 -G_DEFINE_ABSTRACT_TYPE(GVirConfigDomainHostdev, gvir_config_domain_hostdev= , GVIR_CONFIG_TYPE_DOMAIN_DEVICE); +G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE(GVirConfigDomainHostdev, gvir_config_d= omain_hostdev, GVIR_CONFIG_TYPE_DOMAIN_DEVICE); =20 =20 static void gvir_config_domain_hostdev_class_init(GVirConfigDomainHostdevC= lass *klass G_GNUC_UNUSED) diff --git a/libvirt-gconfig/libvirt-gconfig-domain-interface.c b/libvirt-g= config/libvirt-gconfig-domain-interface.c index 2b841b3..7c5c8e4 100644 --- a/libvirt-gconfig/libvirt-gconfig-domain-interface.c +++ b/libvirt-gconfig/libvirt-gconfig-domain-interface.c @@ -35,7 +35,7 @@ struct _GVirConfigDomainInterfacePrivate gboolean unused; }; =20 -G_DEFINE_ABSTRACT_TYPE(GVirConfigDomainInterface, gvir_config_domain_inter= face, GVIR_CONFIG_TYPE_DOMAIN_DEVICE); +G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE(GVirConfigDomainInterface, gvir_config= _domain_interface, GVIR_CONFIG_TYPE_DOMAIN_DEVICE); =20 =20 static void gvir_config_domain_interface_class_init(GVirConfigDomainInterf= aceClass *klass G_GNUC_UNUSED) diff --git a/libvirt-gconfig/libvirt-gconfig-domain-smartcard.c b/libvirt-g= config/libvirt-gconfig-domain-smartcard.c index f7c65f0..0d000e7 100644 --- a/libvirt-gconfig/libvirt-gconfig-domain-smartcard.c +++ b/libvirt-gconfig/libvirt-gconfig-domain-smartcard.c @@ -33,7 +33,7 @@ struct _GVirConfigDomainSmartcardPrivate gboolean unused; }; =20 -G_DEFINE_ABSTRACT_TYPE(GVirConfigDomainSmartcard, gvir_config_domain_smart= card, GVIR_CONFIG_TYPE_DOMAIN_DEVICE); +G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE(GVirConfigDomainSmartcard, gvir_config= _domain_smartcard, GVIR_CONFIG_TYPE_DOMAIN_DEVICE); =20 =20 static void gvir_config_domain_smartcard_class_init(GVirConfigDomainSmartc= ardClass *klass G_GNUC_UNUSED) diff --git a/libvirt-gconfig/libvirt-gconfig-domain-timer.c b/libvirt-gconf= ig/libvirt-gconfig-domain-timer.c index f33a56f..d6d98dd 100644 --- a/libvirt-gconfig/libvirt-gconfig-domain-timer.c +++ b/libvirt-gconfig/libvirt-gconfig-domain-timer.c @@ -33,7 +33,7 @@ struct _GVirConfigDomainTimerPrivate gboolean unused; }; =20 -G_DEFINE_ABSTRACT_TYPE(GVirConfigDomainTimer, gvir_config_domain_timer, GV= IR_CONFIG_TYPE_OBJECT); +G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE(GVirConfigDomainTimer, gvir_config_dom= ain_timer, GVIR_CONFIG_TYPE_OBJECT); =20 =20 static void gvir_config_domain_timer_class_init(GVirConfigDomainTimerClass= *klass G_GNUC_UNUSED) diff --git a/libvirt-gobject/libvirt-gobject-domain-device.c b/libvirt-gobj= ect/libvirt-gobject-domain-device.c index 4ed846c..ce199c5 100644 --- a/libvirt-gobject/libvirt-gobject-domain-device.c +++ b/libvirt-gobject/libvirt-gobject-domain-device.c @@ -40,7 +40,7 @@ struct _GVirDomainDevicePrivate GVirConfigDomainDevice *config; }; =20 -G_DEFINE_ABSTRACT_TYPE(GVirDomainDevice, gvir_domain_device, G_TYPE_OBJECT= ); +G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE(GVirDomainDevice, gvir_domain_device, = G_TYPE_OBJECT); =20 enum { PROP_0, --=20 2.19.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list