From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:44738) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZgxgD-0006uf-MM for qemu-devel@nongnu.org; Tue, 29 Sep 2015 12:23:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZgxgA-0003ya-WF for qemu-devel@nongnu.org; Tue, 29 Sep 2015 12:23:01 -0400 References: <1443470907-32335-1-git-send-email-armbru@redhat.com> <1443470907-32335-7-git-send-email-armbru@redhat.com> From: =?UTF-8?Q?Andreas_F=c3=a4rber?= Message-ID: <560ABADD.7090507@suse.de> Date: Tue, 29 Sep 2015 18:22:53 +0200 MIME-Version: 1.0 In-Reply-To: <1443470907-32335-7-git-send-email-armbru@redhat.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH v4 6/7] qdev: Protect device-list-properties against broken devices List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Markus Armbruster , qemu-devel@nongnu.org Cc: Peter Maydell , Anthony Green , Mark Cave-Ayland , Blue Swirl , Max Filippov , "Edgar E. Iglesias" , Guan Xuetao , Jia Liu , Alexander Graf , Christian Borntraeger , Leon Alrae , thuth@redhat.com, ehabkost@redhat.com, qemu-stable@nongnu.org, stefanha@redhat.com, Cornelia Huck , Richard Henderson , Bastian Koppelmann , Michael Walle , qemu-ppc@nongnu.org, Paolo Bonzini , Aurelien Jarno Am 28.09.2015 um 22:08 schrieb Markus Armbruster: > Several devices don't survive object_unref(object_new(T)): they crash > or hang during cleanup, or they leave dangling pointers behind. >=20 > This breaks at least device-list-properties, because > qmp_device_list_properties() needs to create a device to find its > properties. Broken in commit f4eb32b "qmp: show QOM properties in > device-list-properties", v2.1. Example reproducer: >=20 > $ qemu-system-aarch64 -nodefaults -display none -machine none -S -q= mp stdio > {"QMP": {"version": {"qemu": {"micro": 50, "minor": 4, "major": 2},= "package": ""}, "capabilities": []}} > { "execute": "qmp_capabilities" } > {"return": {}} > { "execute": "device-list-properties", "arguments": { "typename": "= pxa2xx-pcmcia" } } > qemu-system-aarch64: /home/armbru/work/qemu/memory.c:1307: memory_r= egion_finalize: Assertion `((&mr->subregions)->tqh_first =3D=3D ((void *)= 0))' failed. > Aborted (core dumped) > [Exit 134 (SIGABRT)] >=20 > Unfortunately, I can't fix the problems in these devices right now. > Instead, add DeviceClass member cannot_even_create_with_object_new_yet > to mark them: This name is very misleading unfortunately. You must be able to create any QOM object with object_new(), you just can't clean them up IIUC. What about cannot_clean_up_with_finalize_yet or irreversible_to_create? ACK for the general approach of adding a new ugly field. ;) Regards, Andreas --=20 SUSE Linux GmbH, Maxfeldstr. 5, 90409 N=C3=BCrnberg, Germany GF: Felix Imend=C3=B6rffer, Jane Smithard, Graham Norton; HRB 21284 (AG N= =C3=BCrnberg)