qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Eric Blake <eblake@redhat.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: qemu-devel@nongnu.org, Michael Roth <mdroth@linux.vnet.ibm.com>
Subject: Re: [Qemu-devel] [PATCH v10 06/30] qapi: Simplify non-error testing in test-qmp-*
Date: Fri, 6 Nov 2015 08:54:23 -0700	[thread overview]
Message-ID: <563CCD2F.5090703@redhat.com> (raw)
In-Reply-To: <87611f16nk.fsf@blackfin.pond.sub.org>

[-- Attachment #1: Type: text/plain, Size: 2271 bytes --]

On 11/06/2015 08:36 AM, Markus Armbruster wrote:
> Eric Blake <eblake@redhat.com> writes:
> 
>> By using &error_abort, we can avoid a local err variable in
>> situations where we expect success.  It also has the nice
>> effect that if the test breaks, the error message from
>> error_abort tends to be nicer than that of g_assert().
>>
>> Signed-off-by: Eric Blake <eblake@redhat.com>
> [Boring mechanical changes snipped...]

>>      pt_copy->type = pt->type;
>> -    ops->serialize(pt, &serialize_data, visit_primitive_type, &err);
>> -    ops->deserialize((void **)&pt_copy, serialize_data, visit_primitive_type, &err);
>> +    ops->serialize(pt, &serialize_data, visit_primitive_type, &error_abort);
>> +    ops->deserialize((void **)&pt_copy, serialize_data, visit_primitive_type,
>> +                     &error_abort);
>>
>> -    g_assert(err == NULL);
> 
> This looks like a (very minor) bug fix / cleanup: you're not supposed to
> pass the same &err to multiple functions without checking and clearing
> it in between, because the second failure trips assert(*errp == NULL) in
> error_setv().  Harmless here, but it's nice to get rid of a bad example.

Harmless here because we are asserting that err is still NULL after the
chain (which means it was NULL at all points during the chain). But I
agree that it is nice to get rid of poor practice, and that adding a
paragraph to the commit message to point it out would be a nice idea.

> 
> Suggest to note the cleanup in the commit message.

We may be close enough to take the series without needing a v11; if
that's the case, and you are the one squashing in the change, how about
this text:

This patch has an additional bonus of fixing several call sites that
were passing &err to two different functions without checking it in
between.  In general that is unsafe practice; because if the first
function sets an error, the second function could abort() if it tries to
set a different error. We got away with it because we were asserting
that err was NULL through the entire chain, but switching to
&error_abort avoids the questionable practice up front.

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 604 bytes --]

  reply	other threads:[~2015-11-06 15:54 UTC|newest]

Thread overview: 85+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-06  6:35 [Qemu-devel] [PATCH v10 00/30] qapi member collision (post-introspection cleanups, subset C') Eric Blake
2015-11-06  6:35 ` [Qemu-devel] [PATCH v10 01/30] qapi: Use generated TestStruct machinery in tests Eric Blake
2015-11-06  6:35 ` [Qemu-devel] [PATCH v10 02/30] qapi: Strengthen test of TestStructList Eric Blake
2015-11-06  6:35 ` [Qemu-devel] [PATCH v10 03/30] qobject: Protect against use-after-free in qobject_decref() Eric Blake
2015-11-06  6:35 ` [Qemu-devel] [PATCH v10 04/30] qapi: Share test_init code in test-qmp-input* Eric Blake
2015-11-06 15:17   ` Markus Armbruster
2015-11-06  6:35 ` [Qemu-devel] [PATCH v10 05/30] qapi: Plug leaks in test-qmp-* Eric Blake
2015-11-06 15:21   ` Markus Armbruster
2015-11-06 15:49     ` Eric Blake
2015-11-06  6:35 ` [Qemu-devel] [PATCH v10 06/30] qapi: Simplify non-error testing " Eric Blake
2015-11-06 15:36   ` Markus Armbruster
2015-11-06 15:54     ` Eric Blake [this message]
2015-11-06 16:24       ` Markus Armbruster
2015-11-06  6:35 ` [Qemu-devel] [PATCH v10 07/30] qapi: Simplify error cleanup " Eric Blake
2015-11-06 15:40   ` Markus Armbruster
2015-11-06 15:59     ` Eric Blake
2015-11-06 16:23       ` Markus Armbruster
2015-11-06 16:32         ` Eric Blake
2015-11-06 17:04   ` [Qemu-devel] [PATCH] fixup! " Eric Blake
2015-11-06  6:35 ` [Qemu-devel] [PATCH v10 08/30] qapi: More tests of alternate output Eric Blake
2015-11-06  6:35 ` [Qemu-devel] [PATCH v10 09/30] qapi: Test failure in middle of array parse Eric Blake
2015-11-06  6:35 ` [Qemu-devel] [PATCH v10 10/30] qapi: More tests of input arrays Eric Blake
2015-11-06  6:35 ` [Qemu-devel] [PATCH v10 11/30] qapi: Provide nicer array names in introspection Eric Blake
2015-11-06  6:35 ` [Qemu-devel] [PATCH v10 12/30] qapi-introspect: Document lack of sorting Eric Blake
2015-11-06 15:52   ` Markus Armbruster
2015-11-09 20:56     ` Eric Blake
2015-11-10  7:36       ` Markus Armbruster
2015-11-06  6:35 ` [Qemu-devel] [PATCH v10 13/30] qapi: Track simple union tag in object.local_members Eric Blake
2015-11-06  6:35 ` [Qemu-devel] [PATCH v10 14/30] qapi-types: Consolidate gen_struct() and gen_union() Eric Blake
2015-11-06  6:35 ` [Qemu-devel] [PATCH v10 15/30] qapi-types: Simplify gen_struct_field[s] Eric Blake
2015-11-06  6:35 ` [Qemu-devel] [PATCH v10 16/30] qapi: Drop obsolete tag value collision assertions Eric Blake
2015-11-06  6:35 ` [Qemu-devel] [PATCH v10 17/30] qapi: Simplify QAPISchemaObjectTypeMember.check() Eric Blake
2015-11-09 12:31   ` Markus Armbruster
2015-11-09 14:44     ` Eric Blake
2015-11-06  6:35 ` [Qemu-devel] [PATCH v10 18/30] qapi: Clean up after previous commit Eric Blake
2015-11-06  6:35 ` [Qemu-devel] [PATCH v10 19/30] qapi: Fix up commit 7618b91's clash sanity checking change Eric Blake
2015-11-06  6:35 ` [Qemu-devel] [PATCH v10 20/30] qapi: Eliminate QAPISchemaObjectType.check() variable members Eric Blake
2015-11-06  6:35 ` [Qemu-devel] [PATCH v10 21/30] qapi: Factor out QAPISchemaObjectTypeMember.check_clash() Eric Blake
2015-11-06  6:35 ` [Qemu-devel] [PATCH v10 22/30] qapi: Simplify QAPISchemaObjectTypeVariants.check() Eric Blake
2015-11-09 12:38   ` Markus Armbruster
2015-11-10  5:04     ` Eric Blake
2015-11-06  6:35 ` [Qemu-devel] [PATCH v10 23/30] qapi: Check for qapi collisions of flat union branches Eric Blake
2015-11-09 12:56   ` Markus Armbruster
2015-11-09 15:13     ` Markus Armbruster
2015-11-10  5:18       ` Eric Blake
2015-11-10  5:16     ` Eric Blake
2015-11-10  8:30       ` Markus Armbruster
2015-11-10 13:24         ` Eric Blake
2015-11-10 23:37       ` Eric Blake
2015-11-11  9:50         ` Markus Armbruster
2015-11-06  6:35 ` [Qemu-devel] [PATCH v10 24/30] qapi: Factor out QAPISchemaObjectType.check_clash() Eric Blake
2015-11-09 13:00   ` Markus Armbruster
2015-11-09 17:36     ` Eric Blake
2015-11-09 19:11       ` Markus Armbruster
2015-11-10  5:22         ` Eric Blake
2015-11-09 14:49   ` Markus Armbruster
2015-11-10  5:32     ` Eric Blake
2015-11-10  9:15       ` Markus Armbruster
2015-11-10 13:19         ` Eric Blake
2015-11-10 14:43           ` Markus Armbruster
2015-11-06  6:35 ` [Qemu-devel] [PATCH v10 25/30] qapi: Hoist tag collision check to Variants.check() Eric Blake
2015-11-09 13:07   ` Markus Armbruster
2015-11-10  5:33     ` Eric Blake
2015-11-06  6:35 ` [Qemu-devel] [PATCH v10 26/30] qapi: Remove outdated tests related to QMP/branch collisions Eric Blake
2015-11-06  6:35 ` [Qemu-devel] [PATCH v10 27/30] qapi: Track owner of each object member Eric Blake
2015-11-09 14:26   ` Markus Armbruster
2015-11-11  0:17     ` Eric Blake
2015-11-06  6:35 ` [Qemu-devel] [PATCH v10 28/30] qapi: Detect collisions in C member names Eric Blake
2015-11-09 15:17   ` Markus Armbruster
2015-11-11  0:34     ` Eric Blake
2015-11-06  6:35 ` [Qemu-devel] [PATCH v10 29/30] cpu: Convert CpuInfo into flat union Eric Blake
2015-11-09 15:22   ` Markus Armbruster
2015-11-11  2:50     ` Eric Blake
2015-11-11 10:19       ` Markus Armbruster
2015-11-11 15:40         ` Eric Blake
2015-11-11 17:00           ` Markus Armbruster
2015-11-06  6:35 ` [Qemu-devel] [PATCH v10 30/30] qapi: Forbid case-insensitive clashes Eric Blake
2015-11-09 15:42   ` Markus Armbruster
2015-11-06 16:03 ` [Qemu-devel] [PATCH v10 00/30] qapi member collision (post-introspection cleanups, subset C') Markus Armbruster
2015-11-06 16:08   ` Eric Blake
2015-11-09  9:59     ` Markus Armbruster
2015-11-09 14:43       ` Eric Blake
2015-11-09 18:42         ` Markus Armbruster
2015-11-10 11:57           ` Markus Armbruster
2015-11-11 22:48             ` Eric Blake

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=563CCD2F.5090703@redhat.com \
    --to=eblake@redhat.com \
    --cc=armbru@redhat.com \
    --cc=mdroth@linux.vnet.ibm.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).