From: "Daniel P. Berrangé" <berrange@redhat.com>
To: Markus Armbruster <armbru@redhat.com>
Cc: qemu-devel@nongnu.org, odaki@rsg.ci.i.u-tokyo.ac.jp,
marcandre.lureau@redhat.com
Subject: Re: [PATCH 06/12] net/slirp: Clean up error reporting
Date: Fri, 12 Sep 2025 11:09:56 +0100 [thread overview]
Message-ID: <aMPxdD-HcLXR5qCn@redhat.com> (raw)
In-Reply-To: <87348vzwdw.fsf@pond.sub.org>
On Tue, Sep 09, 2025 at 01:40:59PM +0200, Markus Armbruster wrote:
> Daniel P. Berrangé <berrange@redhat.com> writes:
>
> > On Fri, Aug 08, 2025 at 10:08:17AM +0200, Markus Armbruster wrote:
> >> net_slirp_register_poll_sock() and net_slirp_unregister_poll_sock()
> >> report WSAEventSelect() failure with error_setg(&error_warn, ...).
> >>
> >> I'm not familiar with liblirp, so I can't say whether the network
> >
> > ^^^^^^^^^ 'libslirp'
>
> Will fix, thanks!
>
> >> backend will work after such a failure. If it doesn't, then this
> >> should be an error. If it does, then why bother the user with a
> >> warning that isn't actionable, and likely confusing?
> >>
> >> Regardless of that, error_setg_win32(&error_warn, ...) is undesirable
> >> just like error_setg(&error_fatal, ...) and error_setg(&error_abort,
> >> ...) are. Replace by warn_report().
> >>
> >> Cc: Marc-André Lureau <marcandre.lureau@redhat.com>
> >> Signed-off-by: Markus Armbruster <armbru@redhat.com>
> >> ---
> >> net/slirp.c | 6 ++++--
> >> 1 file changed, 4 insertions(+), 2 deletions(-)
> >
> > Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
> >
> >> diff --git a/net/slirp.c b/net/slirp.c
> >> index 9657e86a84..d75b09f16b 100644
> >> --- a/net/slirp.c
> >> +++ b/net/slirp.c
> >> @@ -262,7 +262,8 @@ static void net_slirp_register_poll_sock(slirp_os_socket fd, void *opaque)
> >> if (WSAEventSelect(fd, event_notifier_get_handle(&ctxt->notifier),
> >> FD_READ | FD_ACCEPT | FD_CLOSE |
> >> FD_CONNECT | FD_WRITE | FD_OOB) != 0) {
> >> - error_setg_win32(&error_warn, WSAGetLastError(), "failed to WSAEventSelect()");
> >> + warn_report("failed to WSAEventSelect(): %s",
> >> + g_win32_error_message(WSAGetLastError()));
> >> }
> >> #endif
> >
> > IMHO this one ought to be considered fatal. If we can't select the
> > right events on the socket, then we're not going to have a good time
> > trying to poll on events. The libslirp callback API doesn't allow
> > us to return a success/failure code from this function, and IMHO it
> > is not appropriate to use error_fatal here because a fault with slirp
> > should not take down the whole of QEMU. So warn_report is the least
> > worst option I guess. At least it is a hint to the user that all is
> > not well - even if they can't action it, it might alert them if they
> > see network problems in their guest.
>
> So, we'd make this an error if we could. But we can't: the function is
> a callback that cannot fail, and outright exit(1) is too harsh.
>
> That leaves silence or warning. Warning is less bad.
>
> Correct?
Yes.
> >> @@ -271,7 +272,8 @@ static void net_slirp_unregister_poll_sock(slirp_os_socket fd, void *opaque)
> >> {
> >> #ifdef WIN32
> >> if (WSAEventSelect(fd, NULL, 0) != 0) {
> >> - error_setg_win32(&error_warn, WSAGetLastError(), "failed to WSAEventSelect()");
> >> + warn_report("failed to WSAEventSelect()",
> >> + g_win32_error_message(WSAGetLastError()));
> >> }
> >
> > This one is reasonable to treat as non-fatal, since once we've
> > unregistered the socket for polling
>
> Whether clearing the event associated with the socket can fail is
> unclear. Whether it should be treated as an error is also unclear.
>
> If yes, then same argument as for net_slirp_register_poll_sock() above.
If the callback allowed returning an error, we probably would return
an error, but then I'm confident slirp would do nothing more than
print a warning and continue to close the file handle as normal. It
doesn't make sense to turn file descriptor cleanup into fatal error.
>
> If no, silence or warning. Warning is less bad.
>
> Correct?
Yes.
With regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
next prev parent reply other threads:[~2025-09-12 10:14 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é [this message]
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
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=aMPxdD-HcLXR5qCn@redhat.com \
--to=berrange@redhat.com \
--cc=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.