qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] error: Fix error_report_err(), warn_report_err(


From: Markus Armbruster
Subject: Re: [Qemu-devel] [PATCH] error: Fix error_report_err(), warn_report_err() hint printing
Date: Tue, 16 Apr 2019 21:28:00 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux)

Eric Blake <address@hidden> writes:

> On 4/16/19 10:38 AM, Markus Armbruster wrote:
>> Before the from qerror_report() to error_setg(), hints looked like
>
> s/the from/the change from/
>
>> this:
>> 
>>     qerror_report(QERR_MACRO, ... arguments ...);
>>     error_printf_unless_qmp(... hint ...);
>> 
>> error_printf_unless_qmp() made perfect sense: it printed exactly when
>> qerror_report() did.
>> 
>> After the conversion to error_setg():
>
> Commit id?

Many.  From the cover letter of the series that finally killed
qerror_report: "After a bit over a year and many patches, QError is
finally ripe."

Here are two known to have messed up hints (commit 50b7b000c91 says so):

7216ae3d1a11e07192623ad04d450e98bf1f3d10
d282842999b914c38c8be4659012aa619c22af8b

>> 
>>     error_setg(errp, QERR_MACRO, ... arguments ...);
>>     error_printf_unless_qmp(... hint ...);
>> 
>> The "unless QMP part" still made some sense; in QMP context, the
>> caller generally uses the error as QMP response instead of printing
>> it.
>> 
>> However, everything else is wrong.  If the caller handles the error,
>> the hint gets printed anyway (unless QMP).  If the caller reports the
>> error, the hint gets printed *before* the report (unless QMP) or not
>> at all (if QMP).
>> 
>> Commit 50b7b000c91 fixed this by making hints a member of Error.  It
>
> Belongs to 2.5.0.
>
>> kept printing hints with error_printf_unless_qmp():
>> 
>>      void error_report_err(Error *err)
>>      {
>>       error_report("%s", error_get_pretty(err));
>>     +    if (err->hint) {
>>     +        error_printf_unless_qmp("%s\n", err->hint->str);
>>     +    }
>>       error_free(err);
>>      }
>> 
>> This is wrong.  We should (and now can) print the hint exactly when we
>> print the error.
>> 
>> The mistake has since been copied to warn_report_err().
>
> Commit id?

e43ead1d0b9c467af4a2af8f5177316a0ccb5602

>> 
>> Fix both to use error_printf().
>> 
>> Reported-by: Vladimir Sementsov-Ogievskiy <address@hidden>
>> Cc: Eric Blake <address@hidden>
>> Signed-off-by: Markus Armbruster <address@hidden>
>> ---
>>  util/error.c | 4 ++--
>>  1 file changed, 2 insertions(+), 2 deletions(-)
>> 
>
> Probably too late for 4.0-rc4. Then again, it regressed in 2.5, so
> having yet one more release with the lame output doesn't hurt.
>
> Reviewed-by: Eric Blake <address@hidden>

Thanks!



reply via email to

[Prev in Thread] Current Thread [Next in Thread]