From: Markus Armbruster <armbru@redhat.com>
To: Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp>
Cc: qemu-devel@nongnu.org, marcandre.lureau@redhat.com
Subject: Re: [PATCH 12/12] error: Kill @error_warn
Date: Sat, 09 Aug 2025 10:30:52 +0200 [thread overview]
Message-ID: <875xewucar.fsf@pond.sub.org> (raw)
In-Reply-To: <fcd5c891-b3c5-4b7d-a0ed-0e776d55ad5e@rsg.ci.i.u-tokyo.ac.jp> (Akihiko Odaki's message of "Sat, 9 Aug 2025 16:07:54 +0900")
Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp> writes:
> On 2025/08/08 17:08, Markus Armbruster wrote:
>> We added @error_warn some two years ago in commit 3ffef1a55ca (error:
>> add global &error_warn destination). It has multiple issues:
>>
>> * error.h's big comment was not updated for it.
>>
>> * Function contracts were not updated for it.
>>
>> * ERRP_GUARD() is unaware of @error_warn, and fails to mask it from
>> error_prepend() and such. These crash on @error_warn, as pointed
>> out by Akihiko Odaki.
>>
>> All fixable. However, after more than two years, we had just of 15
>> uses, of which the last few patches removed eight as unclean or
>> otherwise undesirable. I didn't look closely enough at the remaining
>> seven to decide whether they are desirable or not.
>>
>> I don't think this feature earns its keep. Drop it.
>
> I want to note that the following patch series temporarily use &error_warn during its conversion to add errp parameters:
> https://lore.kernel.org/qemu-devel/20250808-propagate_tpm_error-v10-0-3e81a1d419b2@redhat.com/
> ("[PATCH v10 00/27] migration: propagate vTPM errors using Error objects")
>
> I think this series needs to be rebased on top of the migration change.
Thanks for the heads-up.
> I'm not sure if seven uses are insufficient to keep it.
>
> I also have a general impression that perhaps a special error destination for error_report_err() is more useful. Today, there are many functions use Error, but there are also functions that still follow old error handling patterns. When legacy functions call functions with Error, a common pattern is to use error_report_err() and return -1.
You mean like &error_fatal less the exit(1)?
> "[PATCH 01/12] monitor: Clean up HMP gdbserver error reporting" and "[PATCH 09/12] ui/pixman: Consistent error handling in qemu_pixman_shareable_free()" are examples that will benefit from error_report_err() as an error destination. The migration patch series I mentioned earlier can also use one.
>
> Perhaps it is nicer if there is an infrastructure shared by the special destinations. In particular, we can have common solutions for the three problems you pointed out:
>
>> * error.h's big comment was not updated for it.
>>
>> * Function contracts were not updated for it.
>
> For these two problems, they can refer to "special error destinations" instead of listing them, and delegate explanations of them to corresponding ones.
>
>>
>> * ERRP_GUARD() is unaware of @error_warn, and fails to mask it from
>> error_prepend() and such. These crash on @error_warn, as pointed
>> out by Akihiko Odaki.
>
> For this problem, Error can tell that it is a special destination by leaving msg NULL, for example. ERRP_GUARD() then rewrites errp it is not &error_abort and msg is NULL.
As I wrote, the defects are all fixable. However, there has been so
little use of &error_warn, and so much of it has been unclean or
otherwise undesirable. It's obviously prone to misuse. I think we're
better off without it.
See also the memo "Abuse of warnings for unhandled errors and
programming errors" I posted yesterday.
> Special destinations can also have a function pointer void (*)(Error*), which will be called by error_handle(). This way, we can ensure that having a special destination will not require changes to the common code.
>
> By the way, I also asked for a comment with the migration patch series. Please reply the following if you have anything to say:
> https://lore.kernel.org/qemu-devel/9c552525-72fa-4d1e-89a2-b5c0e446935a@rsg.ci.i.u-tokyo.ac.jp/
>
> There is also an additional context:
> https://lore.kernel.org/qemu-devel/aJMsRBd9-XOMRG78@armenon-kvm.bengluru.csb/
I replied there.
I'll be on vacation the next two weeks.
next prev parent reply other threads:[~2025-08-09 8:31 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-08 8:08 [PATCH 00/12] Error reporting cleanup, a fix, and &error_warn removal Markus Armbruster
2025-08-08 8:08 ` [PATCH 01/12] monitor: Clean up HMP gdbserver error reporting Markus Armbruster
2025-08-19 10:53 ` Daniel P. Berrangé
2025-09-09 11:22 ` Markus Armbruster
2025-08-08 8:08 ` [PATCH 02/12] tcg: Fix error reporting on mprotect() failure in tcg_region_init() Markus Armbruster
2025-08-08 14:00 ` Philippe Mathieu-Daudé
2025-08-19 10:56 ` Daniel P. Berrangé
2025-08-19 10:56 ` Daniel P. Berrangé
2025-08-08 8:08 ` [PATCH 03/12] hw/cxl: Convert cxl_fmws_link() to Error Markus Armbruster
2025-08-08 10:44 ` Jonathan Cameron via
2025-08-08 11:13 ` Markus Armbruster
2025-09-17 10:46 ` Markus Armbruster
2025-08-11 10:36 ` Philippe Mathieu-Daudé
2025-08-08 8:08 ` [PATCH 04/12] migration/cpr: Clean up error reporting in cpr_resave_fd() Markus Armbruster
2025-08-08 12:38 ` Steven Sistare
2025-08-08 13:55 ` Philippe Mathieu-Daudé
2025-08-08 14:08 ` Steven Sistare
2025-08-08 14:43 ` Markus Armbruster
2025-08-08 14:48 ` Steven Sistare
2025-08-08 15:04 ` Markus Armbruster
2025-08-08 8:08 ` [PATCH 05/12] hw/remote/vfio-user: Clean up error reporting Markus Armbruster
2025-08-08 8:08 ` [PATCH 06/12] net/slirp: " Markus Armbruster
2025-08-08 8:18 ` Marc-André Lureau
2025-08-19 11:10 ` Daniel P. Berrangé
2025-09-09 11:40 ` Markus Armbruster
2025-09-12 10:09 ` Daniel P. Berrangé
2025-08-08 8:08 ` [PATCH 07/12] ui/spice-core: " Markus Armbruster
2025-08-08 8:22 ` Marc-André Lureau
2025-08-19 11:15 ` Daniel P. Berrangé
2025-09-09 11:41 ` Markus Armbruster
2025-09-12 10:10 ` Daniel P. Berrangé
2025-08-08 8:08 ` [PATCH 08/12] util/oslib-win32: Revert warning on WSAEventSelect() failure Markus Armbruster
2025-08-08 8:22 ` Marc-André Lureau
2025-08-08 9:32 ` Markus Armbruster
2025-08-19 11:24 ` Daniel P. Berrangé
2025-09-09 11:50 ` Markus Armbruster
2025-09-12 10:13 ` Daniel P. Berrangé
2025-08-08 8:08 ` [PATCH 09/12] ui/pixman: Consistent error handling in qemu_pixman_shareable_free() Markus Armbruster
2025-08-08 8:16 ` Marc-André Lureau
2025-08-08 8:08 ` [PATCH 10/12] ui/dbus: Clean up dbus_update_gl_cb() error checking Markus Armbruster
2025-08-08 8:14 ` Marc-André Lureau
2025-08-08 8:08 ` [PATCH 11/12] ui/dbus: Consistent handling of texture mutex failure Markus Armbruster
2025-08-08 8:15 ` Marc-André Lureau
2025-08-08 8:08 ` [PATCH 12/12] error: Kill @error_warn Markus Armbruster
2025-08-08 14:02 ` Philippe Mathieu-Daudé
2025-08-08 14:45 ` Markus Armbruster
2025-08-09 7:07 ` Akihiko Odaki
2025-08-09 8:30 ` Markus Armbruster [this message]
2025-08-09 10:27 ` Akihiko Odaki
2025-08-09 14:42 ` Markus Armbruster
2025-08-19 11:26 ` Daniel P. Berrangé
2025-09-16 11:27 ` Markus Armbruster
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=875xewucar.fsf@pond.sub.org \
--to=armbru@redhat.com \
--cc=marcandre.lureau@redhat.com \
--cc=odaki@rsg.ci.i.u-tokyo.ac.jp \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.